OLD | NEW |
---|---|
1 diff -Naur scummvm-1.2.1_orig/backends/midi/timidity.cpp scummvm-1.2.1/backends/ midi/timidity.cpp | 1 diff --git a/backends/platform/sdl/posix/posix-main.cpp b/backends/platform/sdl/ posix/posix-main.cpp |
2 --- scummvm-1.2.1_orig/backends/midi/timidity.cpp» 2010-12-11 01:38:09.0000 00000 -0800 | 2 index 5f0914e..4f11f2f 100644 |
3 +++ scummvm-1.2.1/backends/midi/timidity.cpp» 2011-09-07 11:47:02.000000000 -0 700 | 3 --- a/backends/platform/sdl/posix/posix-main.cpp |
4 @@ -34,8 +34,7 @@ | 4 +++ b/backends/platform/sdl/posix/posix-main.cpp |
5 @@ -20,6 +20,13 @@ | |
5 * | 6 * |
6 */ | 7 */ |
7 | 8 |
8 -#if defined (UNIX) | 9 +#define FORBIDDEN_SYMBOL_EXCEPTION_printf |
9 - | 10 +#define FORBIDDEN_SYMBOL_EXCEPTION_vprintf |
10 +#if defined (UNIX) && !defined(NACL) | 11 +#define FORBIDDEN_SYMBOL_EXCEPTION_vfprintf |
11 #include "common/util.h" | 12 +#define FORBIDDEN_SYMBOL_EXCEPTION_mkdir |
12 #include "common/endian.h" | 13 +#define FORBIDDEN_SYMBOL_EXCEPTION_setenv |
13 #include "common/str.h" | 14 +#define FORBIDDEN_SYMBOL_EXCEPTION_unistd_h |
14 diff -Naur scummvm-1.2.1_orig/backends/platform/sdl/main.cpp scummvm-1.2.1/backe nds/platform/sdl/main.cpp | 15 + |
15 --- scummvm-1.2.1_orig/backends/platform/sdl/main.cpp» 2010-12-11 01:38:11.0000 00000 -0800 | 16 #include "common/scummsys.h" |
16 +++ scummvm-1.2.1/backends/platform/sdl/main.cpp» 2011-09-07 11:47:02.0000 00000 -0700 | 17 |
17 @@ -52,16 +52,18 @@ | 18 #if defined(POSIX) && !defined(MACOSX) && !defined(SAMSUNGTV) && !defined(MAEMO ) && !defined(WEBOS) && !defined(LINUXMOTO) && !defined(GPH_DEVICE) && !defined( GP2X) && !defined(DINGUX) && !defined(OPENPANDORA) && !defined(PLAYSTATION3) |
19 @@ -28,7 +35,88 @@ | |
20 #include "backends/plugins/sdl/sdl-provider.h" | |
21 #include "base/main.h" | |
22 | |
23 +#if defined(NACL) | |
24 +#include <fcntl.h> | |
25 +#include <libtar.h> | |
26 +#include <stdlib.h> | |
27 +#include <sys/mount.h> | |
28 +#include <sys/stat.h> | |
29 +#include <unistd.h> | |
30 +#include <SDL/SDL_main.h> | |
31 + | |
32 +#include "nacl_io/nacl_io.h" | |
33 +#endif | |
34 + | |
35 +#if defined(NACL) | |
36 + | |
37 +#define CHECK(x) ret = x; assert(ret == 0) | |
38 + | |
39 +void ExtractAll(const char* data_file) { | |
40 +» printf("Extracting: %s ...\n", data_file); | |
41 +» TAR* tar; | |
42 + int ret; | |
43 +» CHECK(tar_open(&tar, (char*)data_file, NULL, O_RDONLY, 0, 0)); | |
44 +» CHECK(tar_extract_all(tar, "/")); | |
45 +» CHECK(tar_close(tar)); | |
46 +} | |
47 + | |
48 +void CopyFile(const char* src, const char* dst) { | |
49 +» const size_t kBufferSize = 1024; | |
50 +» char buffer[kBufferSize]; | |
51 +» | |
52 +» int src_fd = open(src, O_RDONLY); | |
53 +» assert(src_fd != -1); | |
54 +» int dst_fd = open(dst, O_WRONLY | O_CREAT); | |
55 +» assert(dst_fd != -1); | |
56 +» | |
57 +» int bytes_read; | |
58 +» int write_offset; | |
59 +» do { | |
60 +» » bytes_read = read(src_fd, &buffer[0], kBufferSize); | |
61 +» » assert(bytes_read >= 0); | |
62 +» » int bytes_to_write = bytes_read; | |
63 +» » | |
64 +» » write_offset = 0; | |
65 +» » while (bytes_to_write > 0) { | |
66 +» » » int bytes_written = write(dst_fd, &buffer[write_offset], bytes_to_write); | |
67 +» » » assert(bytes_written >= 0); | |
68 +» » » bytes_to_write -= bytes_written; | |
69 +» » » write_offset += bytes_written; | |
70 +» » } | |
71 +» } while(bytes_read > 0); | |
72 +» | |
73 +» close(src_fd); | |
74 +» close(dst_fd); | |
75 +} | |
76 + | |
77 +bool FileExists(const char* path) { | |
78 +» struct stat buf; | |
79 +» return stat(path, &buf) == 0; | |
80 +} | |
81 + | |
82 +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
| |
83 +» int ret; | |
84 +» CHECK(umount("/")); | |
85 +» CHECK(mount("", "/", "memfs", 0, NULL)); | |
86 +» CHECK(mount("./", "/mnt/http", "httpfs", 0, NULL)); | |
87 + | |
88 +» ExtractAll("/mnt/http/runimage.tar"); | |
89 +» ExtractAll("/mnt/http/bass.tar"); | |
90 +» ExtractAll("/mnt/http/lure.tar"); | |
91 + | |
92 +» CHECK(mkdir("/home", 0777)); | |
93 + CHECK(mount("", "/home", "html5fs", 0, "type=PERSISTENT")); | |
94 +» CHECK(setenv("HOME", "/home", 1)); | |
95 + | |
96 +» const char kConfigFile[] = "/home/.scummvmrc"; | |
97 +» if (!FileExists(kConfigFile)) { | |
98 +» » // Initialize with a default .scummvmrm that already has the | |
99 +» » // games loaded. | |
100 +» » CopyFile("/mnt/http/scummvmrc", kConfigFile); | |
101 + } | |
102 +#else | |
103 int main(int argc, char *argv[]) { | |
104 +#endif | |
105 | |
106 » // Create our OSystem instance | |
107 » g_system = new OSystem_POSIX(); | |
108 diff --git a/backends/platform/sdl/posix/posix.cpp b/backends/platform/sdl/posix /posix.cpp | |
109 index 7a8b1e7..6a9b94f 100644 | |
110 --- a/backends/platform/sdl/posix/posix.cpp | |
111 +++ b/backends/platform/sdl/posix/posix.cpp | |
112 @@ -160,6 +160,9 @@ Common::WriteStream *OSystem_POSIX::createLogFile() { | |
18 } | 113 } |
19 #endif | 114 |
20 | 115 bool OSystem_POSIX::displayLogFile() { |
21 -int main(int argc, char *argv[]) { | 116 +#ifdef NACL |
22 - | 117 +» return false; |
23 +#if defined(NACL) | 118 +#else |
24 +extern "C" int scummvm_sdl_init(void) { | 119 » if (_logFilePath.empty()) |
25 » // Create our OSystem instance | 120 » » return false; |
26 » g_system = new OSystem_SDL(); | 121 |
27 » assert(g_system); | 122 @@ -208,6 +211,7 @@ bool OSystem_POSIX::displayLogFile() { |
28 +} | |
29 +#endif | |
30 | |
31 +extern "C" int scummvm_sdl_main(int argc, const char * const argv[]) { | |
32 #ifdef DYNAMIC_MODULES | |
33 » PluginManager::instance().addPluginProvider(new SDLPluginProvider()); | |
34 #endif | |
35 - | |
36 » // Invoke the actual ScummVM main entry point: | |
37 » int res = scummvm_main(argc, argv); | |
38 » ((OSystem_SDL *)g_system)->deinit(); | |
39 diff -Naur scummvm-1.2.1_orig/backends/platform/sdl/module.mk scummvm-1.2.1/back ends/platform/sdl/module.mk | |
40 --- scummvm-1.2.1_orig/backends/platform/sdl/module.mk» 2010-12-11 01:38:11.0000 00000 -0800 | |
41 +++ scummvm-1.2.1/backends/platform/sdl/module.mk» 2011-09-07 11:47:02.0000 00000 -0700 | |
42 @@ -5,6 +5,8 @@ | |
43 » graphics.o \ | |
44 » hardwarekeys.o \ | |
45 » main.o \ | |
46 +» ppapi/scummvm_pepper_instance.o \ | |
47 +» ppapi/scummvm_pepper_module.o \ | |
48 » sdl.o | |
49 | |
50 # We don't use rules.mk but rather manually update OBJS and MODULE_DIRS. | |
51 diff -Naur scummvm-1.2.1_orig/backends/platform/sdl/ppapi/module.mk scummvm-1.2. 1/backends/platform/sdl/ppapi/module.mk | |
52 --- scummvm-1.2.1_orig/backends/platform/sdl/ppapi/module.mk» 1969-12-31 16:00 :00.000000000 -0800 | |
53 +++ scummvm-1.2.1/backends/platform/sdl/ppapi/module.mk»2011-09-07 11:47:02.0000 00000 -0700 | |
54 @@ -0,0 +1,8 @@ | |
55 +MODULE := scummvm_ppapi | |
56 + | |
57 +MODULE_OBJS := \ | |
58 +» scummvm_pepper_instance.o \ | |
59 +» scummvm_pepper_module.o | |
60 + | |
61 +# Include common rules | |
62 +include $(srcdir)/rules.mk | |
63 diff -Naur scummvm-1.2.1_orig/backends/platform/sdl/ppapi/scummvm_pepper_instanc e.cpp scummvm-1.2.1/backends/platform/sdl/ppapi/scummvm_pepper_instance.cpp | |
64 --- scummvm-1.2.1_orig/backends/platform/sdl/ppapi/scummvm_pepper_instance.cpp» 1969-12-31 16:00:00.000000000 -0800 | |
65 +++ scummvm-1.2.1/backends/platform/sdl/ppapi/scummvm_pepper_instance.cpp» 2011-09-07 11:47:02.000000000 -0700 | |
66 @@ -0,0 +1,116 @@ | |
67 +/* | |
68 + * Copyright (c) 2011 The Native Client Authors. All rights reserved. | |
69 + * Use of this source code is governed by a BSD-style license that can be | |
70 + * found in the LICENSE file. | |
71 + */ | |
72 +#include "scummvm_pepper_instance.h" | |
73 +#include <assert.h> | |
74 +#include <vector> | |
75 +#include <unistd.h> | |
76 +#include <SDL.h> | |
77 +#include <SDL_nacl.h> | |
78 +#include <SDL_video.h> | |
79 +#include "nacl-mounts/base/UrlLoaderJob.h" | |
80 +#include "nacl-mounts/AppEngine/AppEngineMount.h" | |
81 + | |
82 +extern "C" int mount(const char *source, const char *target, const char *filesy stemtype, unsigned long mountflags, const void *data); | |
83 +extern "C" int scummvm_sdl_init(void); | |
84 +extern "C" int scummvm_sdl_main(int argc,const char * const argv[]); | |
85 +extern "C" int simple_tar_extract(const char *path); | |
86 + | |
87 +static void *scummvm_init(void *arg) { | |
88 + MainThreadRunner *runner = reinterpret_cast<MainThreadRunner*>(arg); | |
89 + | |
90 + UrlLoaderJob *job = new UrlLoaderJob; | |
91 + job->set_url("/static/runimage.tar"); | |
92 + std::vector<char> data; | |
93 + job->set_dst(&data); | |
94 + runner->RunJob(job); | |
95 + int fh = open("/runimage.tar", O_CREAT | O_WRONLY); | |
96 + write(fh, &data[0], data.size()); | |
97 + close(fh); | |
98 + | |
99 + simple_tar_extract("runimage.tar"); | |
100 + | |
101 + UrlLoaderJob *job2 = new UrlLoaderJob; | |
102 + job2->set_url("/static/bass.tar"); | |
103 + std::vector<char> data2; | |
104 + job2->set_dst(&data2); | |
105 + runner->RunJob(job2); | |
106 + int fh2 = open("/bass.tar", O_CREAT | O_WRONLY); | |
107 + write(fh2, &data2[0], data2.size()); | |
108 + close(fh2); | |
109 + | |
110 + simple_tar_extract("bass.tar"); | |
111 + | |
112 + UrlLoaderJob *job3 = new UrlLoaderJob; | |
113 + job3->set_url("/static/lure.tar"); | |
114 + std::vector<char> data3; | |
115 + job3->set_dst(&data3); | |
116 + runner->RunJob(job3); | |
117 + int fh3 = open("/lure.tar", O_CREAT | O_WRONLY); | |
118 + write(fh3, &data3[0], data3.size()); | |
119 + close(fh3); | |
120 + | |
121 + simple_tar_extract("lure.tar"); | |
122 + | |
123 + int ret; | |
124 + mkdir("/usr", 0777); | |
125 + mkdir("/usr/local", 0777); | |
126 + mkdir("/usr/local/save", 0777); | |
127 + mkdir("/usr/local/save/AppEngine", 0777); | |
128 + | |
129 + AppEngineMount *aem = new AppEngineMount(runner, "/_file"); | |
130 + ret = mount(0, "/usr/local/save/AppEngine", 0, 0, aem); | |
131 + assert(ret == 0); | |
132 + | |
133 + ret = chdir("/usr/local/save/AppEngine"); | |
134 + assert(ret == 0); | |
135 + | |
136 + static char const * argv[] = {"scummvm", NULL}; | |
137 + scummvm_sdl_init(); | |
138 + scummvm_sdl_main(1, (const char**)argv); | |
139 + | |
140 + return 0; | |
141 +} | |
142 + | |
143 +ScummvmPepperInstance::ScummvmPepperInstance(PP_Instance instance) | |
144 + : pp::Instance(instance), | |
145 + quit_(false), | |
146 + width_(0), | |
147 + height_(0), | |
148 + runner_(NULL) { | |
149 + RequestInputEvents(PP_INPUTEVENT_CLASS_MOUSE); | |
150 + RequestFilteringInputEvents(PP_INPUTEVENT_CLASS_KEYBOARD); | |
151 +} | |
152 + | |
153 +bool ScummvmPepperInstance::Init(uint32_t argc, const char* argn[], const char* argv[]) { | |
154 + return true; | |
155 +} | |
156 + | |
157 +void ScummvmPepperInstance::DidChangeView(const pp::Rect& position, const pp::R ect& clip) { | |
158 + if (width_ && height_) | |
159 + return; | |
160 + | |
161 + if (position.size().width() == width_ && | |
162 + position.size().height() == height_) | |
163 + return; // Size didn't change, no need to update anything. | |
164 + | |
165 + width_ = position.size().width(); | |
166 + height_ = position.size().height(); | |
167 + | |
168 + SDL_NACL_SetInstance(pp_instance(), width_, height_); | |
169 + | |
170 + int lval = SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO); | |
171 + | |
172 + assert(lval >= 0); | |
173 + | |
174 + runner_ = new MainThreadRunner(this); | |
175 + pthread_create(&scummvm_thread_, NULL, scummvm_init, runner_); | |
176 +} | |
177 + | |
178 +bool ScummvmPepperInstance::HandleInputEvent(const pp::InputEvent& event) { | |
179 + SDL_NACL_PushEvent(event); | |
180 + return true; | |
181 +} | |
182 + | |
183 diff -Naur scummvm-1.2.1_orig/backends/platform/sdl/ppapi/scummvm_pepper_instanc e.h scummvm-1.2.1/backends/platform/sdl/ppapi/scummvm_pepper_instance.h | |
184 --- scummvm-1.2.1_orig/backends/platform/sdl/ppapi/scummvm_pepper_instance.h» 1969-12-31 16:00:00.000000000 -0800 | |
185 +++ scummvm-1.2.1/backends/platform/sdl/ppapi/scummvm_pepper_instance.h»2011-09- 07 11:47:02.000000000 -0700 | |
186 @@ -0,0 +1,39 @@ | |
187 +/* | |
188 + * Copyright (c) 2011 The Native Client Authors. All rights reserved. | |
189 + * Use of this source code is governed by a BSD-style license that can be | |
190 + * found in the LICENSE file. | |
191 + */ | |
192 +#ifndef EXAMPLES_SCUMMVM_PEPPER_H_ | |
193 +#define EXAMPLES_SCUMMVM_PEPPER_H_ | |
194 + | |
195 +#include <pthread.h> | |
196 +#include <ppapi/cpp/input_event.h> | |
197 +#include <ppapi/cpp/instance.h> | |
198 +#include <ppapi/cpp/rect.h> | |
199 +#include "nacl-mounts/base/MainThreadRunner.h" | |
200 + | |
201 +class ScummvmPepperInstance : public pp::Instance { | |
202 + public: | |
203 + explicit ScummvmPepperInstance(PP_Instance instance); | |
204 + | |
205 + virtual ~ScummvmPepperInstance() { | |
206 + if (runner_) delete runner_; | |
207 + } | |
208 + | |
209 + virtual bool Init(uint32_t argc, const char* argn[], const char* argv[]); | |
210 + | |
211 + void DidChangeView(const pp::Rect& position, const pp::Rect& clip); | |
212 + | |
213 + bool HandleInputEvent(const pp::InputEvent& event); | |
214 + | |
215 + bool quit() const { return quit_; } | |
216 + | |
217 + private: | |
218 + pthread_t scummvm_thread_; | |
219 + MainThreadRunner *runner_; | |
220 + int width_; | |
221 + int height_; | |
222 + bool quit_; | |
223 +}; | |
224 + | |
225 +#endif // EXAMPLES_SCUMMVM_PEPPER_H_ | |
226 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 | |
227 --- scummvm-1.2.1_orig/backends/platform/sdl/ppapi/scummvm_pepper_module.cpp» 1969-12-31 16:00:00.000000000 -0800 | |
228 +++ scummvm-1.2.1/backends/platform/sdl/ppapi/scummvm_pepper_module.cpp»2011-09- 07 11:47:02.000000000 -0700 | |
229 @@ -0,0 +1,33 @@ | |
230 +// Copyright 2011 The Native Client SDK Authors. All rights reserved. | |
231 +// Use of this source code is governed by a BSD-style license that can | |
232 +// be found in the LICENSE file. | |
233 + | |
234 +#include <ppapi/cpp/module.h> | |
235 +#include <stdio.h> | |
236 +#include "scummvm_pepper_instance.h" | |
237 + | |
238 +namespace scummvm_pepper { | |
239 + // The Module class. The browser calls the CreateInstance() method to create | |
240 + // an instance of you NaCl module on the web page. The browser creates a new | |
241 + // instance for each <embed> tag with type="application/x-ppapi-nacl-srpc". | |
242 + class ScummvmPepperModule : public pp::Module { | |
243 + public: | |
244 + ScummvmPepperModule() : pp::Module() {} | |
245 + virtual ~ScummvmPepperModule() {} | |
246 + | |
247 + virtual pp::Instance* CreateInstance(PP_Instance instance) { | |
248 + return new ScummvmPepperInstance(instance); | |
249 + } | |
250 + }; | |
251 +} // namespace scummvm_pepper | |
252 + | |
253 +// Factory function called by the browser when the module is first loaded. | |
254 +// The browser keeps a singleton of this module. It calls the | |
255 +// CreateInstance() method on the object you return to make instances. There | |
256 +// is one instance per <embed> tag on the page. This is the main binding | |
257 +// point for your NaCl module with the browser. | |
258 +namespace pp { | |
259 + Module* CreateModule() { | |
260 + return new scummvm_pepper::ScummvmPepperModule(); | |
261 + } | |
262 +} // namespace pp | |
263 diff -Naur scummvm-1.2.1_orig/backends/platform/sdl/sdl.cpp scummvm-1.2.1/backen ds/platform/sdl/sdl.cpp | |
264 --- scummvm-1.2.1_orig/backends/platform/sdl/sdl.cpp» 2010-12-11 01:38:11.0000 00000 -0800 | |
265 +++ scummvm-1.2.1/backends/platform/sdl/sdl.cpp»2011-09-07 11:47:02.000000000 -0 700 | |
266 @@ -97,6 +97,8 @@ | |
267 | |
268 #if !defined(_WIN32_WCE) && !defined(__SYMBIAN32__) && defined(USE_SCALERS) | |
269 static AspectRatio getDesiredAspectRatio() { | |
270 + return AspectRatio(1, 1); | |
271 +#if !defined(NACL) | |
272 » const size_t AR_COUNT = 4; | |
273 » const char* desiredAspectRatioAsStrings[AR_COUNT] = { " auto", "4/3", "16/9", "16/10" }; | |
274 » const AspectRatio desiredAspectRatios[AR_COUNT] = { AspectRatio( 0, 0), AspectRatio(4,3), AspectRatio(16,9), AspectRatio(16,10) }; | |
275 @@ -113,6 +115,7 @@ | |
276 } | 123 } |
277 » // TODO : Report a warning | 124 |
278 » return AspectRatio(0, 0); | 125 » return WIFEXITED(status) && WEXITSTATUS(status) == 0; |
279 +#endif | 126 +#endif |
280 } | 127 } |
281 #endif | 128 |
282 | 129 |
283 @@ -135,9 +138,11 @@ | 130 diff --git a/configure b/configure |
284 » if (joystick_num > -1) | 131 index 5016a86..96571c1 100755 |
285 » » sdlFlags |= SDL_INIT_JOYSTICK; | 132 --- a/configure |
286 | 133 +++ b/configure |
287 +#if !defined(NACL) | 134 @@ -1338,6 +1338,16 @@ n64) |
288 » if (SDL_Init(sdlFlags) == -1) { | 135 » _host_cpu=mips |
289 » » error("Could not initialize SDL: %s", SDL_GetError()); | 136 » _host_alias=mips64 |
290 » } | |
291 +#endif | |
292 | |
293 » _graphicsMutex = createMutex(); | |
294 | |
295 @@ -407,7 +412,8 @@ | |
296 » // from the Springboard, is /. Which we don't want. | |
297 » const char *home = getenv("HOME"); | |
298 » if (home != NULL && strlen(home) < MAXPATHLEN) | |
299 -» » snprintf(configFile, MAXPATHLEN, "%s/%s", home, DEFAULT_CONFIG_F ILE); | |
300 +» » //snprintf(configFile, MAXPATHLEN, "%s/%s", home, DEFAULT_CONFIG _FILE); | |
301 +» » sprintf(configFile, "%s/%s", home, DEFAULT_CONFIG_FILE); | |
302 » else | |
303 » » strcpy(configFile, DEFAULT_CONFIG_FILE); | |
304 #else | |
305 diff -Naur scummvm-1.2.1_orig/base/commandLine.cpp scummvm-1.2.1/base/commandLin e.cpp | |
306 --- scummvm-1.2.1_orig/base/commandLine.cpp» 2010-12-11 01:38:08.000000000 -0 800 | |
307 +++ scummvm-1.2.1/base/commandLine.cpp» 2011-09-07 11:47:02.000000000 -0700 | |
308 @@ -140,7 +140,8 @@ | |
309 » va_list va; | |
310 | |
311 » va_start(va, s); | |
312 -» vsnprintf(buf, STRINGBUFLEN, s, va); | |
313 +» //vsnprintf(buf, STRINGBUFLEN, s, va); | |
314 +» vsprintf(buf, s, va); | |
315 » va_end(va); | |
316 | |
317 #if !(defined(__GP32__) || defined (__SYMBIAN32__) || defined(__DS__)) | |
318 diff -Naur scummvm-1.2.1_orig/base/plugins.cpp scummvm-1.2.1/base/plugins.cpp | |
319 --- scummvm-1.2.1_orig/base/plugins.cpp»2010-12-11 01:38:08.000000000 -0800 | |
320 +++ scummvm-1.2.1/base/plugins.cpp» 2011-09-07 11:47:02.000000000 -0700 | |
321 @@ -212,7 +212,7 @@ | |
322 » » LINK_PLUGIN(AMIGA) | |
323 » » LINK_PLUGIN(APPLEIIGS) | |
324 » » LINK_PLUGIN(TOWNS) | |
325 -» » #if defined (UNIX) | |
326 + #if defined (UNIX) && !defined(NACL) | |
327 » » LINK_PLUGIN(TIMIDITY) | |
328 » » #endif | |
329 | |
330 diff -Naur scummvm-1.2.1_orig/config.log scummvm-1.2.1/config.log | |
331 --- scummvm-1.2.1_orig/config.log» 1969-12-31 16:00:00.000000000 -0800 | |
332 +++ scummvm-1.2.1/config.log» 2011-09-07 11:47:02.000000000 -0700 | |
333 @@ -0,0 +1 @@ | |
334 +Configure run on Thu Aug 18 14:57:56 PDT 2011 | |
335 diff -Naur scummvm-1.2.1_orig/configure scummvm-1.2.1/configure | |
336 --- scummvm-1.2.1_orig/configure» 2010-12-11 01:38:39.000000000 -0800 | |
337 +++ scummvm-1.2.1/configure» 2011-09-07 11:47:02.000000000 -0700 | |
338 @@ -1091,6 +1091,11 @@ | |
339 » _host_cpu=arm | |
340 » _host_alias=arm-wince-mingw32ce | |
341 ;; | 137 ;; |
342 +nacl) | 138 +nacl-x86) |
343 + _host_os=nacl | 139 + _host_os=nacl |
344 + _host_cpu=x86 | 140 + _host_cpu=x86 |
345 + _host_alias=${NACL_CROSS_PREFIX} | 141 + _host_alias=${NACL_CROSS_PREFIX} |
346 + ;; | 142 + ;; |
347 *) | 143 +nacl-arm) |
348 » if test -n "$_host"; then | 144 +» _host_os=nacl |
349 » » guessed_host=`$_srcdir/config.sub $_host` | 145 +» _host_cpu=arm |
350 diff -Naur scummvm-1.2.1_orig/engines/scumm/detection.cpp scummvm-1.2.1/engines/ scumm/detection.cpp | 146 +» _host_alias=${NACL_CROSS_PREFIX} |
351 --- scummvm-1.2.1_orig/engines/scumm/detection.cpp» 2010-12-11 01:37:23.0000 00000 -0800 | 147 +» ;; |
352 +++ scummvm-1.2.1/engines/scumm/detection.cpp» 2011-09-07 11:47:02.000000000 -0 700 | 148 neuros) |
353 @@ -23,6 +23,11 @@ | 149 » _host_os=linux |
354 * | 150 » _host_cpu=arm |
355 */ | 151 @@ -1347,6 +1357,11 @@ openpandora) |
356 | 152 » _host_cpu=arm |
357 + | 153 » _host_alias=arm-angstrom-linux-gnueabi |
358 +#define snprintf4(a,b,c,d) sprintf(a,c,d) | 154 » ;; |
359 +#define snprintf5(a,b,c,d,e) sprintf(a,c,d,e) | 155 +pnacl) |
360 +#define snprintf6(a,b,c,d,e,f) sprintf(a,c,d,e,f) | 156 +» _host_os=pnacl |
361 + | 157 +» _host_cpu=le32 |
362 #include "base/plugins.h" | 158 +» _host_alias=${NACL_CROSS_PREFIX} |
363 | 159 +» ;; |
364 #include "common/archive.h" | 160 ppc-amigaos) |
365 @@ -72,20 +77,20 @@ | 161 » _host_os=amigaos |
366 | 162 » _host_cpu=ppc |
367 » if (_game.version == 4) { | 163 @@ -1731,7 +1746,7 @@ if test "$have_gcc" = yes ; then |
368 » » if (room == 0 || room >= 900) { | 164 » » » case $_host_os in |
369 -» » » snprintf(buf, sizeof(buf), "%03d.lfl", room); | 165 » » » # newlib-based system include files suppress non-C89 fun ction |
370 +» » » snprintf4(buf, sizeof(buf), "%03d.lfl", room); | 166 » » » # declarations under __STRICT_ANSI__ |
371 » » } else { | 167 -» » » amigaos* | android | bada | dreamcast | ds | gamecube | mingw* | n64 | psp | ps2 | ps3 | wii | wince ) |
372 -» » » snprintf(buf, sizeof(buf), "disk%02d.lec", diskNumber); | 168 +» » » amigaos* | android | bada | dreamcast | ds | gamecube | mingw* | n64 | psp | ps2 | ps3 | wii | wince | *nacl* ) |
373 +» » » snprintf4(buf, sizeof(buf), "disk%02d.lec", diskNumber); | 169 » » » » ;; |
374 » » } | 170 » » » *) |
375 » } else { | 171 » » » » CXXFLAGS="$CXXFLAGS -ansi" |
376 » » char id = 0; | 172 @@ -1808,6 +1823,8 @@ if strings $TMPO.o | grep BIGenDianSyS >/dev/null; then |
377 | 173 » _endian=big |
378 » » switch (_filenamePattern.genMethod) { | 174 elif strings $TMPO.o | grep LiTTleEnDian >/dev/null; then |
379 » » case kGenDiskNum: | 175 » _endian=little |
380 -» » » snprintf(buf, sizeof(buf), _filenamePattern.pattern, dis kNumber); | 176 +elif [ "$_host_cpu" = "le32" ]; then |
381 +» » » snprintf4(buf, sizeof(buf), _filenamePattern.pattern, di skNumber); | 177 +» _endian=little |
382 » » » break; | 178 fi |
383 | 179 echo $_endian; |
384 » » case kGenRoomNum: | 180 cc_check_clean tmp_endianness_check.cpp |
385 -» » » snprintf(buf, sizeof(buf), _filenamePattern.pattern, roo m); | 181 @@ -1991,6 +2008,9 @@ case $_host_cpu in |
386 +» » » snprintf4(buf, sizeof(buf), _filenamePattern.pattern, ro om); | 182 » amd64 | x86_64) |
387 » » » break; | 183 » » echo "x86_64" |
388 | 184 » » ;; |
389 » » case kGenHEMac: | 185 +» le32) |
390 @@ -107,15 +112,15 @@ | 186 +» » echo "Generic le32" |
391 » » » » » else if (_game.id == GID_TREASUREHUNT) | 187 +» » ;; |
392 » » » » » » strcpy(buf, "Blue'sTreasureHunt. (b)"); | 188 » *) |
393 » » » » » else | 189 » » echo "unknown ($_host_cpu)" |
394 -» » » » » » snprintf(buf, sizeof(buf), "%s.( b)", _filenamePattern.pattern); | 190 » » ;; |
395 +» » » » » » snprintf4(buf, sizeof(buf), "%s. (b)", _filenamePattern.pattern); | 191 @@ -2915,7 +2935,7 @@ case $_host_os in |
396 » » » » » break; | 192 » amigaos* | cygwin* | dreamcast | ds | gamecube | mingw* | n64 | ps2 | ps 3 | psp | wii | wince) |
397 » » » » case 1: | 193 » » _posix=no |
398 » » » » » id = 'a'; | 194 » » ;; |
399 -» » » » » snprintf(buf, sizeof(buf), "%s.(a)", _fi lenamePattern.pattern); | 195 -» android | beos* | bsd* | darwin* | freebsd* | gph-linux | haiku* | hpux* | iphone | irix* | linux* | maemo | mint* | netbsd* | openbsd* | solaris* | sun os* | uclinux* | webos) |
400 +» » » » » snprintf4(buf, sizeof(buf), "%s.(a)", _f ilenamePattern.pattern); | 196 +» android | beos* | bsd* | darwin* | freebsd* | gph-linux | haiku* | hpux* | iphone | irix* | linux* | maemo | mint* | netbsd* | openbsd* | solaris* | sun os* | uclinux* | webos | *nacl) |
401 » » » » » break; | 197 » » _posix=yes |
402 » » » » default: | 198 » » ;; |
403 » » » » » id = '0'; | 199 » os2-emx*) |
404 -» » » » » snprintf(buf, sizeof(buf), "%s.he0", _fi lenamePattern.pattern); | 200 diff --git a/graphics/scaler/scale2x.cpp b/graphics/scaler/scale2x.cpp |
405 +» » » » » snprintf4(buf, sizeof(buf), "%s.he0", _f ilenamePattern.pattern); | 201 index ac2dbad..0fc0603 100644 |
406 » » » » } | 202 --- a/graphics/scaler/scale2x.cpp |
407 » » » } else if (_game.heversion >= 70) { | 203 +++ b/graphics/scaler/scale2x.cpp |
408 » » » » id = (room == 0) ? '0' : '1'; | 204 @@ -201,9 +201,15 @@ static inline void scale2x_8_mmx_single(scale2x_uint8* dst, const scale2x_uint8* |
409 @@ -126,16 +131,16 @@ | |
410 » » » if (_filenamePattern.genMethod == kGenHEPC) { | |
411 » » » » // For HE >= 98, we already called snprintf abov e. | |
412 » » » » if (_game.heversion < 98 || room < 0) | |
413 -» » » » » snprintf(buf, sizeof(buf), "%s.he%c", _f ilenamePattern.pattern, id); | |
414 +» » » » » snprintf5(buf, sizeof(buf), "%s.he%c", _ filenamePattern.pattern, id); | |
415 » » » } else { | |
416 » » » » if (id == '3') { // special case for cursors | |
417 » » » » » // For mac they're stored in game binary | |
418 » » » » » strncpy(buf, _filenamePattern.pattern, s izeof(buf)); | |
419 » » » » } else { | |
420 » » » » » if (_filenamePattern.genMethod == kGenHE Mac) | |
421 -» » » » » » snprintf(buf, sizeof(buf), "%s ( %c)", _filenamePattern.pattern, id); | |
422 +» » » » » » snprintf5(buf, sizeof(buf), "%s (%c)", _filenamePattern.pattern, id); | |
423 » » » » » else | |
424 -» » » » » » snprintf(buf, sizeof(buf), "%s % c", _filenamePattern.pattern, id); | |
425 +» » » » » » snprintf5(buf, sizeof(buf), "%s %c", _filenamePattern.pattern, id); | |
426 » » » » } | |
427 » » » } | |
428 | |
429 @@ -159,19 +164,19 @@ | |
430 » switch (genMethod) { | |
431 » case kGenDiskNum: | |
432 » case kGenRoomNum: | |
433 -» » snprintf(buf, sizeof(buf), pattern, 0); | |
434 +» » snprintf4(buf, sizeof(buf), pattern, 0); | |
435 » » break; | |
436 | |
437 » case kGenHEPC: | |
438 -» » snprintf(buf, sizeof(buf), "%s.he0", pattern); | |
439 +» » snprintf4(buf, sizeof(buf), "%s.he0", pattern); | |
440 » » break; | |
441 | |
442 » case kGenHEMac: | |
443 -» » snprintf(buf, sizeof(buf), "%s (0)", pattern); | |
444 +» » snprintf4(buf, sizeof(buf), "%s (0)", pattern); | |
445 » » break; | |
446 | |
447 » case kGenHEMacNoParens: | |
448 -» » snprintf(buf, sizeof(buf), "%s 0", pattern); | |
449 +» » snprintf4(buf, sizeof(buf), "%s 0", pattern); | |
450 » » break; | |
451 | |
452 » case kGenUnchanged: | |
453 diff -Naur scummvm-1.2.1_orig/engines/sky/control.cpp scummvm-1.2.1/engines/sky/ control.cpp | |
454 --- scummvm-1.2.1_orig/engines/sky/control.cpp» 2010-12-11 01:37:35.000000000 -0 800 | |
455 +++ scummvm-1.2.1/engines/sky/control.cpp» 2011-09-07 11:47:02.000000000 -0 700 | |
456 @@ -1031,7 +1031,7 @@ | |
457 » savenames.resize(MAX_SAVE_GAMES); | |
458 | |
459 » Common::InSaveFile *inf; | |
460 -» inf = _saveFileMan->openForLoading("SKY-VM.SAV"); | |
461 +» inf = _saveFileMan->openForLoading(SKY_VM_SAVE_PATH); | |
462 » if (inf != NULL) { | |
463 » » char *tmpBuf = new char[MAX_SAVE_GAMES * MAX_TEXT_LEN]; | |
464 » » char *tmpPtr = tmpBuf; | |
465 @@ -1075,7 +1075,7 @@ | |
466 void Control::saveDescriptions(const Common::StringArray &list) { | |
467 » Common::OutSaveFile *outf; | |
468 | |
469 -» outf = _saveFileMan->openForSaving("SKY-VM.SAV"); | |
470 +» outf = _saveFileMan->openForSaving(SKY_VM_SAVE_PATH); | |
471 » bool ioFailed = true; | |
472 » if (outf) { | |
473 » » for (uint16 cnt = 0; cnt < MAX_SAVE_GAMES; cnt++) { | |
474 diff -Naur scummvm-1.2.1_orig/engines/sky/control.h scummvm-1.2.1/engines/sky/co ntrol.h | |
475 --- scummvm-1.2.1_orig/engines/sky/control.h» 2010-12-11 01:37:35.000000000 -0 800 | |
476 +++ scummvm-1.2.1/engines/sky/control.h»2011-09-07 11:47:02.000000000 -0700 | |
477 @@ -137,6 +137,8 @@ | |
478 #define SAVE_FILE_REVISION 6 | |
479 #define OLD_SAVEGAME_TYPE 5 | |
480 | |
481 +#define SKY_VM_SAVE_PATH "SKY-VM.SAV" | |
482 + | |
483 struct AllocedMem { | |
484 » uint16 *mem; | |
485 » AllocedMem *next; | |
486 diff -Naur scummvm-1.2.1_orig/engines/sky/detection.cpp scummvm-1.2.1/engines/sk y/detection.cpp | |
487 --- scummvm-1.2.1_orig/engines/sky/detection.cpp» 2010-12-11 01:37:35.0000 00000 -0800 | |
488 +++ scummvm-1.2.1/engines/sky/detection.cpp» 2011-09-07 11:47:02.000000000 -0 700 | |
489 @@ -37,6 +37,8 @@ | |
490 | |
491 #include "engines/metaengine.h" | |
492 | |
493 +#include "control.h" | |
494 + | |
495 static const PlainGameDescriptor skySetting = | |
496 » {"sky", "Beneath a Steel Sky" }; | |
497 | |
498 @@ -182,7 +184,7 @@ | |
499 » savenames.resize(MAX_SAVE_GAMES+1); | |
500 | |
501 » Common::InSaveFile *inf; | |
502 -» inf = saveFileMan->openForLoading("SKY-VM.SAV"); | |
503 +» inf = saveFileMan->openForLoading(SKY_VM_SAVE_PATH); | |
504 » if (inf != NULL) { | |
505 » » char *tmpBuf = new char[MAX_SAVE_GAMES * MAX_TEXT_LEN]; | |
506 » » char *tmpPtr = tmpBuf; | |
507 @@ -238,7 +240,7 @@ | |
508 » Common::StringArray savenames; | |
509 » savenames.resize(MAX_SAVE_GAMES+1); | |
510 » Common::InSaveFile *inf; | |
511 -» inf = saveFileMan->openForLoading("SKY-VM.SAV"); | |
512 +» inf = saveFileMan->openForLoading(SKY_VM_SAVE_PATH); | |
513 » if (inf != NULL) { | |
514 » » char *tmpBuf = new char[MAX_SAVE_GAMES * MAX_TEXT_LEN]; | |
515 » » char *tmpPtr = tmpBuf; | |
516 @@ -257,7 +259,7 @@ | |
517 » // Save the updated descriptions | |
518 » Common::OutSaveFile *outf; | |
519 | |
520 -» outf = saveFileMan->openForSaving("SKY-VM.SAV"); | |
521 +» outf = saveFileMan->openForSaving(SKY_VM_SAVE_PATH); | |
522 » bool ioFailed = true; | |
523 » if (outf) { | |
524 » » for (uint16 cnt = 0; cnt < MAX_SAVE_GAMES; cnt++) { | |
525 diff -Naur scummvm-1.2.1_orig/graphics/scaler/scale2x.cpp scummvm-1.2.1/graphics /scaler/scale2x.cpp | |
526 --- scummvm-1.2.1_orig/graphics/scaler/scale2x.cpp» 2010-12-11 01:38:07.0000 00000 -0800 | |
527 +++ scummvm-1.2.1/graphics/scaler/scale2x.cpp» 2011-09-07 12:14:13.000000000 -0 700 | |
528 @@ -211,9 +211,15 @@ | |
529 "0:\n" | 205 "0:\n" |
530 | 206 |
531 /* set the current, current_pre, current_next registers */ | 207 /* set the current, current_pre, current_next registers */ |
532 +#if defined(__x86_64__) | 208 +#if defined(__x86_64__) |
533 + "movq %%nacl:-8(%%r15,%q1), %%mm0\n" | 209 + "movq %%nacl:-8(%%r15,%q1), %%mm0\n" |
534 + "movq %%nacl:(%%r15,%q1), %%mm7\n" | 210 + "movq %%nacl:(%%r15,%q1), %%mm7\n" |
535 + "movq %%nacl:8(%%r15,%q1), %%mm1\n" | 211 + "movq %%nacl:8(%%r15,%q1), %%mm1\n" |
536 +#else | 212 +#else |
537 "movq -8(%1), %%mm0\n" | 213 "movq -8(%1), %%mm0\n" |
538 "movq (%1), %%mm7\n" | 214 "movq (%1), %%mm7\n" |
539 "movq 8(%1), %%mm1\n" | 215 "movq 8(%1), %%mm1\n" |
540 +#endif | 216 +#endif |
541 "psrlq $56, %%mm0\n" | 217 "psrlq $56, %%mm0\n" |
542 "psllq $56, %%mm1\n" | 218 "psllq $56, %%mm1\n" |
543 "movq %%mm7, %%mm2\n" | 219 "movq %%mm7, %%mm2\n" |
544 @@ -224,7 +230,11 @@ | 220 @@ -214,7 +220,11 @@ static inline void scale2x_8_mmx_single(scale2x_uint8* dst, const scale2x_uint8* |
545 "por %%mm3, %%mm1\n" | 221 "por %%mm3, %%mm1\n" |
546 | 222 |
547 /* current_upper */ | 223 /* current_upper */ |
548 +#if defined(__x86_64__) | 224 +#if defined(__x86_64__) |
549 + "movq %%nacl:(%%r15,%q0), %%mm6\n" | 225 + "movq %%nacl:(%%r15,%q0), %%mm6\n" |
550 +#else | 226 +#else |
551 "movq (%0), %%mm6\n" | 227 "movq (%0), %%mm6\n" |
552 +#endif | 228 +#endif |
553 | 229 |
554 /* compute the upper-left pixel for dst on %%mm2 */ | 230 /* compute the upper-left pixel for dst on %%mm2 */ |
555 /* compute the upper-right pixel for dst on %%mm4 */ | 231 /* compute the upper-right pixel for dst on %%mm4 */ |
556 @@ -234,8 +244,13 @@ | 232 @@ -224,8 +234,13 @@ static inline void scale2x_8_mmx_single(scale2x_uint8* dst, const scale2x_uint8* |
557 "movq %%mm1, %%mm5\n" | 233 "movq %%mm1, %%mm5\n" |
558 "pcmpeqb %%mm6, %%mm2\n" | 234 "pcmpeqb %%mm6, %%mm2\n" |
559 "pcmpeqb %%mm6, %%mm4\n" | 235 "pcmpeqb %%mm6, %%mm4\n" |
560 +#if defined(__x86_64__) | 236 +#if defined(__x86_64__) |
561 + "pcmpeqb %%nacl:(%%r15,%q2), %%mm3\n" | 237 + "pcmpeqb %%nacl:(%%r15,%q2), %%mm3\n" |
562 + "pcmpeqb %%nacl:(%%r15,%q2), %%mm5\n" | 238 + "pcmpeqb %%nacl:(%%r15,%q2), %%mm5\n" |
563 +#else | 239 +#else |
564 "pcmpeqb (%2), %%mm3\n" | 240 "pcmpeqb (%2), %%mm3\n" |
565 "pcmpeqb (%2), %%mm5\n" | 241 "pcmpeqb (%2), %%mm5\n" |
566 +#endif | 242 +#endif |
567 "pandn %%mm2, %%mm3\n" | 243 "pandn %%mm2, %%mm3\n" |
568 "pandn %%mm4, %%mm5\n" | 244 "pandn %%mm4, %%mm5\n" |
569 "movq %%mm0, %%mm2\n" | 245 "movq %%mm0, %%mm2\n" |
570 @@ -257,8 +272,13 @@ | 246 @@ -247,8 +262,13 @@ static inline void scale2x_8_mmx_single(scale2x_uint8* dst, const scale2x_uint8* |
571 "movq %%mm2, %%mm3\n" | 247 "movq %%mm2, %%mm3\n" |
572 "punpcklbw %%mm4, %%mm2\n" | 248 "punpcklbw %%mm4, %%mm2\n" |
573 "punpckhbw %%mm4, %%mm3\n" | 249 "punpckhbw %%mm4, %%mm3\n" |
574 +#if defined(__x86_64__) | 250 +#if defined(__x86_64__) |
575 + "movq %%mm2, %%nacl:(%%r15,%q3)\n" | 251 + "movq %%mm2, %%nacl:(%%r15,%q3)\n" |
576 + "movq %%mm3, %%nacl:8(%%r15,%q3)\n" | 252 + "movq %%mm3, %%nacl:8(%%r15,%q3)\n" |
577 +#else | 253 +#else |
578 "movq %%mm2, (%3)\n" | 254 "movq %%mm2, (%3)\n" |
579 "movq %%mm3, 8(%3)\n" | 255 "movq %%mm3, 8(%3)\n" |
580 +#endif | 256 +#endif |
581 | 257 |
582 /* next */ | 258 /* next */ |
583 "add $8, %0\n" | 259 "add $8, %0\n" |
584 @@ -289,9 +309,15 @@ | 260 @@ -278,9 +298,15 @@ static inline void scale2x_16_mmx_single(scale2x_uint16* ds t, const scale2x_uint |
585 "0:\n" | 261 "0:\n" |
586 | 262 |
587 /* set the current, current_pre, current_next registers */ | 263 /* set the current, current_pre, current_next registers */ |
588 +#if defined(__x86_64__) | 264 +#if defined(__x86_64__) |
589 + "movq %%nacl:-8(%%r15,%q1), %%mm0\n" | 265 + "movq %%nacl:-8(%%r15,%q1), %%mm0\n" |
590 + "movq %%nacl:(%%r15,%q1), %%mm7\n" | 266 + "movq %%nacl:(%%r15,%q1), %%mm7\n" |
591 + "movq %%nacl:8(%%r15,%q1), %%mm1\n" | 267 + "movq %%nacl:8(%%r15,%q1), %%mm1\n" |
592 +#else | 268 +#else |
593 "movq -8(%1), %%mm0\n" | 269 "movq -8(%1), %%mm0\n" |
594 "movq (%1), %%mm7\n" | 270 "movq (%1), %%mm7\n" |
595 "movq 8(%1), %%mm1\n" | 271 "movq 8(%1), %%mm1\n" |
596 +#endif | 272 +#endif |
597 "psrlq $48, %%mm0\n" | 273 "psrlq $48, %%mm0\n" |
598 "psllq $48, %%mm1\n" | 274 "psllq $48, %%mm1\n" |
599 "movq %%mm7, %%mm2\n" | 275 "movq %%mm7, %%mm2\n" |
600 @@ -302,7 +328,11 @@ | 276 @@ -291,7 +317,11 @@ static inline void scale2x_16_mmx_single(scale2x_uint16* ds t, const scale2x_uint |
601 "por %%mm3, %%mm1\n" | 277 "por %%mm3, %%mm1\n" |
602 | 278 |
603 /* current_upper */ | 279 /* current_upper */ |
604 +#if defined(__x86_64__) | 280 +#if defined(__x86_64__) |
605 + "movq %%nacl:(%%r15,%q0), %%mm6\n" | 281 + "movq %%nacl:(%%r15,%q0), %%mm6\n" |
606 +#else | 282 +#else |
607 "movq (%0), %%mm6\n" | 283 "movq (%0), %%mm6\n" |
608 +#endif | 284 +#endif |
609 | 285 |
610 /* compute the upper-left pixel for dst on %%mm2 */ | 286 /* compute the upper-left pixel for dst on %%mm2 */ |
611 /* compute the upper-right pixel for dst on %%mm4 */ | 287 /* compute the upper-right pixel for dst on %%mm4 */ |
612 @@ -312,8 +342,13 @@ | 288 @@ -301,8 +331,13 @@ static inline void scale2x_16_mmx_single(scale2x_uint16* ds t, const scale2x_uint |
613 "movq %%mm1, %%mm5\n" | 289 "movq %%mm1, %%mm5\n" |
614 "pcmpeqw %%mm6, %%mm2\n" | 290 "pcmpeqw %%mm6, %%mm2\n" |
615 "pcmpeqw %%mm6, %%mm4\n" | 291 "pcmpeqw %%mm6, %%mm4\n" |
616 +#if defined(__x86_64__) | 292 +#if defined(__x86_64__) |
617 + "pcmpeqw %%nacl:(%%r15,%q2), %%mm3\n" | 293 + "pcmpeqw %%nacl:(%%r15,%q2), %%mm3\n" |
618 + "pcmpeqw %%nacl:(%%r15,%q2), %%mm5\n" | 294 + "pcmpeqw %%nacl:(%%r15,%q2), %%mm5\n" |
619 +#else | 295 +#else |
620 "pcmpeqw (%2), %%mm3\n" | 296 "pcmpeqw (%2), %%mm3\n" |
621 "pcmpeqw (%2), %%mm5\n" | 297 "pcmpeqw (%2), %%mm5\n" |
622 +#endif | 298 +#endif |
623 "pandn %%mm2, %%mm3\n" | 299 "pandn %%mm2, %%mm3\n" |
624 "pandn %%mm4, %%mm5\n" | 300 "pandn %%mm4, %%mm5\n" |
625 "movq %%mm0, %%mm2\n" | 301 "movq %%mm0, %%mm2\n" |
626 @@ -335,8 +370,13 @@ | 302 @@ -324,8 +359,13 @@ static inline void scale2x_16_mmx_single(scale2x_uint16* ds t, const scale2x_uint |
627 "movq %%mm2, %%mm3\n" | 303 "movq %%mm2, %%mm3\n" |
628 "punpcklwd %%mm4, %%mm2\n" | 304 "punpcklwd %%mm4, %%mm2\n" |
629 "punpckhwd %%mm4, %%mm3\n" | 305 "punpckhwd %%mm4, %%mm3\n" |
630 +#if defined(__x86_64__) | 306 +#if defined(__x86_64__) |
631 + "movq %%mm2, %%nacl:(%%r15,%q3)\n" | 307 + "movq %%mm2, %%nacl:(%%r15,%q3)\n" |
632 + "movq %%mm3, %%nacl:8(%%r15,%q3)\n" | 308 + "movq %%mm3, %%nacl:8(%%r15,%q3)\n" |
633 +#else | 309 +#else |
634 "movq %%mm2, (%3)\n" | 310 "movq %%mm2, (%3)\n" |
635 "movq %%mm3, 8(%3)\n" | 311 "movq %%mm3, 8(%3)\n" |
636 +#endif | 312 +#endif |
637 | 313 |
638 /* next */ | 314 /* next */ |
639 "add $8, %0\n" | 315 "add $8, %0\n" |
640 @@ -367,9 +407,15 @@ | 316 @@ -355,9 +395,15 @@ static inline void scale2x_32_mmx_single(scale2x_uint32* ds t, const scale2x_uint |
641 "0:\n" | 317 "0:\n" |
642 | 318 |
643 /* set the current, current_pre, current_next registers */ | 319 /* set the current, current_pre, current_next registers */ |
644 +#if defined(__x86_64__) | 320 +#if defined(__x86_64__) |
645 + "movq %%nacl:-8(%%r15,%q1), %%mm0\n" | 321 + "movq %%nacl:-8(%%r15,%q1), %%mm0\n" |
646 + "movq %%nacl:(%%r15,%q1), %%mm7\n" | 322 + "movq %%nacl:(%%r15,%q1), %%mm7\n" |
647 + "movq %%nacl:8(%%r15,%q1), %%mm1\n" | 323 + "movq %%nacl:8(%%r15,%q1), %%mm1\n" |
648 +#else | 324 +#else |
649 "movq -8(%1), %%mm0\n" | 325 "movq -8(%1), %%mm0\n" |
650 "movq (%1), %%mm7\n" | 326 "movq (%1), %%mm7\n" |
651 "movq 8(%1), %%mm1\n" | 327 "movq 8(%1), %%mm1\n" |
652 +#endif | 328 +#endif |
653 "psrlq $32, %%mm0\n" | 329 "psrlq $32, %%mm0\n" |
654 "psllq $32, %%mm1\n" | 330 "psllq $32, %%mm1\n" |
655 "movq %%mm7, %%mm2\n" | 331 "movq %%mm7, %%mm2\n" |
656 @@ -380,7 +426,11 @@ | 332 @@ -368,7 +414,11 @@ static inline void scale2x_32_mmx_single(scale2x_uint32* ds t, const scale2x_uint |
657 "por %%mm3, %%mm1\n" | 333 "por %%mm3, %%mm1\n" |
658 | 334 |
659 /* current_upper */ | 335 /* current_upper */ |
660 +#if defined(__x86_64__) | 336 +#if defined(__x86_64__) |
661 + "movq %%nacl:(%%r15,%q0), %%mm6\n" | 337 + "movq %%nacl:(%%r15,%q0), %%mm6\n" |
662 +#else | 338 +#else |
663 "movq (%0), %%mm6\n" | 339 "movq (%0), %%mm6\n" |
664 +#endif | 340 +#endif |
665 | 341 |
666 /* compute the upper-left pixel for dst on %%mm2 */ | 342 /* compute the upper-left pixel for dst on %%mm2 */ |
667 /* compute the upper-right pixel for dst on %%mm4 */ | 343 /* compute the upper-right pixel for dst on %%mm4 */ |
668 @@ -390,8 +440,13 @@ | 344 @@ -378,8 +428,13 @@ static inline void scale2x_32_mmx_single(scale2x_uint32* ds t, const scale2x_uint |
669 "movq %%mm1, %%mm5\n" | 345 "movq %%mm1, %%mm5\n" |
670 "pcmpeqd %%mm6, %%mm2\n" | 346 "pcmpeqd %%mm6, %%mm2\n" |
671 "pcmpeqd %%mm6, %%mm4\n" | 347 "pcmpeqd %%mm6, %%mm4\n" |
672 +#if defined(__x86_64__) | 348 +#if defined(__x86_64__) |
673 + "pcmpeqd %%nacl:(%%r15,%q2), %%mm3\n" | 349 + "pcmpeqd %%nacl:(%%r15,%q2), %%mm3\n" |
674 + "pcmpeqd %%nacl:(%%r15,%q2), %%mm5\n" | 350 + "pcmpeqd %%nacl:(%%r15,%q2), %%mm5\n" |
675 +#else | 351 +#else |
676 "pcmpeqd (%2), %%mm3\n" | 352 "pcmpeqd (%2), %%mm3\n" |
677 "pcmpeqd (%2), %%mm5\n" | 353 "pcmpeqd (%2), %%mm5\n" |
678 +#endif | 354 +#endif |
679 "pandn %%mm2, %%mm3\n" | 355 "pandn %%mm2, %%mm3\n" |
680 "pandn %%mm4, %%mm5\n" | 356 "pandn %%mm4, %%mm5\n" |
681 "movq %%mm0, %%mm2\n" | 357 "movq %%mm0, %%mm2\n" |
682 @@ -413,8 +468,13 @@ | 358 @@ -401,8 +456,13 @@ static inline void scale2x_32_mmx_single(scale2x_uint32* ds t, const scale2x_uint |
683 "movq %%mm2, %%mm3\n" | 359 "movq %%mm2, %%mm3\n" |
684 "punpckldq %%mm4, %%mm2\n" | 360 "punpckldq %%mm4, %%mm2\n" |
685 "punpckhdq %%mm4, %%mm3\n" | 361 "punpckhdq %%mm4, %%mm3\n" |
686 +#if defined(__x86_64__) | 362 +#if defined(__x86_64__) |
687 + "movq %%mm2, %%nacl:(%%r15,%q3)\n" | 363 + "movq %%mm2, %%nacl:(%%r15,%q3)\n" |
688 + "movq %%mm3, %%nacl:8(%%r15,%q3)\n" | 364 + "movq %%mm3, %%nacl:8(%%r15,%q3)\n" |
689 +#else | 365 +#else |
690 "movq %%mm2, (%3)\n" | 366 "movq %%mm2, (%3)\n" |
691 "movq %%mm3, 8(%3)\n" | 367 "movq %%mm3, 8(%3)\n" |
692 +#endif | 368 +#endif |
693 | 369 |
694 /* next */ | 370 /* next */ |
695 "add $8, %0\n" | 371 "add $8, %0\n" |
OLD | NEW |