aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backends/intern.h3
-rw-r--r--base/engine.cpp6
-rw-r--r--base/engine.h2
-rw-r--r--base/gameDetector.cpp13
-rw-r--r--base/main.cpp21
-rw-r--r--common/array.h7
-rw-r--r--common/config-file.cpp2
-rw-r--r--common/config-manager.cpp4
-rw-r--r--common/debugger.cpp2
-rw-r--r--common/debugger.h5
-rw-r--r--common/list.h7
-rw-r--r--common/map.h7
-rw-r--r--common/scummsys.h28
-rw-r--r--common/singleton.h8
-rw-r--r--common/system.cpp2
-rw-r--r--common/util.cpp7
-rw-r--r--graphics/surface.h3
-rw-r--r--gui/console.cpp2
-rw-r--r--gui/credits.h6
-rw-r--r--gui/newgui.cpp5
-rw-r--r--queen/debug.cpp1
-rw-r--r--queen/debug.h1
-rw-r--r--scumm/dialogs.cpp10
-rw-r--r--scumm/imuse.cpp6
-rw-r--r--scumm/logic_he.cpp19
-rw-r--r--scumm/player_nes.h8
-rw-r--r--scumm/smush/smush_player.cpp2
-rw-r--r--scumm/thumbnail.cpp2
-rw-r--r--simon/debugger.h1
-rw-r--r--simon/simon.cpp9
-rw-r--r--sky/debug.cpp2
-rw-r--r--sky/debug.h1
-rw-r--r--sound/fmopl.cpp4
-rw-r--r--sound/mididrv.cpp8
-rwxr-xr-xtools/credits.pl3
35 files changed, 168 insertions, 49 deletions
diff --git a/backends/intern.h b/backends/intern.h
index 56b78d14c8..5b8f712ee1 100644
--- a/backends/intern.h
+++ b/backends/intern.h
@@ -37,12 +37,15 @@ extern OSystem *OSystem_MAC_create(int gfx_mode, bool full_screen);
extern OSystem *OSystem_GP32_create();
extern OSystem *OSystem_PALMOS_create();
extern OSystem *OSystem_PS2_create();
+extern OSystem *OSystem_SymbianOS_create();
#ifdef _WIN32_WCE
#define SAMPLES_PER_SEC 22050
#define SAMPLES_PER_SEC_OLD 11025
#define SAMPLES_PER_SEC_NEW 22050
+#elif defined(__SYMBIAN32__)
+#define SAMPLES_PER_SEC 16000
#elif defined(__PLAYSTATION2__)
#define SAMPLES_PER_SEC 48000 // the SPU can't handle anything else
#else
diff --git a/base/engine.cpp b/base/engine.cpp
index f48ca83c96..824d1a15f8 100644
--- a/base/engine.cpp
+++ b/base/engine.cpp
@@ -193,13 +193,17 @@ void CDECL warning(const char *s, ...) {
va_list va;
va_start(va, s);
+#ifdef __SYMBIAN32__
+ vsprintf(buf, s, va);
+#else
vsnprintf(buf, STRINGBUFLEN, s, va);
+#endif
va_end(va);
#ifdef __GP32__ //ph0x FIXME: implement fprint?
printf("WARNING: %s\n", buf);
#else
-#ifndef _WIN32_WCE
+#if !defined (_WIN32_WCE) && !defined (__SYMBIAN32__)
fprintf(stderr, "WARNING: %s!\n", buf);
#endif
#endif
diff --git a/base/engine.h b/base/engine.h
index 42212be230..4a0cc7aadb 100644
--- a/base/engine.h
+++ b/base/engine.h
@@ -20,7 +20,7 @@
#ifndef ENGINE_H
#define ENGINE_H
-
+#include "stdafx.h"
#include "common/scummsys.h"
#include "common/str.h"
diff --git a/base/gameDetector.cpp b/base/gameDetector.cpp
index 0195c13f14..c38e4c4232 100644
--- a/base/gameDetector.cpp
+++ b/base/gameDetector.cpp
@@ -48,7 +48,7 @@
#endif
// DONT FIXME: DO NOT ORDER ALPHABETICALLY, THIS IS ORDERED BY IMPORTANCE/CATEGORY! :)
-#ifdef __PALM_OS__
+#if defined(__PALM_OS__) || defined(__SYMBIAN32__)
static const char USAGE_STRING[] = "NoUsageString"; // save more data segment space
#else
static const char USAGE_STRING[] =
@@ -194,7 +194,12 @@ GameDetector::GameDetector() {
#endif
_dumpScripts = false;
+
+#if defined(__SYMBIAN32__)
+ _force1xOverlay = true;
+#else
_force1xOverlay = false;
+#endif
memset(&_game, 0, sizeof(_game));
_plugin = 0;
@@ -588,15 +593,15 @@ bool GameDetector::detectGame() {
realGame = ConfMan.get("gameid");
else
realGame = _targetName;
- printf("Looking for %s\n", realGame.c_str());
+ debug(1, "Looking for %s\n", realGame.c_str());
_game = findGame(realGame, &_plugin);
if (_game.name) {
- printf("Trying to start game '%s'\n", _game.description);
+ debug(1, "Trying to start game '%s'\n", _game.description);
return true;
} else {
- printf("Failed game detection\n");
+ debug(1, "Failed game detection\n");
return false;
}
}
diff --git a/base/main.cpp b/base/main.cpp
index ed364da20f..224681896d 100644
--- a/base/main.cpp
+++ b/base/main.cpp
@@ -136,6 +136,9 @@ const char* stackCookie = "$STACK: 655360\0";
#include <cstdio>
#define STDOUT_FILE TEXT("stdout.txt")
#define STDERR_FILE TEXT("stderr.txt")
+#elif defined(__SYMBIAN32__) // Symbian does not like any output to the console through any *print* function
+#define STDOUT_FILE SYMBIAN32_DOC_DIR "scummvm.stdout.txt"
+#define STDERR_FILE SYMBIAN32_DOC_DIR "scummvm.stderr.txt"
#endif
#if defined(QTOPIA)
@@ -143,7 +146,7 @@ const char* stackCookie = "$STACK: 655360\0";
extern "C" int main(int argc, char *argv[]);
#endif
-#if defined(MACOSX) || defined(QTOPIA)
+#if defined(MACOSX) || defined(QTOPIA) || defined(__SYMBIAN32__)
#include <SDL.h>
#elif !defined(__MORPHOS__) && !defined(__DC__) && !defined(__GP32__)
#undef main
@@ -315,7 +318,8 @@ extern "C" int scummvm_main(int argc, char *argv[]) {
#else
extern "C" int main(int argc, char *argv[]) {
#endif
- char *cfgFilename = NULL, *s=argv[1];
+ char *cfgFilename = NULL;
+ char *s=NULL;//argv[1]; SumthinWicked says: cannot assume that argv!=NULL here! eg. Symbian's CEBasicAppUI::SDLStartL() calls as main(0,NULL), if you want to change plz #ifdef __SYMBIAN32__
bool running = true;
#if defined(UNIX)
@@ -324,7 +328,8 @@ extern "C" int main(int argc, char *argv[]) {
#endif
// Code copied from SDL_main
-#if defined(WIN32) && defined(NO_CONSOLE)
+#if (defined(WIN32) && defined(NO_CONSOLE)) || defined(__SYMBIAN32__)
+// Symbian does not like any output to the console through any *print* function
/* Flush the output in case anything is queued */
fclose(stdout);
@@ -353,7 +358,9 @@ extern "C" int main(int argc, char *argv[]) {
}
#endif
}
+#ifndef __SYMBIAN32__ // fcn not supported on Symbian
setlinebuf(stdout); /* Line buffered */
+#endif
setbuf(stderr, NULL); /* No buffering */
#endif //defined(WIN32) && defined(USE_CONSOLE)
@@ -490,7 +497,11 @@ void CDECL debug(int level, const char *s, ...) {
return;
va_start(va, s);
+#ifdef __SYMBIAN32__
+ vsprintf(buf, s, va);
+#else
vsnprintf(buf, STRINGBUFLEN, s, va);
+#endif
va_end(va);
debugHelper(buf);
@@ -501,7 +512,11 @@ void CDECL debug(const char *s, ...) {
va_list va;
va_start(va, s);
+#ifdef __SYMBIAN32__
+ vsprintf(buf, s, va);
+#else
vsnprintf(buf, STRINGBUFLEN, s, va);
+#endif
va_end(va);
debugHelper(buf);
diff --git a/common/array.h b/common/array.h
index 8116e94c9a..63b7fca533 100644
--- a/common/array.h
+++ b/common/array.h
@@ -47,7 +47,12 @@ public:
_data[i] = array._data[i];
}
- ~Array<T>() {
+#ifdef __SYMBIAN32__
+ ~Array()
+#else
+ ~Array<T>()
+#endif
+ {
if (_data)
delete [] _data;
}
diff --git a/common/config-file.cpp b/common/config-file.cpp
index bec91a789e..5ce5ca4d8d 100644
--- a/common/config-file.cpp
+++ b/common/config-file.cpp
@@ -250,7 +250,7 @@ void ConfigFile::removeKey(const String &key, const String &section) {
Section *s = getSection(section);
if (s)
- return s->removeKey(key);
+ s->removeKey(key);
}
bool ConfigFile::getKey(const String &key, const String &section, String &value) const {
diff --git a/common/config-manager.cpp b/common/config-manager.cpp
index 8cd2ed3222..0d11ec6dd3 100644
--- a/common/config-manager.cpp
+++ b/common/config-manager.cpp
@@ -86,13 +86,15 @@ void ConfigManager::loadDefaultConfigFile() {
else
strcpy(configFile, DEFAULT_CONFIG_FILE);
#else
- #if defined (WIN32) && !defined(_WIN32_WCE)
+ #if defined (WIN32) && !defined(_WIN32_WCE) && !defined(__SYMBIAN32__)
GetWindowsDirectory(configFile, MAXPATHLEN);
strcat(configFile, "\\" DEFAULT_CONFIG_FILE);
#elif defined(__PALM_OS__)
strcpy(configFile,"/PALM/Programs/ScummVM/" DEFAULT_CONFIG_FILE);
#elif defined(__PLAYSTATION2__)
strcpy(configFile, "mc0:ScummVM/" DEFAULT_CONFIG_FILE);
+ #elif defined (__SYMBIAN32__)
+ strcpy(configFile, SYMBIAN32_DOC_DIR DEFAULT_CONFIG_FILE);
#else
strcpy(configFile, DEFAULT_CONFIG_FILE);
#endif
diff --git a/common/debugger.cpp b/common/debugger.cpp
index 8d967a1792..360ce8489f 100644
--- a/common/debugger.cpp
+++ b/common/debugger.cpp
@@ -65,6 +65,7 @@ int Debugger<T>::DebugPrintf(const char *format, ...) {
return count;
}
+#ifndef __SYMBIAN32__ // gcc/UIQ doesn't like the debugger code for some reason? Actually get a cc1plus core dump here :)
template <class T>
void Debugger<T>::attach(const char *entry) {
@@ -105,6 +106,7 @@ void Debugger<T>::onFrame() {
detach();
}
}
+#endif // of ifndef __SYMBIAN32__ // gcc/UIQ doesn't like the debugger code for some reason? Actually get a cc1plus core dump here :)
// Main Debugger Loop
template <class T>
diff --git a/common/debugger.h b/common/debugger.h
index d93b6175a5..bf028a9cb5 100644
--- a/common/debugger.h
+++ b/common/debugger.h
@@ -38,9 +38,14 @@ public:
int DebugPrintf(const char *format, ...);
+#ifndef __SYMBIAN32__ // gcc/UIQ doesn't like the debugger code for some reason? Actually get a cc1plus core dump here :)
virtual void onFrame();
virtual void attach(const char *entry = 0);
+#else
+ void onFrame() {}
+ void attach(const char *entry = 0) {}
+#endif
bool isAttached() const { return _isAttached; }
protected:
diff --git a/common/list.h b/common/list.h
index 7de13c2f91..03d6076635 100644
--- a/common/list.h
+++ b/common/list.h
@@ -121,7 +121,12 @@ public:
insert(begin(), list.begin(), list.end());
}
- ~List<T>() {
+#ifndef __SYMBIAN32__
+ ~List<T>()
+#else
+ ~List()
+#endif
+ {
clear();
delete _anchor;
}
diff --git a/common/map.h b/common/map.h
index ad264580a5..0dac581bd2 100644
--- a/common/map.h
+++ b/common/map.h
@@ -110,7 +110,12 @@ public:
_header->_right = _header->_left = _header;
}
- virtual ~Map<Key, Value, Comparator>() {
+#ifndef __SYMBIAN32__
+ virtual ~Map<Key, Value, Comparator>()
+#else
+ ~Map()
+#endif
+ {
clearNodes(_root);
delete _header;
_root = _header = 0;
diff --git a/common/scummsys.h b/common/scummsys.h
index a0ba3622c1..b1d7c13166 100644
--- a/common/scummsys.h
+++ b/common/scummsys.h
@@ -38,6 +38,11 @@
#define PI 3.14159265358979323846
#endif
+// make sure we really are compiling for WIN32
+#ifndef WIN32
+#undef _MSC_VER
+#endif
+
#if defined(_MSC_VER)
#define scumm_stricmp stricmp
@@ -289,6 +294,29 @@
typedef unsigned char byte;
typedef unsigned int uint;
#endif
+#elif defined __SYMBIAN32__ // AnotherGuest / Sprawl / SumthinWicked
+
+ #define scumm_stricmp strcasecmp
+ #define scumm_strnicmp strncasecmp
+
+ #define CDECL
+ #define SCUMM_NEED_ALIGNMENT
+ #define SCUMM_LITTLE_ENDIAN
+ #define CHECK_HEAP
+
+ #define FORCEINLINE inline
+ #define _HEAPOK 0
+ typedef unsigned char byte;
+ typedef unsigned char uint8;
+ typedef unsigned short int uint16;
+ typedef unsigned long int uint32;
+ typedef unsigned int uint;
+ typedef signed char int8;
+ typedef signed short int int16;
+ typedef signed long int int32;
+
+ #define START_PACK_STRUCTS pack (push,1)
+ #define END_PACK_STRUCTS pack(pop)
#else
#error No system type defined
#endif
diff --git a/common/singleton.h b/common/singleton.h
index 5be31e2c24..dec2844124 100644
--- a/common/singleton.h
+++ b/common/singleton.h
@@ -45,7 +45,7 @@ private:
* and you specialise makeInstance to return an instance of a subclass.
*/
//template <class T>
-#if defined (_WIN32_WCE) || defined (_MSC_VER)
+#if defined (_WIN32_WCE) || defined (_MSC_VER) || defined (__WINS__)
//FIXME evc4 and msvc7 doesn't like it as private member
public:
#endif
@@ -69,7 +69,11 @@ public:
}
protected:
Singleton<T>() { }
- virtual ~Singleton<T>() { }
+#ifdef __SYMBIAN32__
+ virtual ~Singleton() { }
+#else
+ virtual ~Singleton<T>() { }
+#endif
typedef T SingletonBaseType;
};
diff --git a/common/system.cpp b/common/system.cpp
index 16b707e79e..1a717f292b 100644
--- a/common/system.cpp
+++ b/common/system.cpp
@@ -56,6 +56,8 @@ OSystem *OSystem::makeInstance() {
return OSystem_PALMOS_create();
#elif defined(__PLAYSTATION2__)
return OSystem_PS2_create();
+#elif defined(__SYMBIAN32__) // SumthinWicked / Sprawl
+ return OSystem_SymbianOS_create();
#else
/* SDL is the default driver for now */
return OSystem_SDL_create();
diff --git a/common/util.cpp b/common/util.cpp
index b1b657462e..831284d428 100644
--- a/common/util.cpp
+++ b/common/util.cpp
@@ -82,7 +82,12 @@ void hexdump(const byte * data, int len, int bytesPerLine) {
RandomSource::RandomSource() {
// Use system time as RNG seed. Normally not a good idea, if you are using
// a RNG for security purposes, but good enough for our purposes.
- setSeed(time(0));
+#if defined (__SYMBIAN32__) && defined (__WINS__)
+ uint32 seed = 0; // Symbian produces RT crash on time(0)
+#else
+ uint32 seed = time(0);
+#endif
+ setSeed(seed);
}
void RandomSource::setSeed(uint32 seed) {
diff --git a/graphics/surface.h b/graphics/surface.h
index fcdadf3b4a..2e98ec0bef 100644
--- a/graphics/surface.h
+++ b/graphics/surface.h
@@ -40,7 +40,8 @@ struct Surface {
Surface() : pixels(0), w(0), h(0), pitch(0), bytesPerPixel(0) {}
inline const void *getBasePtr(int x, int y) const {
- return static_cast<const void *>(static_cast<const byte *>(pixels) + y * pitch + x * bytesPerPixel);
+ // SumthinWicked says: I was getting a typecast error here from GCC/UIQ: might need an #ifdef __SYMBIAN32__
+ return static_cast<const void *>(static_cast<byte *>(pixels) + y * pitch + x * bytesPerPixel);
}
inline void *getBasePtr(int x, int y) {
diff --git a/gui/console.cpp b/gui/console.cpp
index 03163fb7ca..34dd303a31 100644
--- a/gui/console.cpp
+++ b/gui/console.cpp
@@ -542,6 +542,8 @@ int ConsoleDialog::vprintf(const char *format, va_list argptr) {
#if defined(WIN32)
int count = _vsnprintf(buf, sizeof(buf), format, argptr);
+#elif defined(__SYMBIAN32__)
+ int count = vsprintf(buf, format, argptr);
#else
int count = vsnprintf(buf, sizeof(buf), format, argptr);
#endif
diff --git a/gui/credits.h b/gui/credits.h
index 305b589dfa..51e7a17726 100644
--- a/gui/credits.h
+++ b/gui/credits.h
@@ -40,6 +40,8 @@ static const char *credits[] = {
"\\L\\c2"" MT-32 emulator",
"\\L\\c0"" Jochen Hoenicke",
"\\L\\c2"" Speaker & PCjr sound support, Adlib work",
+"\\L\\c0"" Jurgen Braam",
+"\\L\\c2"" Port: EPOC/SymbianOS maintainer",
"\\L\\c0""",
"\\C\\c1""Retired Team Members:",
"\\L\\c0"" Ralph Brorsen",
@@ -105,6 +107,10 @@ static const char *credits[] = {
"\\L\\c2"" SDL-based OpenGL renderer",
"\\L\\c0"" Tim ???",
"\\L\\c2"" Initial MI1 CD music support",
+"\\L\\c0"" Andreas Karlsson",
+"\\L\\c2"" Port: EPOC/SymbianOS, ESDL",
+"\\L\\c0"" Lars Persson",
+"\\L\\c2"" Port: EPOC/SymbianOS, Audio System, Alignment fixes, ESDL",
"\\L\\c0""",
"\\L\\c0""And to all the contributors, users, and beta testers we've missed. Thanks!",
"\\L\\c0""",
diff --git a/gui/newgui.cpp b/gui/newgui.cpp
index fcaa45c819..5b8ab36ffc 100644
--- a/gui/newgui.cpp
+++ b/gui/newgui.cpp
@@ -48,6 +48,11 @@ enum {
kKeyRepeatSustainDelay = 100
};
+#if defined(__SYMBIAN32__) // Testing: could be removed? Just making sure that an CVS update doesn't break my code :P
+#define USE_AUTO_SCALING false
+#else
+#define USE_AUTO_SCALING false
+#endif
// Constructor
NewGui::NewGui() : _needRedraw(false),
diff --git a/queen/debug.cpp b/queen/debug.cpp
index 26840975ea..d01d941eda 100644
--- a/queen/debug.cpp
+++ b/queen/debug.cpp
@@ -51,6 +51,7 @@ Debugger::Debugger(QueenEngine *vm)
DCmd_Register("song", &Debugger::Cmd_Song);
}
+Debugger::~Debugger() {} // we need this here for __SYMBIAN32__
void Debugger::preEnter() {
}
diff --git a/queen/debug.h b/queen/debug.h
index fd61f3c5bf..f4ecbda9a0 100644
--- a/queen/debug.h
+++ b/queen/debug.h
@@ -32,6 +32,7 @@ class Debugger : public Common::Debugger<Debugger> {
public:
Debugger(QueenEngine *vm);
+ virtual ~Debugger(); // we need this here for __SYMBIAN32__ archaic gcc/UIQ
int flags() const { return _flags; }
diff --git a/scumm/dialogs.cpp b/scumm/dialogs.cpp
index 3f79b18d65..cba5ed83d9 100644
--- a/scumm/dialogs.cpp
+++ b/scumm/dialogs.cpp
@@ -214,8 +214,8 @@ public:
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
const String &getResultString() const;
- void setList(const StringList& list) { GUI::ChooserDialog::setList(list); }
- int runModal() { return GUI::ChooserDialog::runModal(); }
+ void setList(const StringList& list) { GUI_ChooserDialog::setList(list); }
+ int runModal() { return GUI_ChooserDialog::runModal(); }
};
SaveLoadChooser::SaveLoadChooser(const String &title, const String &buttonLabel, bool saveMode)
@@ -316,7 +316,7 @@ void SaveLoadChooserEx::setList(const StringList& list) {
int SaveLoadChooserEx::runModal() {
_gfxWidget->setGfx(0);
- int ret = GUI::Dialog::runModal();
+ int ret = Dialog::runModal();
return ret;
}
@@ -339,7 +339,7 @@ void SaveLoadChooserEx::handleCommand(CommandSender *sender, uint32 cmd, uint32
close();
break;
case GUI::kListSelectionChangedCmd: {
- const Graphics::Surface *thumb;
+ Graphics::Surface *thumb;
thumb = _scumm->loadThumbnailFromSlot(_saveMode ? selItem + 1 : selItem);
_gfxWidget->setGfx(thumb);
delete thumb;
@@ -357,7 +357,7 @@ void SaveLoadChooserEx::handleCommand(CommandSender *sender, uint32 cmd, uint32
case kCloseCmd:
setResult(-1);
default:
- GUI::Dialog::handleCommand(sender, cmd, data);
+ Dialog::handleCommand(sender, cmd, data);
}
}
diff --git a/scumm/imuse.cpp b/scumm/imuse.cpp
index a06395b064..a27db42e00 100644
--- a/scumm/imuse.cpp
+++ b/scumm/imuse.cpp
@@ -1263,7 +1263,7 @@ void IMuseInternal::initMT32(MidiDriver *midi) {
void IMuseInternal::initGM(MidiDriver *midi) {
byte buffer[11];
-
+ int i=0;
// General MIDI System On message
// Resets all GM devices to default settings
memcpy(&buffer[0], "\xF0\x7E\x7F\x09\x01\xF7", 6);
@@ -1321,13 +1321,13 @@ void IMuseInternal::initGM(MidiDriver *midi) {
// Set Channels 1-16 Reverb to 64, which is the
// equivalent of MT-32 default Reverb Level 5
- for (int i = 0; i < 16; ++i)
+ for (i = 0; i < 16; ++i)
midi->send(( 64 << 16) | (91 << 8) | (0xB0 | i));
debug(2, "GM Controller 91 Change: Channels 1-16 Reverb Level is 64");
// Set Channels 1-16 Pitch Bend Sensitivity to
// 12 semitones; then lock the RPN by setting null.
- for (int i = 0; i < 16; ++i) {
+ for (i = 0; i < 16; ++i) {
midi->send(( 0 << 16) | (100 << 8) | (0xB0 | i));
midi->send(( 0 << 16) | (101 << 8) | (0xB0 | i));
midi->send(( 12 << 16) | (6 << 8) | (0xB0 | i));
diff --git a/scumm/logic_he.cpp b/scumm/logic_he.cpp
index db1a88ec85..9909fbb0a3 100644
--- a/scumm/logic_he.cpp
+++ b/scumm/logic_he.cpp
@@ -401,8 +401,9 @@ int32 LogicHEfunshop::dispatch(int op, int numArgs, int32 *args) {
void LogicHEfunshop::op_1004(int32 *args) {
double data[8], at, sq;
int32 x, y;
+ int i=0;
- for (int i = 0; i <= 6; i += 2) {
+ for (i = 0; i <= 6; i += 2) {
data[i] = getFromArray(args[0], 0, 519 + i);
data[i + 1] = getFromArray(args[0], 0, 519 + i + 1);
}
@@ -414,14 +415,14 @@ void LogicHEfunshop::op_1004(int32 *args) {
return;
}
- for (int i = 0; i <= 6; i += 2) {
+ for (i = 0; i <= 6; i += 2) {
data[i] -= (double)x;
data[i + 1] -= (double)y;
}
double a1 = (double)args[1] * DEG2RAD;
- for (int i = 0; i <= 6; i += 2) {
+ for (i = 0; i <= 6; i += 2) {
at = atan2(data[i + 1], data[i]);
sq = hypot(data[i + 1], data[i]);
@@ -435,14 +436,14 @@ void LogicHEfunshop::op_1004(int32 *args) {
int minx = 2;
int miny = 3;
- for (int i = 0; i <= 6; i += 2) {
+ for (i = 0; i <= 6; i += 2) {
if (data[i] < data[minx])
minx = i;
if (data[i + 1] < data[miny])
miny = i + 1;
}
- for (int i = 0; i <= 6; i += 2) {
+ for (i = 0; i <= 6; i += 2) {
data[i] -= data[minx];
data[i + 1] -= data[miny];
@@ -454,8 +455,8 @@ void LogicHEfunshop::op_1004(int32 *args) {
void LogicHEfunshop::op_1005(int32 *args) {
double data[8];
double args1, args2;
-
- for (int i = 520; i <= 526; i += 2) {
+ int i=0;
+ for (i = 520; i <= 526; i += 2) {
data[i - 520] = getFromArray(args[0], 0, i - 1);
data[i - 520 + 1] = getFromArray(args[0], 0, i);
}
@@ -463,12 +464,12 @@ void LogicHEfunshop::op_1005(int32 *args) {
args1 = args[1] * 0.01 + 1;
args2 = args[2] * 0.01 + 1;
- for (int i = 0; i < 4; i++) {
+ for (i = 0; i < 4; i++) {
data[2 * i] *= args1;
data[2 * i + 1] *= args2;
}
- for (int i = 520; i <= 526; i += 2) {
+ for (i = 520; i <= 526; i += 2) {
putInArray(args[0], 0, i - 1, scumm_round(data[i - 520]));
putInArray(args[0], 0, i, scumm_round(data[i - 520 + 1]));
}
diff --git a/scumm/player_nes.h b/scumm/player_nes.h
index 1c5ec00c5e..ed939b0ab7 100644
--- a/scumm/player_nes.h
+++ b/scumm/player_nes.h
@@ -35,6 +35,10 @@ namespace Scumm {
class ScummEngine;
+static const int MAXVOLUME = 0x7F;
+static const int NUMSLOTS = 3;
+static const int NUMCHANS = 4;
+
/**
* Scumm NES sound/music driver.
*/
@@ -77,10 +81,6 @@ private:
int _current_sample;
int _maxvol;
- static const int MAXVOLUME = 0x7F;
- static const int NUMSLOTS = 3;
- static const int NUMCHANS = 4;
-
struct slot {
int framesleft;
int id;
diff --git a/scumm/smush/smush_player.cpp b/scumm/smush/smush_player.cpp
index fd5bc55315..8f8645b5f5 100644
--- a/scumm/smush/smush_player.cpp
+++ b/scumm/smush/smush_player.cpp
@@ -1198,8 +1198,8 @@ void SmushPlayer::tryCmpFile(const char *filename) {
if (i == NULL) {
error("invalid filename : %s", filename);
}
- char fname[260];
#ifdef USE_MAD
+ char fname[260];
memcpy(fname, filename, i - filename);
strcpy(fname + (i - filename), ".mp3");
_compressedFile.open(fname);
diff --git a/scumm/thumbnail.cpp b/scumm/thumbnail.cpp
index 701b651b31..ac760afab7 100644
--- a/scumm/thumbnail.cpp
+++ b/scumm/thumbnail.cpp
@@ -103,7 +103,9 @@ Graphics::Surface *ScummEngine::loadThumbnail(Common::InSaveFile *file) {
void ScummEngine::saveThumbnail(Common::OutSaveFile *file) {
Graphics::Surface thumb;
+#ifndef DISABLE_HQ_SCALERS // fcn has dep on HQ_SCALERS: thumbnail gets created as empty
if (!createThumbnailFromScreen(&thumb))
+#endif
thumb.create(kThumbnailWidth, kThumbnailHeight2, sizeof(uint16));
ThumbnailHeader header;
diff --git a/simon/debugger.h b/simon/debugger.h
index 975a4489a0..c4e230608e 100644
--- a/simon/debugger.h
+++ b/simon/debugger.h
@@ -31,6 +31,7 @@ class SimonEngine;
class Debugger : public Common::Debugger<Debugger> {
public:
Debugger(SimonEngine *vm);
+ virtual ~Debugger() {} // we need this for __SYMBIAN32__ archaic gcc/UIQ
protected:
SimonEngine *_vm;
diff --git a/simon/simon.cpp b/simon/simon.cpp
index ccb8ddfc6d..4a998fcc83 100644
--- a/simon/simon.cpp
+++ b/simon/simon.cpp
@@ -268,7 +268,7 @@ static const char* bad_versions[3] = {
SimonEngine::SimonEngine(GameDetector *detector, OSystem *syst)
: Engine(syst), midi(syst) {
-
+ int j =0;
_vcPtr = 0;
_vc_get_out_of_code = 0;
_gameOffsetsPtr = 0;
@@ -321,11 +321,11 @@ SimonEngine::SimonEngine(GameDetector *detector, OSystem *syst)
if (Common::md5_file(buf, md5sum)) {
char md5str[32+1];
- for (int j = 0; j < 16; j++) {
+ for (j = 0; j < 16; j++) {
sprintf(md5str + j*2, "%02x", (int)md5sum[j]);
}
- for (int j = 0; j < 3; j++) {
+ for (j = 0; j < 3; j++) {
if (!strcmp(md5str, bad_versions[j]))
error("Cracked versions aren't supported");
}
@@ -1697,6 +1697,7 @@ uint SimonEngine::get_fcs_ptr_3_index(FillOrCopyStruct *fcs) {
return i;
error("get_fcs_ptr_3_index: not found");
+ return 0;
}
void SimonEngine::lock() {
@@ -2280,6 +2281,7 @@ TextLocation *SimonEngine::getTextLocation(uint a) {
default:
error("text, invalid value %d", a);
}
+ return NULL;
}
void SimonEngine::o_print_str() {
@@ -3040,6 +3042,7 @@ uint SimonEngine::itemPtrToID(Item *id) {
if (_itemArrayPtr[i] == id)
return i;
error("itemPtrToID: not found");
+ return 0;
}
void SimonEngine::o_pathfind(int x, int y, uint var_1, uint var_2) {
diff --git a/sky/debug.cpp b/sky/debug.cpp
index 28b979f776..e33589f962 100644
--- a/sky/debug.cpp
+++ b/sky/debug.cpp
@@ -1290,6 +1290,8 @@ Debugger::Debugger(Logic *logic, Mouse *mouse, Screen *screen, SkyCompact *skyCo
DCmd_Register("section", &Debugger::Cmd_Section);
}
+Debugger::~Debugger() {} // we need this here for __SYMBIAN32__
+
void Debugger::preEnter() {
}
diff --git a/sky/debug.h b/sky/debug.h
index 30908693be..6eb5b6c0b3 100644
--- a/sky/debug.h
+++ b/sky/debug.h
@@ -36,6 +36,7 @@ class SkyCompact;
class Debugger : public Common::Debugger<Debugger> {
public:
Debugger(Logic *logic, Mouse *mouse, Screen *screen, SkyCompact *skyCompact);
+ virtual ~Debugger(); // we need this here for __SYMBIAN32__ archaic gcc/UIQ
bool showGrid() { return _showGrid; }
protected:
diff --git a/sound/fmopl.cpp b/sound/fmopl.cpp
index 1ebe1b0348..40a73e465e 100644
--- a/sound/fmopl.cpp
+++ b/sound/fmopl.cpp
@@ -34,7 +34,7 @@
#include "common/util.h"
-#ifdef _WIN32_WCE
+#if defined (_WIN32_WCE)|| defined (__SYMBIAN32__)
#include "common/config-manager.h"
#endif
@@ -1167,7 +1167,7 @@ FM_OPL *makeAdlibOPL(int rate) {
// We need to emulate one YM3812 chip
int env_bits = FMOPL_ENV_BITS_HQ;
int eg_ent = FMOPL_EG_ENT_HQ;
-#ifdef _WIN32_WCE
+#if defined (_WIN32_WCE)|| defined(__SYMBIAN32__)
if (ConfMan.hasKey("FM_high_quality") && ConfMan.getBool("FM_high_quality")) {
env_bits = FMOPL_ENV_BITS_HQ;
eg_ent = FMOPL_EG_ENT_HQ;
diff --git a/sound/mididrv.cpp b/sound/mididrv.cpp
index 424ed915e8..35da9cb015 100644
--- a/sound/mididrv.cpp
+++ b/sound/mididrv.cpp
@@ -33,7 +33,7 @@ static const struct MidiDriverDescription midiDrivers[] = {
{"auto", "Default", MD_AUTO},
{"null", "No music", MD_NULL},
-#if defined(WIN32) && !defined(_WIN32_WCE)
+#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__SYMBIAN32__)
{"windows", "Windows MIDI", MD_WINDOWS},
#endif
@@ -126,7 +126,7 @@ int MidiDriver::detectMusicDriver(int midiFlags) {
if (musicDriver == MD_AUTO || musicDriver < 0) {
if (midiFlags & MDT_PREFER_NATIVE) {
if (musicDriver == MD_AUTO) {
- #if defined(WIN32) && !defined(_WIN32_WCE)
+ #if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__SYMBIAN32__)
musicDriver = MD_WINDOWS; // MD_WINDOWS is default MidiDriver on windows targets
#elif defined(MACOSX)
musicDriver = MD_COREAUDIO;
@@ -134,7 +134,7 @@ int MidiDriver::detectMusicDriver(int midiFlags) {
musicDriver = MD_YPA1; // TODO : change this and use Zodiac driver when needed
#elif defined(__MORPHOS__)
musicDriver = MD_ETUDE;
- #elif defined(_WIN32_WCE) || defined(UNIX) || defined(X11_BACKEND)
+ #elif defined(_WIN32_WCE) || defined(UNIX) || defined(X11_BACKEND) || defined (__SYMBIAN32__)
// Always use MIDI emulation via adlib driver on CE and UNIX device
// TODO: We should, for the Unix targets, attempt to detect
@@ -195,7 +195,7 @@ MidiDriver *MidiDriver::createMidi(int midiDriver) {
case MD_ZODIAC: return MidiDriver_Zodiac_create();
#endif
#endif
-#if defined(WIN32) && !defined(_WIN32_WCE)
+#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__SYMBIAN32__)
case MD_WINDOWS: return MidiDriver_WIN_create();
#endif
#if defined(__MORPHOS__)
diff --git a/tools/credits.pl b/tools/credits.pl
index eb3b64c81b..7c35ce167d 100755
--- a/tools/credits.pl
+++ b/tools/credits.pl
@@ -337,6 +337,8 @@ begin_credits("Credits");
add_person("Hans-J&ouml;rg Frieden", "", "Port: AmigaOS 4");
add_person("Jerome Fisher", "KingGuppy", "MT-32 emulator");
add_person("Jochen Hoenicke", "hoenicke", "Speaker &amp; PCjr sound support, Adlib work");
+ add_person("Lars Persson", "AnotherGuest", "Port: EPOC/SymbianOS, ESDL");
+ add_person("Jurgen Braam", "SumthinWicked", "Port: EPOC/SymbianOS maintainer");
end_section();
@@ -374,6 +376,7 @@ begin_credits("Credits");
add_person("Johannes Schickel", "LordHoto", "Thumbnails for ScummEngine");
add_person("Andr&eacute; Souza", "", "SDL-based OpenGL renderer");
add_person("Tim ???", "realmz", "Initial MI1 CD music support");
+ add_person("Andreas Karlsson", "Sprawl", "Port: EPOC/SymbianOS");
end_section();