Index: examples/games/scummvm/nacl.patch |
diff --git a/examples/games/scummvm/nacl.patch b/examples/games/scummvm/nacl.patch |
index 797edbc758e0facc468dc7ba9846948e466f282a..6804186f93fe645549cfa6fb0af04e970f163c5b 100644 |
--- a/examples/games/scummvm/nacl.patch |
+++ b/examples/games/scummvm/nacl.patch |
@@ -1,531 +1,207 @@ |
-diff -Naur scummvm-1.2.1_orig/backends/midi/timidity.cpp scummvm-1.2.1/backends/midi/timidity.cpp |
---- scummvm-1.2.1_orig/backends/midi/timidity.cpp 2010-12-11 01:38:09.000000000 -0800 |
-+++ scummvm-1.2.1/backends/midi/timidity.cpp 2011-09-07 11:47:02.000000000 -0700 |
-@@ -34,8 +34,7 @@ |
+diff --git a/backends/platform/sdl/posix/posix-main.cpp b/backends/platform/sdl/posix/posix-main.cpp |
+index 5f0914e..4f11f2f 100644 |
+--- a/backends/platform/sdl/posix/posix-main.cpp |
++++ b/backends/platform/sdl/posix/posix-main.cpp |
+@@ -20,6 +20,13 @@ |
* |
*/ |
--#if defined (UNIX) |
-- |
-+#if defined (UNIX) && !defined(NACL) |
- #include "common/util.h" |
- #include "common/endian.h" |
- #include "common/str.h" |
-diff -Naur scummvm-1.2.1_orig/backends/platform/sdl/main.cpp scummvm-1.2.1/backends/platform/sdl/main.cpp |
---- scummvm-1.2.1_orig/backends/platform/sdl/main.cpp 2010-12-11 01:38:11.000000000 -0800 |
-+++ scummvm-1.2.1/backends/platform/sdl/main.cpp 2011-09-07 11:47:02.000000000 -0700 |
-@@ -52,16 +52,18 @@ |
- } |
- #endif |
- |
--int main(int argc, char *argv[]) { |
-- |
-+#if defined(NACL) |
-+extern "C" int scummvm_sdl_init(void) { |
- // Create our OSystem instance |
- g_system = new OSystem_SDL(); |
- assert(g_system); |
-+} |
-+#endif |
++#define FORBIDDEN_SYMBOL_EXCEPTION_printf |
++#define FORBIDDEN_SYMBOL_EXCEPTION_vprintf |
++#define FORBIDDEN_SYMBOL_EXCEPTION_vfprintf |
++#define FORBIDDEN_SYMBOL_EXCEPTION_mkdir |
++#define FORBIDDEN_SYMBOL_EXCEPTION_setenv |
++#define FORBIDDEN_SYMBOL_EXCEPTION_unistd_h |
++ |
+ #include "common/scummsys.h" |
-+extern "C" int scummvm_sdl_main(int argc, const char * const argv[]) { |
- #ifdef DYNAMIC_MODULES |
- PluginManager::instance().addPluginProvider(new SDLPluginProvider()); |
- #endif |
-- |
- // Invoke the actual ScummVM main entry point: |
- int res = scummvm_main(argc, argv); |
- ((OSystem_SDL *)g_system)->deinit(); |
-diff -Naur scummvm-1.2.1_orig/backends/platform/sdl/module.mk scummvm-1.2.1/backends/platform/sdl/module.mk |
---- scummvm-1.2.1_orig/backends/platform/sdl/module.mk 2010-12-11 01:38:11.000000000 -0800 |
-+++ scummvm-1.2.1/backends/platform/sdl/module.mk 2011-09-07 11:47:02.000000000 -0700 |
-@@ -5,6 +5,8 @@ |
- graphics.o \ |
- hardwarekeys.o \ |
- main.o \ |
-+ ppapi/scummvm_pepper_instance.o \ |
-+ ppapi/scummvm_pepper_module.o \ |
- sdl.o |
+ #if defined(POSIX) && !defined(MACOSX) && !defined(SAMSUNGTV) && !defined(MAEMO) && !defined(WEBOS) && !defined(LINUXMOTO) && !defined(GPH_DEVICE) && !defined(GP2X) && !defined(DINGUX) && !defined(OPENPANDORA) && !defined(PLAYSTATION3) |
+@@ -28,7 +35,88 @@ |
+ #include "backends/plugins/sdl/sdl-provider.h" |
+ #include "base/main.h" |
- # We don't use rules.mk but rather manually update OBJS and MODULE_DIRS. |
-diff -Naur scummvm-1.2.1_orig/backends/platform/sdl/ppapi/module.mk scummvm-1.2.1/backends/platform/sdl/ppapi/module.mk |
---- scummvm-1.2.1_orig/backends/platform/sdl/ppapi/module.mk 1969-12-31 16:00:00.000000000 -0800 |
-+++ scummvm-1.2.1/backends/platform/sdl/ppapi/module.mk 2011-09-07 11:47:02.000000000 -0700 |
-@@ -0,0 +1,8 @@ |
-+MODULE := scummvm_ppapi |
-+ |
-+MODULE_OBJS := \ |
-+ scummvm_pepper_instance.o \ |
-+ scummvm_pepper_module.o |
-+ |
-+# Include common rules |
-+include $(srcdir)/rules.mk |
-diff -Naur scummvm-1.2.1_orig/backends/platform/sdl/ppapi/scummvm_pepper_instance.cpp scummvm-1.2.1/backends/platform/sdl/ppapi/scummvm_pepper_instance.cpp |
---- scummvm-1.2.1_orig/backends/platform/sdl/ppapi/scummvm_pepper_instance.cpp 1969-12-31 16:00:00.000000000 -0800 |
-+++ scummvm-1.2.1/backends/platform/sdl/ppapi/scummvm_pepper_instance.cpp 2011-09-07 11:47:02.000000000 -0700 |
-@@ -0,0 +1,116 @@ |
-+/* |
-+ * Copyright (c) 2011 The Native Client Authors. All rights reserved. |
-+ * Use of this source code is governed by a BSD-style license that can be |
-+ * found in the LICENSE file. |
-+ */ |
-+#include "scummvm_pepper_instance.h" |
-+#include <assert.h> |
-+#include <vector> |
++#if defined(NACL) |
++#include <fcntl.h> |
++#include <libtar.h> |
++#include <stdlib.h> |
++#include <sys/mount.h> |
++#include <sys/stat.h> |
+#include <unistd.h> |
-+#include <SDL.h> |
-+#include <SDL_nacl.h> |
-+#include <SDL_video.h> |
-+#include "nacl-mounts/base/UrlLoaderJob.h" |
-+#include "nacl-mounts/AppEngine/AppEngineMount.h" |
-+ |
-+extern "C" int mount(const char *source, const char *target, const char *filesystemtype, unsigned long mountflags, const void *data); |
-+extern "C" int scummvm_sdl_init(void); |
-+extern "C" int scummvm_sdl_main(int argc,const char * const argv[]); |
-+extern "C" int simple_tar_extract(const char *path); |
-+ |
-+static void *scummvm_init(void *arg) { |
-+ MainThreadRunner *runner = reinterpret_cast<MainThreadRunner*>(arg); |
++#include <SDL/SDL_main.h> |
+ |
-+ UrlLoaderJob *job = new UrlLoaderJob; |
-+ job->set_url("/static/runimage.tar"); |
-+ std::vector<char> data; |
-+ job->set_dst(&data); |
-+ runner->RunJob(job); |
-+ int fh = open("/runimage.tar", O_CREAT | O_WRONLY); |
-+ write(fh, &data[0], data.size()); |
-+ close(fh); |
-+ |
-+ simple_tar_extract("runimage.tar"); |
-+ |
-+ UrlLoaderJob *job2 = new UrlLoaderJob; |
-+ job2->set_url("/static/bass.tar"); |
-+ std::vector<char> data2; |
-+ job2->set_dst(&data2); |
-+ runner->RunJob(job2); |
-+ int fh2 = open("/bass.tar", O_CREAT | O_WRONLY); |
-+ write(fh2, &data2[0], data2.size()); |
-+ close(fh2); |
-+ |
-+ simple_tar_extract("bass.tar"); |
-+ |
-+ UrlLoaderJob *job3 = new UrlLoaderJob; |
-+ job3->set_url("/static/lure.tar"); |
-+ std::vector<char> data3; |
-+ job3->set_dst(&data3); |
-+ runner->RunJob(job3); |
-+ int fh3 = open("/lure.tar", O_CREAT | O_WRONLY); |
-+ write(fh3, &data3[0], data3.size()); |
-+ close(fh3); |
-+ |
-+ simple_tar_extract("lure.tar"); |
-+ |
-+ int ret; |
-+ mkdir("/usr", 0777); |
-+ mkdir("/usr/local", 0777); |
-+ mkdir("/usr/local/save", 0777); |
-+ mkdir("/usr/local/save/AppEngine", 0777); |
-+ |
-+ AppEngineMount *aem = new AppEngineMount(runner, "/_file"); |
-+ ret = mount(0, "/usr/local/save/AppEngine", 0, 0, aem); |
-+ assert(ret == 0); |
-+ |
-+ ret = chdir("/usr/local/save/AppEngine"); |
-+ assert(ret == 0); |
-+ |
-+ static char const * argv[] = {"scummvm", NULL}; |
-+ scummvm_sdl_init(); |
-+ scummvm_sdl_main(1, (const char**)argv); |
++#include "nacl_io/nacl_io.h" |
++#endif |
+ |
-+ return 0; |
-+} |
++#if defined(NACL) |
+ |
-+ScummvmPepperInstance::ScummvmPepperInstance(PP_Instance instance) |
-+ : pp::Instance(instance), |
-+ quit_(false), |
-+ width_(0), |
-+ height_(0), |
-+ runner_(NULL) { |
-+ RequestInputEvents(PP_INPUTEVENT_CLASS_MOUSE); |
-+ RequestFilteringInputEvents(PP_INPUTEVENT_CLASS_KEYBOARD); |
-+} |
++#define CHECK(x) ret = x; assert(ret == 0) |
+ |
-+bool ScummvmPepperInstance::Init(uint32_t argc, const char* argn[], const char* argv[]) { |
-+ return true; |
++void ExtractAll(const char* data_file) { |
++ printf("Extracting: %s ...\n", data_file); |
++ TAR* tar; |
++ int ret; |
++ CHECK(tar_open(&tar, (char*)data_file, NULL, O_RDONLY, 0, 0)); |
++ CHECK(tar_extract_all(tar, "/")); |
++ CHECK(tar_close(tar)); |
+} |
+ |
-+void ScummvmPepperInstance::DidChangeView(const pp::Rect& position, const pp::Rect& clip) { |
-+ if (width_ && height_) |
-+ return; |
-+ |
-+ if (position.size().width() == width_ && |
-+ position.size().height() == height_) |
-+ return; // Size didn't change, no need to update anything. |
-+ |
-+ width_ = position.size().width(); |
-+ height_ = position.size().height(); |
-+ |
-+ SDL_NACL_SetInstance(pp_instance(), width_, height_); |
-+ |
-+ int lval = SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO); |
-+ |
-+ assert(lval >= 0); |
-+ |
-+ runner_ = new MainThreadRunner(this); |
-+ pthread_create(&scummvm_thread_, NULL, scummvm_init, runner_); |
++void CopyFile(const char* src, const char* dst) { |
++ const size_t kBufferSize = 1024; |
++ char buffer[kBufferSize]; |
++ |
++ int src_fd = open(src, O_RDONLY); |
++ assert(src_fd != -1); |
++ int dst_fd = open(dst, O_WRONLY | O_CREAT); |
++ assert(dst_fd != -1); |
++ |
++ int bytes_read; |
++ int write_offset; |
++ do { |
++ bytes_read = read(src_fd, &buffer[0], kBufferSize); |
++ assert(bytes_read >= 0); |
++ int bytes_to_write = bytes_read; |
++ |
++ write_offset = 0; |
++ while (bytes_to_write > 0) { |
++ int bytes_written = write(dst_fd, &buffer[write_offset], bytes_to_write); |
++ assert(bytes_written >= 0); |
++ bytes_to_write -= bytes_written; |
++ write_offset += bytes_written; |
++ } |
++ } while(bytes_read > 0); |
++ |
++ close(src_fd); |
++ close(dst_fd); |
+} |
+ |
-+bool ScummvmPepperInstance::HandleInputEvent(const pp::InputEvent& event) { |
-+ SDL_NACL_PushEvent(event); |
-+ return true; |
++bool FileExists(const char* path) { |
++ struct stat buf; |
++ return stat(path, &buf) == 0; |
+} |
+ |
-diff -Naur scummvm-1.2.1_orig/backends/platform/sdl/ppapi/scummvm_pepper_instance.h scummvm-1.2.1/backends/platform/sdl/ppapi/scummvm_pepper_instance.h |
---- scummvm-1.2.1_orig/backends/platform/sdl/ppapi/scummvm_pepper_instance.h 1969-12-31 16:00:00.000000000 -0800 |
-+++ scummvm-1.2.1/backends/platform/sdl/ppapi/scummvm_pepper_instance.h 2011-09-07 11:47:02.000000000 -0700 |
-@@ -0,0 +1,39 @@ |
-+/* |
-+ * Copyright (c) 2011 The Native Client Authors. All rights reserved. |
-+ * Use of this source code is governed by a BSD-style license that can be |
-+ * found in the LICENSE file. |
-+ */ |
-+#ifndef EXAMPLES_SCUMMVM_PEPPER_H_ |
-+#define EXAMPLES_SCUMMVM_PEPPER_H_ |
-+ |
-+#include <pthread.h> |
-+#include <ppapi/cpp/input_event.h> |
-+#include <ppapi/cpp/instance.h> |
-+#include <ppapi/cpp/rect.h> |
-+#include "nacl-mounts/base/MainThreadRunner.h" |
-+ |
-+class ScummvmPepperInstance : public pp::Instance { |
-+ public: |
-+ explicit ScummvmPepperInstance(PP_Instance instance); |
-+ |
-+ virtual ~ScummvmPepperInstance() { |
-+ if (runner_) delete runner_; |
-+ } |
-+ |
-+ virtual bool Init(uint32_t argc, const char* argn[], const char* argv[]); |
-+ |
-+ void DidChangeView(const pp::Rect& position, const pp::Rect& clip); |
-+ |
-+ bool HandleInputEvent(const pp::InputEvent& event); |
-+ |
-+ bool quit() const { return quit_; } |
-+ |
-+ private: |
-+ pthread_t scummvm_thread_; |
-+ MainThreadRunner *runner_; |
-+ int width_; |
-+ int height_; |
-+ bool quit_; |
-+}; |
-+ |
-+#endif // EXAMPLES_SCUMMVM_PEPPER_H_ |
-diff -Naur scummvm-1.2.1_orig/backends/platform/sdl/ppapi/scummvm_pepper_module.cpp scummvm-1.2.1/backends/platform/sdl/ppapi/scummvm_pepper_module.cpp |
---- scummvm-1.2.1_orig/backends/platform/sdl/ppapi/scummvm_pepper_module.cpp 1969-12-31 16:00:00.000000000 -0800 |
-+++ scummvm-1.2.1/backends/platform/sdl/ppapi/scummvm_pepper_module.cpp 2011-09-07 11:47:02.000000000 -0700 |
-@@ -0,0 +1,33 @@ |
-+// Copyright 2011 The Native Client SDK Authors. All rights reserved. |
-+// Use of this source code is governed by a BSD-style license that can |
-+// be found in the LICENSE file. |
-+ |
-+#include <ppapi/cpp/module.h> |
-+#include <stdio.h> |
-+#include "scummvm_pepper_instance.h" |
-+ |
-+namespace scummvm_pepper { |
-+ // The Module class. The browser calls the CreateInstance() method to create |
-+ // an instance of you NaCl module on the web page. The browser creates a new |
-+ // instance for each <embed> tag with type="application/x-ppapi-nacl-srpc". |
-+ class ScummvmPepperModule : public pp::Module { |
-+ public: |
-+ ScummvmPepperModule() : pp::Module() {} |
-+ virtual ~ScummvmPepperModule() {} |
-+ |
-+ virtual pp::Instance* CreateInstance(PP_Instance instance) { |
-+ return new ScummvmPepperInstance(instance); |
-+ } |
-+ }; |
-+} // namespace scummvm_pepper |
-+ |
-+// Factory function called by the browser when the module is first loaded. |
-+// The browser keeps a singleton of this module. It calls the |
-+// CreateInstance() method on the object you return to make instances. There |
-+// is one instance per <embed> tag on the page. This is the main binding |
-+// point for your NaCl module with the browser. |
-+namespace pp { |
-+ Module* CreateModule() { |
-+ return new scummvm_pepper::ScummvmPepperModule(); |
-+ } |
-+} // namespace pp |
-diff -Naur scummvm-1.2.1_orig/backends/platform/sdl/sdl.cpp scummvm-1.2.1/backends/platform/sdl/sdl.cpp |
---- scummvm-1.2.1_orig/backends/platform/sdl/sdl.cpp 2010-12-11 01:38:11.000000000 -0800 |
-+++ scummvm-1.2.1/backends/platform/sdl/sdl.cpp 2011-09-07 11:47:02.000000000 -0700 |
-@@ -97,6 +97,8 @@ |
- |
- #if !defined(_WIN32_WCE) && !defined(__SYMBIAN32__) && defined(USE_SCALERS) |
- static AspectRatio getDesiredAspectRatio() { |
-+ return AspectRatio(1, 1); |
-+#if !defined(NACL) |
- const size_t AR_COUNT = 4; |
- const char* desiredAspectRatioAsStrings[AR_COUNT] = { "auto", "4/3", "16/9", "16/10" }; |
- const AspectRatio desiredAspectRatios[AR_COUNT] = { AspectRatio(0, 0), AspectRatio(4,3), AspectRatio(16,9), AspectRatio(16,10) }; |
-@@ -113,6 +115,7 @@ |
- } |
- // TODO : Report a warning |
- return AspectRatio(0, 0); |
++int SDL_main(int argc, char *argv[]) { |
Sam Clegg
2013/10/25 02:08:24
You don't need to call it SDL_main if you include
|
++ int ret; |
++ CHECK(umount("/")); |
++ CHECK(mount("", "/", "memfs", 0, NULL)); |
++ CHECK(mount("./", "/mnt/http", "httpfs", 0, NULL)); |
++ |
++ ExtractAll("/mnt/http/runimage.tar"); |
++ ExtractAll("/mnt/http/bass.tar"); |
++ ExtractAll("/mnt/http/lure.tar"); |
++ |
++ CHECK(mkdir("/home", 0777)); |
++ CHECK(mount("", "/home", "html5fs", 0, "type=PERSISTENT")); |
++ CHECK(setenv("HOME", "/home", 1)); |
++ |
++ const char kConfigFile[] = "/home/.scummvmrc"; |
++ if (!FileExists(kConfigFile)) { |
++ // Initialize with a default .scummvmrm that already has the |
++ // games loaded. |
++ CopyFile("/mnt/http/scummvmrc", kConfigFile); |
++ } |
++#else |
+ int main(int argc, char *argv[]) { |
+#endif |
+ |
+ // Create our OSystem instance |
+ g_system = new OSystem_POSIX(); |
+diff --git a/backends/platform/sdl/posix/posix.cpp b/backends/platform/sdl/posix/posix.cpp |
+index 7a8b1e7..6a9b94f 100644 |
+--- a/backends/platform/sdl/posix/posix.cpp |
++++ b/backends/platform/sdl/posix/posix.cpp |
+@@ -160,6 +160,9 @@ Common::WriteStream *OSystem_POSIX::createLogFile() { |
} |
- #endif |
-@@ -135,9 +138,11 @@ |
- if (joystick_num > -1) |
- sdlFlags |= SDL_INIT_JOYSTICK; |
+ bool OSystem_POSIX::displayLogFile() { |
++#ifdef NACL |
++ return false; |
++#else |
+ if (_logFilePath.empty()) |
+ return false; |
-+#if !defined(NACL) |
- if (SDL_Init(sdlFlags) == -1) { |
- error("Could not initialize SDL: %s", SDL_GetError()); |
+@@ -208,6 +211,7 @@ bool OSystem_POSIX::displayLogFile() { |
} |
-+#endif |
- _graphicsMutex = createMutex(); |
- |
-@@ -407,7 +412,8 @@ |
- // from the Springboard, is /. Which we don't want. |
- const char *home = getenv("HOME"); |
- if (home != NULL && strlen(home) < MAXPATHLEN) |
-- snprintf(configFile, MAXPATHLEN, "%s/%s", home, DEFAULT_CONFIG_FILE); |
-+ //snprintf(configFile, MAXPATHLEN, "%s/%s", home, DEFAULT_CONFIG_FILE); |
-+ sprintf(configFile, "%s/%s", home, DEFAULT_CONFIG_FILE); |
- else |
- strcpy(configFile, DEFAULT_CONFIG_FILE); |
- #else |
-diff -Naur scummvm-1.2.1_orig/base/commandLine.cpp scummvm-1.2.1/base/commandLine.cpp |
---- scummvm-1.2.1_orig/base/commandLine.cpp 2010-12-11 01:38:08.000000000 -0800 |
-+++ scummvm-1.2.1/base/commandLine.cpp 2011-09-07 11:47:02.000000000 -0700 |
-@@ -140,7 +140,8 @@ |
- va_list va; |
- |
- va_start(va, s); |
-- vsnprintf(buf, STRINGBUFLEN, s, va); |
-+ //vsnprintf(buf, STRINGBUFLEN, s, va); |
-+ vsprintf(buf, s, va); |
- va_end(va); |
+ return WIFEXITED(status) && WEXITSTATUS(status) == 0; |
++#endif |
+ } |
- #if !(defined(__GP32__) || defined (__SYMBIAN32__) || defined(__DS__)) |
-diff -Naur scummvm-1.2.1_orig/base/plugins.cpp scummvm-1.2.1/base/plugins.cpp |
---- scummvm-1.2.1_orig/base/plugins.cpp 2010-12-11 01:38:08.000000000 -0800 |
-+++ scummvm-1.2.1/base/plugins.cpp 2011-09-07 11:47:02.000000000 -0700 |
-@@ -212,7 +212,7 @@ |
- LINK_PLUGIN(AMIGA) |
- LINK_PLUGIN(APPLEIIGS) |
- LINK_PLUGIN(TOWNS) |
-- #if defined (UNIX) |
-+ #if defined (UNIX) && !defined(NACL) |
- LINK_PLUGIN(TIMIDITY) |
- #endif |
-diff -Naur scummvm-1.2.1_orig/config.log scummvm-1.2.1/config.log |
---- scummvm-1.2.1_orig/config.log 1969-12-31 16:00:00.000000000 -0800 |
-+++ scummvm-1.2.1/config.log 2011-09-07 11:47:02.000000000 -0700 |
-@@ -0,0 +1 @@ |
-+Configure run on Thu Aug 18 14:57:56 PDT 2011 |
-diff -Naur scummvm-1.2.1_orig/configure scummvm-1.2.1/configure |
---- scummvm-1.2.1_orig/configure 2010-12-11 01:38:39.000000000 -0800 |
-+++ scummvm-1.2.1/configure 2011-09-07 11:47:02.000000000 -0700 |
-@@ -1091,6 +1091,11 @@ |
- _host_cpu=arm |
- _host_alias=arm-wince-mingw32ce |
+diff --git a/configure b/configure |
+index 5016a86..96571c1 100755 |
+--- a/configure |
++++ b/configure |
+@@ -1338,6 +1338,16 @@ n64) |
+ _host_cpu=mips |
+ _host_alias=mips64 |
;; |
-+nacl) |
++nacl-x86) |
+ _host_os=nacl |
+ _host_cpu=x86 |
+ _host_alias=${NACL_CROSS_PREFIX} |
+ ;; |
- *) |
- if test -n "$_host"; then |
- guessed_host=`$_srcdir/config.sub $_host` |
-diff -Naur scummvm-1.2.1_orig/engines/scumm/detection.cpp scummvm-1.2.1/engines/scumm/detection.cpp |
---- scummvm-1.2.1_orig/engines/scumm/detection.cpp 2010-12-11 01:37:23.000000000 -0800 |
-+++ scummvm-1.2.1/engines/scumm/detection.cpp 2011-09-07 11:47:02.000000000 -0700 |
-@@ -23,6 +23,11 @@ |
- * |
- */ |
- |
-+ |
-+#define snprintf4(a,b,c,d) sprintf(a,c,d) |
-+#define snprintf5(a,b,c,d,e) sprintf(a,c,d,e) |
-+#define snprintf6(a,b,c,d,e,f) sprintf(a,c,d,e,f) |
-+ |
- #include "base/plugins.h" |
- |
- #include "common/archive.h" |
-@@ -72,20 +77,20 @@ |
- |
- if (_game.version == 4) { |
- if (room == 0 || room >= 900) { |
-- snprintf(buf, sizeof(buf), "%03d.lfl", room); |
-+ snprintf4(buf, sizeof(buf), "%03d.lfl", room); |
- } else { |
-- snprintf(buf, sizeof(buf), "disk%02d.lec", diskNumber); |
-+ snprintf4(buf, sizeof(buf), "disk%02d.lec", diskNumber); |
- } |
- } else { |
- char id = 0; |
- |
- switch (_filenamePattern.genMethod) { |
- case kGenDiskNum: |
-- snprintf(buf, sizeof(buf), _filenamePattern.pattern, diskNumber); |
-+ snprintf4(buf, sizeof(buf), _filenamePattern.pattern, diskNumber); |
- break; |
- |
- case kGenRoomNum: |
-- snprintf(buf, sizeof(buf), _filenamePattern.pattern, room); |
-+ snprintf4(buf, sizeof(buf), _filenamePattern.pattern, room); |
- break; |
- |
- case kGenHEMac: |
-@@ -107,15 +112,15 @@ |
- else if (_game.id == GID_TREASUREHUNT) |
- strcpy(buf, "Blue'sTreasureHunt.(b)"); |
- else |
-- snprintf(buf, sizeof(buf), "%s.(b)", _filenamePattern.pattern); |
-+ snprintf4(buf, sizeof(buf), "%s.(b)", _filenamePattern.pattern); |
- break; |
- case 1: |
- id = 'a'; |
-- snprintf(buf, sizeof(buf), "%s.(a)", _filenamePattern.pattern); |
-+ snprintf4(buf, sizeof(buf), "%s.(a)", _filenamePattern.pattern); |
- break; |
- default: |
- id = '0'; |
-- snprintf(buf, sizeof(buf), "%s.he0", _filenamePattern.pattern); |
-+ snprintf4(buf, sizeof(buf), "%s.he0", _filenamePattern.pattern); |
- } |
- } else if (_game.heversion >= 70) { |
- id = (room == 0) ? '0' : '1'; |
-@@ -126,16 +131,16 @@ |
- if (_filenamePattern.genMethod == kGenHEPC) { |
- // For HE >= 98, we already called snprintf above. |
- if (_game.heversion < 98 || room < 0) |
-- snprintf(buf, sizeof(buf), "%s.he%c", _filenamePattern.pattern, id); |
-+ snprintf5(buf, sizeof(buf), "%s.he%c", _filenamePattern.pattern, id); |
- } else { |
- if (id == '3') { // special case for cursors |
- // For mac they're stored in game binary |
- strncpy(buf, _filenamePattern.pattern, sizeof(buf)); |
- } else { |
- if (_filenamePattern.genMethod == kGenHEMac) |
-- snprintf(buf, sizeof(buf), "%s (%c)", _filenamePattern.pattern, id); |
-+ snprintf5(buf, sizeof(buf), "%s (%c)", _filenamePattern.pattern, id); |
- else |
-- snprintf(buf, sizeof(buf), "%s %c", _filenamePattern.pattern, id); |
-+ snprintf5(buf, sizeof(buf), "%s %c", _filenamePattern.pattern, id); |
- } |
- } |
- |
-@@ -159,19 +164,19 @@ |
- switch (genMethod) { |
- case kGenDiskNum: |
- case kGenRoomNum: |
-- snprintf(buf, sizeof(buf), pattern, 0); |
-+ snprintf4(buf, sizeof(buf), pattern, 0); |
- break; |
- |
- case kGenHEPC: |
-- snprintf(buf, sizeof(buf), "%s.he0", pattern); |
-+ snprintf4(buf, sizeof(buf), "%s.he0", pattern); |
- break; |
- |
- case kGenHEMac: |
-- snprintf(buf, sizeof(buf), "%s (0)", pattern); |
-+ snprintf4(buf, sizeof(buf), "%s (0)", pattern); |
- break; |
- |
- case kGenHEMacNoParens: |
-- snprintf(buf, sizeof(buf), "%s 0", pattern); |
-+ snprintf4(buf, sizeof(buf), "%s 0", pattern); |
- break; |
- |
- case kGenUnchanged: |
-diff -Naur scummvm-1.2.1_orig/engines/sky/control.cpp scummvm-1.2.1/engines/sky/control.cpp |
---- scummvm-1.2.1_orig/engines/sky/control.cpp 2010-12-11 01:37:35.000000000 -0800 |
-+++ scummvm-1.2.1/engines/sky/control.cpp 2011-09-07 11:47:02.000000000 -0700 |
-@@ -1031,7 +1031,7 @@ |
- savenames.resize(MAX_SAVE_GAMES); |
- |
- Common::InSaveFile *inf; |
-- inf = _saveFileMan->openForLoading("SKY-VM.SAV"); |
-+ inf = _saveFileMan->openForLoading(SKY_VM_SAVE_PATH); |
- if (inf != NULL) { |
- char *tmpBuf = new char[MAX_SAVE_GAMES * MAX_TEXT_LEN]; |
- char *tmpPtr = tmpBuf; |
-@@ -1075,7 +1075,7 @@ |
- void Control::saveDescriptions(const Common::StringArray &list) { |
- Common::OutSaveFile *outf; |
- |
-- outf = _saveFileMan->openForSaving("SKY-VM.SAV"); |
-+ outf = _saveFileMan->openForSaving(SKY_VM_SAVE_PATH); |
- bool ioFailed = true; |
- if (outf) { |
- for (uint16 cnt = 0; cnt < MAX_SAVE_GAMES; cnt++) { |
-diff -Naur scummvm-1.2.1_orig/engines/sky/control.h scummvm-1.2.1/engines/sky/control.h |
---- scummvm-1.2.1_orig/engines/sky/control.h 2010-12-11 01:37:35.000000000 -0800 |
-+++ scummvm-1.2.1/engines/sky/control.h 2011-09-07 11:47:02.000000000 -0700 |
-@@ -137,6 +137,8 @@ |
- #define SAVE_FILE_REVISION 6 |
- #define OLD_SAVEGAME_TYPE 5 |
- |
-+#define SKY_VM_SAVE_PATH "SKY-VM.SAV" |
-+ |
- struct AllocedMem { |
- uint16 *mem; |
- AllocedMem *next; |
-diff -Naur scummvm-1.2.1_orig/engines/sky/detection.cpp scummvm-1.2.1/engines/sky/detection.cpp |
---- scummvm-1.2.1_orig/engines/sky/detection.cpp 2010-12-11 01:37:35.000000000 -0800 |
-+++ scummvm-1.2.1/engines/sky/detection.cpp 2011-09-07 11:47:02.000000000 -0700 |
-@@ -37,6 +37,8 @@ |
- |
- #include "engines/metaengine.h" |
- |
-+#include "control.h" |
-+ |
- static const PlainGameDescriptor skySetting = |
- {"sky", "Beneath a Steel Sky" }; |
- |
-@@ -182,7 +184,7 @@ |
- savenames.resize(MAX_SAVE_GAMES+1); |
- |
- Common::InSaveFile *inf; |
-- inf = saveFileMan->openForLoading("SKY-VM.SAV"); |
-+ inf = saveFileMan->openForLoading(SKY_VM_SAVE_PATH); |
- if (inf != NULL) { |
- char *tmpBuf = new char[MAX_SAVE_GAMES * MAX_TEXT_LEN]; |
- char *tmpPtr = tmpBuf; |
-@@ -238,7 +240,7 @@ |
- Common::StringArray savenames; |
- savenames.resize(MAX_SAVE_GAMES+1); |
- Common::InSaveFile *inf; |
-- inf = saveFileMan->openForLoading("SKY-VM.SAV"); |
-+ inf = saveFileMan->openForLoading(SKY_VM_SAVE_PATH); |
- if (inf != NULL) { |
- char *tmpBuf = new char[MAX_SAVE_GAMES * MAX_TEXT_LEN]; |
- char *tmpPtr = tmpBuf; |
-@@ -257,7 +259,7 @@ |
- // Save the updated descriptions |
- Common::OutSaveFile *outf; |
- |
-- outf = saveFileMan->openForSaving("SKY-VM.SAV"); |
-+ outf = saveFileMan->openForSaving(SKY_VM_SAVE_PATH); |
- bool ioFailed = true; |
- if (outf) { |
- for (uint16 cnt = 0; cnt < MAX_SAVE_GAMES; cnt++) { |
-diff -Naur scummvm-1.2.1_orig/graphics/scaler/scale2x.cpp scummvm-1.2.1/graphics/scaler/scale2x.cpp |
---- scummvm-1.2.1_orig/graphics/scaler/scale2x.cpp 2010-12-11 01:38:07.000000000 -0800 |
-+++ scummvm-1.2.1/graphics/scaler/scale2x.cpp 2011-09-07 12:14:13.000000000 -0700 |
-@@ -211,9 +211,15 @@ |
++nacl-arm) |
++ _host_os=nacl |
++ _host_cpu=arm |
++ _host_alias=${NACL_CROSS_PREFIX} |
++ ;; |
+ neuros) |
+ _host_os=linux |
+ _host_cpu=arm |
+@@ -1347,6 +1357,11 @@ openpandora) |
+ _host_cpu=arm |
+ _host_alias=arm-angstrom-linux-gnueabi |
+ ;; |
++pnacl) |
++ _host_os=pnacl |
++ _host_cpu=le32 |
++ _host_alias=${NACL_CROSS_PREFIX} |
++ ;; |
+ ppc-amigaos) |
+ _host_os=amigaos |
+ _host_cpu=ppc |
+@@ -1731,7 +1746,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 | bada | dreamcast | ds | gamecube | mingw* | n64 | psp | ps2 | ps3 | wii | wince ) |
++ amigaos* | android | bada | dreamcast | ds | gamecube | mingw* | n64 | psp | ps2 | ps3 | wii | wince | *nacl* ) |
+ ;; |
+ *) |
+ CXXFLAGS="$CXXFLAGS -ansi" |
+@@ -1808,6 +1823,8 @@ if strings $TMPO.o | grep BIGenDianSyS >/dev/null; then |
+ _endian=big |
+ elif strings $TMPO.o | grep LiTTleEnDian >/dev/null; then |
+ _endian=little |
++elif [ "$_host_cpu" = "le32" ]; then |
++ _endian=little |
+ fi |
+ echo $_endian; |
+ cc_check_clean tmp_endianness_check.cpp |
+@@ -1991,6 +2008,9 @@ case $_host_cpu in |
+ amd64 | x86_64) |
+ echo "x86_64" |
+ ;; |
++ le32) |
++ echo "Generic le32" |
++ ;; |
+ *) |
+ echo "unknown ($_host_cpu)" |
+ ;; |
+@@ -2915,7 +2935,7 @@ case $_host_os in |
+ 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* | maemo | mint* | netbsd* | openbsd* | solaris* | sunos* | uclinux* | webos) |
++ android | beos* | bsd* | darwin* | freebsd* | gph-linux | haiku* | hpux* | iphone | irix* | linux* | maemo | mint* | netbsd* | openbsd* | solaris* | sunos* | uclinux* | webos | *nacl) |
+ _posix=yes |
+ ;; |
+ os2-emx*) |
+diff --git a/graphics/scaler/scale2x.cpp b/graphics/scaler/scale2x.cpp |
+index ac2dbad..0fc0603 100644 |
+--- a/graphics/scaler/scale2x.cpp |
++++ b/graphics/scaler/scale2x.cpp |
+@@ -201,9 +201,15 @@ static inline void scale2x_8_mmx_single(scale2x_uint8* dst, const scale2x_uint8* |
"0:\n" |
/* set the current, current_pre, current_next registers */ |
@@ -541,7 +217,7 @@ diff -Naur scummvm-1.2.1_orig/graphics/scaler/scale2x.cpp scummvm-1.2.1/graphics |
"psrlq $56, %%mm0\n" |
"psllq $56, %%mm1\n" |
"movq %%mm7, %%mm2\n" |
-@@ -224,7 +230,11 @@ |
+@@ -214,7 +220,11 @@ static inline void scale2x_8_mmx_single(scale2x_uint8* dst, const scale2x_uint8* |
"por %%mm3, %%mm1\n" |
/* current_upper */ |
@@ -553,7 +229,7 @@ diff -Naur scummvm-1.2.1_orig/graphics/scaler/scale2x.cpp scummvm-1.2.1/graphics |
/* compute the upper-left pixel for dst on %%mm2 */ |
/* compute the upper-right pixel for dst on %%mm4 */ |
-@@ -234,8 +244,13 @@ |
+@@ -224,8 +234,13 @@ static inline void scale2x_8_mmx_single(scale2x_uint8* dst, const scale2x_uint8* |
"movq %%mm1, %%mm5\n" |
"pcmpeqb %%mm6, %%mm2\n" |
"pcmpeqb %%mm6, %%mm4\n" |
@@ -567,7 +243,7 @@ diff -Naur scummvm-1.2.1_orig/graphics/scaler/scale2x.cpp scummvm-1.2.1/graphics |
"pandn %%mm2, %%mm3\n" |
"pandn %%mm4, %%mm5\n" |
"movq %%mm0, %%mm2\n" |
-@@ -257,8 +272,13 @@ |
+@@ -247,8 +262,13 @@ static inline void scale2x_8_mmx_single(scale2x_uint8* dst, const scale2x_uint8* |
"movq %%mm2, %%mm3\n" |
"punpcklbw %%mm4, %%mm2\n" |
"punpckhbw %%mm4, %%mm3\n" |
@@ -581,7 +257,7 @@ diff -Naur scummvm-1.2.1_orig/graphics/scaler/scale2x.cpp scummvm-1.2.1/graphics |
/* next */ |
"add $8, %0\n" |
-@@ -289,9 +309,15 @@ |
+@@ -278,9 +298,15 @@ static inline void scale2x_16_mmx_single(scale2x_uint16* dst, const scale2x_uint |
"0:\n" |
/* set the current, current_pre, current_next registers */ |
@@ -597,7 +273,7 @@ diff -Naur scummvm-1.2.1_orig/graphics/scaler/scale2x.cpp scummvm-1.2.1/graphics |
"psrlq $48, %%mm0\n" |
"psllq $48, %%mm1\n" |
"movq %%mm7, %%mm2\n" |
-@@ -302,7 +328,11 @@ |
+@@ -291,7 +317,11 @@ static inline void scale2x_16_mmx_single(scale2x_uint16* dst, const scale2x_uint |
"por %%mm3, %%mm1\n" |
/* current_upper */ |
@@ -609,7 +285,7 @@ diff -Naur scummvm-1.2.1_orig/graphics/scaler/scale2x.cpp scummvm-1.2.1/graphics |
/* compute the upper-left pixel for dst on %%mm2 */ |
/* compute the upper-right pixel for dst on %%mm4 */ |
-@@ -312,8 +342,13 @@ |
+@@ -301,8 +331,13 @@ static inline void scale2x_16_mmx_single(scale2x_uint16* dst, const scale2x_uint |
"movq %%mm1, %%mm5\n" |
"pcmpeqw %%mm6, %%mm2\n" |
"pcmpeqw %%mm6, %%mm4\n" |
@@ -623,7 +299,7 @@ diff -Naur scummvm-1.2.1_orig/graphics/scaler/scale2x.cpp scummvm-1.2.1/graphics |
"pandn %%mm2, %%mm3\n" |
"pandn %%mm4, %%mm5\n" |
"movq %%mm0, %%mm2\n" |
-@@ -335,8 +370,13 @@ |
+@@ -324,8 +359,13 @@ static inline void scale2x_16_mmx_single(scale2x_uint16* dst, const scale2x_uint |
"movq %%mm2, %%mm3\n" |
"punpcklwd %%mm4, %%mm2\n" |
"punpckhwd %%mm4, %%mm3\n" |
@@ -637,7 +313,7 @@ diff -Naur scummvm-1.2.1_orig/graphics/scaler/scale2x.cpp scummvm-1.2.1/graphics |
/* next */ |
"add $8, %0\n" |
-@@ -367,9 +407,15 @@ |
+@@ -355,9 +395,15 @@ static inline void scale2x_32_mmx_single(scale2x_uint32* dst, const scale2x_uint |
"0:\n" |
/* set the current, current_pre, current_next registers */ |
@@ -653,7 +329,7 @@ diff -Naur scummvm-1.2.1_orig/graphics/scaler/scale2x.cpp scummvm-1.2.1/graphics |
"psrlq $32, %%mm0\n" |
"psllq $32, %%mm1\n" |
"movq %%mm7, %%mm2\n" |
-@@ -380,7 +426,11 @@ |
+@@ -368,7 +414,11 @@ static inline void scale2x_32_mmx_single(scale2x_uint32* dst, const scale2x_uint |
"por %%mm3, %%mm1\n" |
/* current_upper */ |
@@ -665,7 +341,7 @@ diff -Naur scummvm-1.2.1_orig/graphics/scaler/scale2x.cpp scummvm-1.2.1/graphics |
/* compute the upper-left pixel for dst on %%mm2 */ |
/* compute the upper-right pixel for dst on %%mm4 */ |
-@@ -390,8 +440,13 @@ |
+@@ -378,8 +428,13 @@ static inline void scale2x_32_mmx_single(scale2x_uint32* dst, const scale2x_uint |
"movq %%mm1, %%mm5\n" |
"pcmpeqd %%mm6, %%mm2\n" |
"pcmpeqd %%mm6, %%mm4\n" |
@@ -679,7 +355,7 @@ diff -Naur scummvm-1.2.1_orig/graphics/scaler/scale2x.cpp scummvm-1.2.1/graphics |
"pandn %%mm2, %%mm3\n" |
"pandn %%mm4, %%mm5\n" |
"movq %%mm0, %%mm2\n" |
-@@ -413,8 +468,13 @@ |
+@@ -401,8 +456,13 @@ static inline void scale2x_32_mmx_single(scale2x_uint32* dst, const scale2x_uint |
"movq %%mm2, %%mm3\n" |
"punpckldq %%mm4, %%mm2\n" |
"punpckhdq %%mm4, %%mm3\n" |