aboutsummaryrefslogtreecommitdiff
path: root/backends
diff options
context:
space:
mode:
authorLars Persson2005-06-21 20:19:39 +0000
committerLars Persson2005-06-21 20:19:39 +0000
commit7bded41f194331f309388afa5a30035927655f5d (patch)
tree394c4111912f6bb328ef0c0669aa4f7e9335fe11 /backends
parentfd8c94a2f372e64593657b1d02776d208af62bd0 (diff)
downloadscummvm-rg350-7bded41f194331f309388afa5a30035927655f5d.tar.gz
scummvm-rg350-7bded41f194331f309388afa5a30035927655f5d.tar.bz2
scummvm-rg350-7bded41f194331f309388afa5a30035927655f5d.zip
This is the submission of the Epoc/Symbian build files for
UIQ 2.1 UI Series 60 Series 80 Series 90/Nokia 7710 There is a dependency on ESdl for these devices. svn-id: r18427
Diffstat (limited to 'backends')
-rw-r--r--backends/epoc/README124
-rw-r--r--backends/epoc/ScummApp.cpp60
-rw-r--r--backends/epoc/ScummApp.h44
-rw-r--r--backends/epoc/ScummVm.hrh29
-rw-r--r--backends/epoc/SymbianOS.cpp199
-rw-r--r--backends/epoc/SymbianOS.h65
-rw-r--r--backends/epoc/build/.placeholder1
-rw-r--r--backends/epoc/build/S60/BLD.INF12
-rw-r--r--backends/epoc/build/S60/EScummVMS60.rss62
-rw-r--r--backends/epoc/build/S60/EScummVM_080.pkg36
-rw-r--r--backends/epoc/build/S60/EScummVM_S60.mmp113
-rw-r--r--backends/epoc/build/S60/EScummVM_S60_App.mmp47
-rw-r--r--backends/epoc/build/S60/ScummVMApp.cpp163
-rw-r--r--backends/epoc/build/S60/ScummVMApp.h79
-rw-r--r--backends/epoc/build/S80/BLD.INF12
-rw-r--r--backends/epoc/build/S80/EScummVM_080.pkg36
-rw-r--r--backends/epoc/build/S80/EScummVM_S80.mmp112
-rw-r--r--backends/epoc/build/S80/EScummVM_S80_App.mmp46
-rw-r--r--backends/epoc/build/S80/EScummvmS80.rss62
-rw-r--r--backends/epoc/build/S80/ScummVMApp.cpp163
-rw-r--r--backends/epoc/build/S80/ScummVMApp.h78
-rw-r--r--backends/epoc/build/S90/BLD.INF12
-rw-r--r--backends/epoc/build/S90/EScummVM_080.pkg36
-rw-r--r--backends/epoc/build/S90/EScummvmS90.rss62
-rw-r--r--backends/epoc/build/S90/EScummvm_S90.mmp112
-rw-r--r--backends/epoc/build/S90/EScummvm_S90_App.mmp46
-rw-r--r--backends/epoc/build/S90/ScummVMApp.cpp163
-rw-r--r--backends/epoc/build/S90/ScummVMApp.h78
-rw-r--r--backends/epoc/build/ScummVmAif.rss44
-rw-r--r--backends/epoc/build/UIQ/BLD.INF13
-rw-r--r--backends/epoc/build/UIQ/EScummVM.cer26
-rw-r--r--backends/epoc/build/UIQ/EScummVM.key20
-rw-r--r--backends/epoc/build/UIQ/EScummVM.rss62
-rw-r--r--backends/epoc/build/UIQ/EScummVM_080.pkg35
-rw-r--r--backends/epoc/build/UIQ/EScummVM_UIQ.mmp110
-rw-r--r--backends/epoc/build/epoc-libmad.zipbin0 -> 1564 bytes
-rw-r--r--backends/epoc/build/epoc-zlib.zipbin0 -> 1408 bytes
-rw-r--r--backends/epoc/build/make.bat46
-rw-r--r--backends/epoc/build/scummL.bmpbin0 -> 3126 bytes
-rw-r--r--backends/epoc/build/scummLm.bmpbin0 -> 630 bytes
-rw-r--r--backends/epoc/build/scummS.bmpbin0 -> 822 bytes
-rw-r--r--backends/epoc/build/scummSm.bmpbin0 -> 246 bytes
-rw-r--r--backends/epoc/build/scummvm_base.mmp136
-rw-r--r--backends/epoc/build/scummvm_gob.mmp69
-rw-r--r--backends/epoc/build/scummvm_queen.mmp69
-rw-r--r--backends/epoc/build/scummvm_scumm.mmp142
-rw-r--r--backends/epoc/build/scummvm_simon.mmp64
-rw-r--r--backends/epoc/build/scummvm_sky.mmp71
-rw-r--r--backends/epoc/build/updateMMPs.pl156
-rw-r--r--backends/epoc/portdefs.h78
50 files changed, 3193 insertions, 0 deletions
diff --git a/backends/epoc/README b/backends/epoc/README
new file mode 100644
index 0000000000..8c69a255e7
--- /dev/null
+++ b/backends/epoc/README
@@ -0,0 +1,124 @@
+
+ EScummVM - ScummVM ported to EPOC/SymbianOS
+
+ Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson
+ Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson
+ Copyright (C) 2005 Jurgen 'SumthinWicked' Braam
+ Copyright (C) 2005 ScummVM Team
+
+ $Id$
+
+
+About EScummVM
+--------------
+ The original ports (uptil 0.7.1) were made by Andreas Karlsson and Lars Persson.
+ The main transition to 0.8.0CVS and all relevant changes were done by Jurgen Braam.
+ Jurgen and Lars are currently working together to finalize the transfer to CVS.
+
+
+Nescessary components
+---------------------
+ Building EScummVM yourself using the UIQ 2.1 framework is not an easy task!
+ Lets just say the framework needs quite some time to set up and takes a while
+ to get used to. If you choose to continue you will need the following items:
+
+ - Symbian UIQ 2.1 Framework
+ http://www.symbian.com/developer/sdks_uiq.asp
+
+ - ECompXL, an EPOC application compression library
+ http://www.yipton.demon.co.uk/ecompxl/latest/readme.html
+
+ - libsdl, Simple Directmedia Layer, a cross-platform multimedia library
+ http://www.libsdl.org/ (see note about ESDL below)
+
+ - libmad, a high-quality MPEG audio decoder
+ http://www.underbit.com/products/mad/
+
+ - zlib, a massively spiffy yet delicately unobtrusive compression library
+ http://www.zlib.net/
+
+ These are probably too heavy-duty for your phone:
+
+ - libogg, the free media file container format
+ http://www.xiph.org/ogg/
+
+ - libvorbis, the free audio codec
+ http://www.vorbis.com/
+
+ - flac, the Free Lossless Audio Codec
+ http://flac.sourceforge.net/
+
+ - libmpeg2, a free MPEG-2 video stream decoder
+ http://libmpeg2.sourceforge.net/
+
+
+Building EScummVM
+-----------------
+ ECompXL: this is a tool that will compress your executable with GZIP and glue
+ it to a predefined loader app. The app will uncompress your application at
+ runtime and run it without you even knowing it. A really interesting byproduct
+ of this method is that the general restriction of not having any writeable
+ static data (WSD) for Symbian APP executables no longer applies. This makes
+ the life of an EPOC porter a lot easier! To install this tool you need to add
+ its \bin path to your PATH above the sybmian epocs32\tools path, so that ECompXL's
+ PETRAN.EXE will be the executable that is started.
+
+ SDL: the latest varsion of SDL at this point in time is 1.2.8. This version
+ works great for compiling on other platforms, but for EPOC it lacks some
+ features. There are two distributions that have the nescessary goods: The one
+ made for SuperWaba (http://www.newlc.com/article.php3?id_article=574 and
+ http://www.superwaba.com/) and ESDL, the one that Sprawl made for the P800/P900. I've
+ used Sprawl's version uptil now. If Sprawl feels ESDL is in such a state that
+ it can be released, he will post a source download on his site and I will
+ make it know through the scummvm.org site. In <DevRoot>/sdl/epoc/ go:
+ > bldmake bldfiles
+ > abld build
+
+ zlib: the zlib-x.x.x.tar.gz does not come with UIQ .mpp build files, that's why
+ I added them for you in epoc-zlib.zip. Extract in <DevRoot>/zlib/ which will
+ create the epoc dir. In <DevRoot>/zlib/epoc/ go:
+ > bldmake bldfiles
+ > abld build
+
+ libmad: the libmad-x.x.x.tar.gz does not come with UIQ .mpp build files, that's
+ why I added them for you in epoc-libmad.zip. Extract in <DevRoot>/libmad/ which
+ will create the epoc dir. In <DevRoot>/libmad/epoc/ go:
+ > bldmake bldfiles
+ > abld build
+
+ EScummVM: make sure the SYSTEMINCLUDE dirs in EScumVM.mmp are correct. For the
+ 'wins' platform also check the LIBRARY entries for the correct path to your MSVC
+ installation. Please note that you can only specify relative paths here, so every-
+ thing needs to be on the same physical drive! Another weird demand of the UIQ
+ platform... In <DevRoot>/scummvm/backends/epoc/build/ go:
+ > bldmake bldfiles
+ > abld build
+ > makesis EScummVM_xxx.pkg
+
+ Now you should have yourself a nice EScummVM_xxx.sis installer package for use
+ on your phone. Please note that for development it will be a lot faster if you
+ transfer the ESCUMMVM.APP file directly to your !:\system\apps\EScummVM\ dir!
+
+ Platforms can be one of: ARMi, ARM4, THUMB, WINS. The SE P900 uses the ARMi platform,
+ which is a combined ARM4/THUMB programming mode. Configurations can be one of:
+ UREL or UDEB.
+
+
+Greetz & such
+-------------
+ Kudos fly out to:
+ - Sprawl for having the nerve to start & carry this puppy for so long
+ - AnotherGuest for having the nerve to start & carry this puppy for so long
+ - Fingolfin for taking the time to go through 1000 patch versions with me
+ - Myself (SumthinWicked), for writing this entire README :)
+ - the entire ScummVM Dev team for making a kicka$$ program
+ - the folks in #scummvm @ irc.freenode.net for their help, confort and support
+ - everybody else who wants to give me 'the look' for not including them here :P
+
+
+ it's been swell,
+ gotta go now,
+
+ greetz,
+ SumthinWicked & Anotherguest
+ \ No newline at end of file
diff --git a/backends/epoc/ScummApp.cpp b/backends/epoc/ScummApp.cpp
new file mode 100644
index 0000000000..f4caa7ea33
--- /dev/null
+++ b/backends/epoc/ScummApp.cpp
@@ -0,0 +1,60 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+#include "ScummApp.h"
+
+#include "ScummVM.hrh"
+#ifdef __WINS__
+extern "C" int _chkstk(int /*a*/) {
+ return 1;
+}
+#endif
+#if !defined (__AVKON_ELAF__) && !defined (S60)
+// this function is called by Symbian to deliver the new CApaApplication object
+EXPORT_C CApaApplication* NewApplication() {
+ // Return pointer to newly created CQMApp
+ return (new CScummApp);
+}
+#endif
+
+GLDEF_C TInt E32Dll(TDllReason) {
+ return KErrNone;
+}
+
+CScummApp::CScummApp() {
+}
+
+CScummApp::~CScummApp() {
+}
+
+/**
+ * Responsible for returning the unique UID of this application
+ * @return unique UID for this application in a TUid
+ **/
+TUid CScummApp::AppDllUid() const {
+ return TUid::Uid(ScummUid);
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/backends/epoc/ScummApp.h b/backends/epoc/ScummApp.h
new file mode 100644
index 0000000000..af44952b16
--- /dev/null
+++ b/backends/epoc/ScummApp.h
@@ -0,0 +1,44 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+#ifndef ScummAPPH
+#define ScummAPPH
+
+#include <eikapp.h>
+#include <e32base.h>
+#include <sdlapp.h>
+#if!defined (__AVKON_ELAF__) && !defined(S60)
+#include "ECompXL.h"
+#endif
+
+class CScummApp:public CSDLApp {
+public:
+ CScummApp();
+ ~CScummApp();
+
+ TUid AppDllUid() const;
+#if!defined (__AVKON_ELAF__) && !defined(S60)
+ TECompXL iECompXL;
+#endif
+};
+#endif
diff --git a/backends/epoc/ScummVm.hrh b/backends/epoc/ScummVm.hrh
new file mode 100644
index 0000000000..3eb4dab62d
--- /dev/null
+++ b/backends/epoc/ScummVm.hrh
@@ -0,0 +1,29 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+#ifndef ScummHRH
+#define ScummHRH
+
+#define ScummUid 0x101f9b57
+
+#endif
diff --git a/backends/epoc/SymbianOS.cpp b/backends/epoc/SymbianOS.cpp
new file mode 100644
index 0000000000..55f52260a0
--- /dev/null
+++ b/backends/epoc/SymbianOS.cpp
@@ -0,0 +1,199 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+#include "SymbianOS.h"
+
+static const OSystem::GraphicsMode s_supportedGraphicsModes[] = {
+ {"1x", "Fullscreen", GFX_NORMAL},
+ {0, 0, 0}
+};
+
+OSystem *OSystem_SymbianOS_create() {
+ return new OSystem_SDL_Symbian();
+}
+
+
+#include "config-manager.h"
+
+extern Common::ConfigManager *g_config;
+
+OSystem_SDL_Symbian::OSystem_SDL_Symbian() :_channels(0),_stereo_mix_buffer(0){
+ ConfMan.set("FM_high_quality", false);
+ ConfMan.set("FM_medium_quality", true);
+// ConfMan.set("joystick_num",0); // S60 should have joystick_num set to 0 in the ini file
+ ConfMan.flushToDisk();
+}
+
+OSystem_SDL_Symbian::~OSystem_SDL_Symbian() {
+ delete []_stereo_mix_buffer;
+}
+
+int OSystem_SDL_Symbian::getDefaultGraphicsMode() const {
+ return GFX_NORMAL;
+}
+
+const OSystem::GraphicsMode *OSystem_SDL_Symbian::getSupportedGraphicsModes() const {
+ return s_supportedGraphicsModes;
+}
+
+// make sure we always go to normal, even if the string might be set wrong!
+bool OSystem_SDL_Symbian::setGraphicsMode(const char *name) {
+ // let parent OSystem_SDL handle it
+ return OSystem_SDL::setGraphicsMode(getDefaultGraphicsMode());
+}
+
+/*
+ * SumthinWicked says: the stuff below is copied from common/scaler.cpp,
+ * so we can skip compiling the scalers. ESDL still needs 1x and the scaler
+ * architecture because we inherit from OSystem_SDL.
+ */
+int gBitFormat = 565;
+void InitScalers(uint32 BitFormat) {} // called by OSystem_SDL functions, not relevant for ESDL
+
+/**
+ * Trivial 'scaler' - in fact it doesn't do any scaling but just copies the
+ * source to the destination.
+ */
+void Normal1x(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch,
+ int width, int height) {
+ while (height--) {
+ memcpy(dstPtr, srcPtr, 2 * width);
+ srcPtr += srcPitch;
+ dstPtr += dstPitch;
+ }
+}
+
+bool OSystem_SDL_Symbian::setSoundCallback(SoundProc proc, void *param) {
+
+ // First save the proc and param
+ _sound_proc_param = param;
+ _sound_proc = proc;
+ SDL_AudioSpec desired;
+ SDL_AudioSpec obtained;
+
+ memset(&desired, 0, sizeof(desired));
+
+ _samplesPerSec = 0;
+
+ if (ConfMan.hasKey("output_rate"))
+ _samplesPerSec = ConfMan.getInt("output_rate");
+
+ if (_samplesPerSec <= 0)
+ _samplesPerSec = SAMPLES_PER_SEC;
+
+ // Originally, we always used 2048 samples. This loop will produce the
+ // same result at 22050 Hz, and should hopefully produce something
+ // sensible for other frequencies. Note that it must be a power of two.
+
+ uint32 samples = 0x8000;
+
+ for (;;) {
+ if ((1000 * samples) / _samplesPerSec < 100)
+ break;
+ samples >>= 1;
+ }
+
+ desired.freq = _samplesPerSec;
+ desired.format = AUDIO_S16SYS;
+ desired.channels = 2;
+ desired.samples = (uint16)samples;
+#ifdef S60
+ desired.callback = symbianMixCallback;
+ desired.userdata = this;
+#else
+ desired.callback = proc;
+ desired.userdata = param;
+#endif
+ if (SDL_OpenAudio(&desired, &obtained) != 0) {
+ warning("Could not open audio device: %s", SDL_GetError());
+ return false;
+ }
+ // Note: This should be the obtained output rate, but it seems that at
+ // least on some platforms SDL will lie and claim it did get the rate
+ // even if it didn't. Probably only happens for "weird" rates, though.
+ _samplesPerSec = obtained.freq;
+ _channels = obtained.channels;
+
+ // Need to create mixbuffer for stereo mix to downmix
+ if(_channels != 2)
+ {
+ _stereo_mix_buffer = new byte [obtained.size*2];//*2 for stereo values
+ }
+
+ SDL_PauseAudio(0);
+ return true;
+}
+
+/**
+ * The mixer callback function, passed on to OSystem::setSoundCallback().
+ * This simply calls the mix() method.
+ */
+void OSystem_SDL_Symbian::symbianMixCallback(void *s, byte *samples, int len){
+ static_cast <OSystem_SDL_Symbian*>(s)->symbianMix(samples,len);
+}
+
+
+/**
+ * Actual mixing implementation
+ */
+void OSystem_SDL_Symbian::symbianMix(byte *samples, int len){
+
+
+ // If not stereo then we need to downmix
+ if(_channels != 2){
+ _sound_proc(_sound_proc_param,_stereo_mix_buffer,len*2);
+ int16* bitmixDst=(int16*)samples;
+ int16* bitmixSrc=(int16*)_stereo_mix_buffer;
+
+ for(int loop=len/2;loop>=0;loop--)
+ {
+ *bitmixDst=(*bitmixSrc+*(bitmixSrc+1))>>1;
+ bitmixDst++;
+ bitmixSrc+=2;
+ }
+ }
+ else
+ _sound_proc(_sound_proc_param,samples,len);
+
+}
+
+/*
+// probably don't need this anymore: will remove later
+#define EMPTY_SCALER_IMPLEMENTATION(x) \
+ void x(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, \
+ uint32 dstPitch, int width, int height) {}
+
+//EMPTY_SCALER_IMPLEMENTATION(_2xSaI);
+//EMPTY_SCALER_IMPLEMENTATION(Super2xSaI);
+//EMPTY_SCALER_IMPLEMENTATION(SuperEagle);
+EMPTY_SCALER_IMPLEMENTATION(AdvMame2x);
+EMPTY_SCALER_IMPLEMENTATION(AdvMame3x);
+//EMPTY_SCALER_IMPLEMENTATION(Normal1x);
+//EMPTY_SCALER_IMPLEMENTATION(Normal2x);
+//EMPTY_SCALER_IMPLEMENTATION(Normal3x);
+EMPTY_SCALER_IMPLEMENTATION(Normal1o5x);
+//EMPTY_SCALER_IMPLEMENTATION(TV2x);
+//EMPTY_SCALER_IMPLEMENTATION(DotMatrix);
+//EMPTY_SCALER_IMPLEMENTATION(HQ2x);
+//EMPTY_SCALER_IMPLEMENTATION(HQ3x);
+*/ \ No newline at end of file
diff --git a/backends/epoc/SymbianOS.h b/backends/epoc/SymbianOS.h
new file mode 100644
index 0000000000..abe72dc57d
--- /dev/null
+++ b/backends/epoc/SymbianOS.h
@@ -0,0 +1,65 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+#ifndef SDLSYMBIANH
+#define SDLSYMBIANH
+
+#include "sdl-common.h"
+
+class OSystem_SDL_Symbian : public OSystem_SDL {
+public:
+ OSystem_SDL_Symbian();
+ ~OSystem_SDL_Symbian();
+ int getDefaultGraphicsMode() const;
+ const OSystem::GraphicsMode *getSupportedGraphicsModes() const;
+ bool setGraphicsMode(const char *name);
+
+ // Set function that generates samples
+ /**
+ * This function is overridden by the symbian port in order to provide MONO audio
+ * downmix is done by supplying our own audiocallback
+ */
+ virtual bool setSoundCallback(SoundProc proc, void *param); // overloaded by CE backend
+protected:
+ /**
+ * The mixer callback function, passed on to OSystem::setSoundCallback().
+ * This simply calls the mix() method.
+ * and then does downmixing for symbian if needed
+ */
+ static void symbianMixCallback(void *s, byte *samples, int len);
+
+ /**
+ * Actual mixing implementation
+ */
+ void symbianMix(byte *samples, int len);
+
+ // Audio
+ int _channels;
+
+ SoundProc _sound_proc;
+ void *_sound_proc_param;
+ byte* _stereo_mix_buffer;
+
+};
+
+#endif
diff --git a/backends/epoc/build/.placeholder b/backends/epoc/build/.placeholder
new file mode 100644
index 0000000000..dcf4d34a62
--- /dev/null
+++ b/backends/epoc/build/.placeholder
@@ -0,0 +1 @@
+>> SumthinWicked *grins* << \ No newline at end of file
diff --git a/backends/epoc/build/S60/BLD.INF b/backends/epoc/build/S60/BLD.INF
new file mode 100644
index 0000000000..25d2d236ca
--- /dev/null
+++ b/backends/epoc/build/S60/BLD.INF
@@ -0,0 +1,12 @@
+PRJ_PLATFORMS
+WINS ARMI // ARM4 THUMB
+
+PRJ_MMPFILES
+..\scummvm_base.mmp
+..\scummvm_scumm.mmp
+..\scummvm_simon.mmp
+..\scummvm_sky.mmp
+..\scummvm_queen.mmp
+..\scummvm_gob.mmp
+.\EScummVM_S60.mmp
+.\EScummVM_S60_App.mmp
diff --git a/backends/epoc/build/S60/EScummVMS60.rss b/backends/epoc/build/S60/EScummVMS60.rss
new file mode 100644
index 0000000000..0d1fe28bde
--- /dev/null
+++ b/backends/epoc/build/S60/EScummVMS60.rss
@@ -0,0 +1,62 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+// ScummVM.RSS
+
+NAME SCUM
+
+// Include definitions of resource STRUCTS used by this
+// resource script
+#include <eikon.rh>
+#include "..\..\Scummvm.hrh"
+// Include the standard Eikon resource ids
+#include <eikon.rsg>
+
+
+RESOURCE RSS_SIGNATURE
+ {
+ }
+
+RESOURCE TBUF16 { buf=""; }
+
+RESOURCE EIK_APP_INFO
+ {
+ menubar = r_scum_menubar;
+ }
+
+RESOURCE MENU_BAR r_scum_menubar // *** Menu bar
+{
+ titles =
+ {
+ MENU_TITLE { menu_pane = r_scum_menu; txt = "ScummVM"; }
+ };
+}
+
+RESOURCE MENU_PANE r_scum_menu // *** Submenu
+{
+ items =
+ {
+
+ MENU_ITEM{command = EEikCmdExit;txt = "Exit";}
+ };
+}
diff --git a/backends/epoc/build/S60/EScummVM_080.pkg b/backends/epoc/build/S60/EScummVM_080.pkg
new file mode 100644
index 0000000000..51cb3e394c
--- /dev/null
+++ b/backends/epoc/build/S60/EScummVM_080.pkg
@@ -0,0 +1,36 @@
+;;;
+;;; EScummVM .PKG file for .SIS gegeration
+;;;
+
+; Languages
+;&EN
+
+; UID is the app's UID
+#{"EScummVM S60"},(0x101f9b57),0,80,3
+
+; Platform type
+(0x101F6F88), 0, 0, 0, {"Series60ProductID"}
+
+; Signature
+*"EScummVM.key","EScummVM.cer"
+
+; Application file Launcher and actual exe
+"..\..\\epoc32\release\armi\urel\EScummVMS60.app"-"!:\system\apps\EScummVMS60\EScummVMS60.app"
+"\epoc32\release\armi\urel\EScummVM.exe"-":\system\apps\EScummVMS60\EScummVM.exe"
+
+; AIF application information file
+"\epoc32\data\z\system\apps\EScummVMS60\EScummVMS60.aif"-"!:\system\apps\EScummVMS60\EScummVMS60.aif"
+
+; Resource file
+"\epoc32\data\z\system\apps\EScummVMS60\EScummVMS60.rsc"-"!:\system\apps\EScummVMS60\EScummVMS60.rsc"
+
+; Empty .placeholder file, ensures creation of c:\documents\EScummVM\ for future file saves
+".placeholder"-"c:\documents\EScummVM\.placeholder"
+
+; Config/log files: 'empty' will automagically be removed on uninstall
+""-"c:\documents\EScummVM\scummvm.ini",FN
+""-"c:\documents\EScummVM\scummvm.stdout.txt",FN
+""-"c:\documents\EScummVM\scummvm.stderr.txt",FN
+
+; This install layout will let you upgrade to newer versions wihout loss of scummvm.ini.
+; It will remove the config file, std***.txt files & dirs on uninstall. \ No newline at end of file
diff --git a/backends/epoc/build/S60/EScummVM_S60.mmp b/backends/epoc/build/S60/EScummVM_S60.mmp
new file mode 100644
index 0000000000..9fe8e1e9c7
--- /dev/null
+++ b/backends/epoc/build/S60/EScummVM_S60.mmp
@@ -0,0 +1,113 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+//
+// EPOC S60 MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+#if defined(WINS)
+ TARGET EScummVM.dll
+#else
+ TARGET EScummVM.exe
+#endif
+TARGETPATH system\apps\EScummVMs60
+TARGETTYPE EXEDLL
+ // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
+OPTION MSVC /QIfist /Ob1 /Oy /GF
+//OPTION GCC -O3 -funroll-loops -finline-functions -ffast-math -frerun-loop-opt -fconserve-space -fexpensive-optimizations -Wno-multichar -Wno-reorder
+sourcepath ..\
+EPOCSTACKSIZE 0x00008000
+
+EPOCHEAPSIZE 1024 5242880
+
+MACRO S60
+MACRO NONSTANDARD_PORT
+
+// these need too high a resolution
+MACRO DISABLE_SWORD1
+MACRO DISABLE_SWORD2
+// these are not ready to be released
+MACRO DISABLE_SAGA
+MACRO DISABLE_KYRA
+// these work, so don't disable them :)
+//MACRO DISABLE_SIMON
+//MACRO DISABLE_SKY
+//MACRO DISABLE_QUEEN
+//MACRO DISABLE_GOB
+
+// *** Static Libraries
+
+STATICLIBRARY scummvm_scumm.lib
+STATICLIBRARY scummvm_simon.lib
+STATICLIBRARY scummvm_sky.lib
+STATICLIBRARY scummvm_queen.lib
+STATICLIBRARY scummvm_gob.lib
+STATICLIBRARY scummvm_base.lib
+
+STATICLIBRARY libmad.lib
+STATICLIBRARY zlib.lib
+STATICLIBRARY esdl.lib
+#if !defined(WINS)
+STATICLIBRARY egcc.lib // for __fixunsdfsi
+#endif
+// *** Include paths
+
+USERINCLUDE ..\..\..\.. ..\..\..\..\common ..\..\..\..\gui
+USERINCLUDE ..\..\..\..\backends\fs ..\..\..\..\backends\epoc ..\..\..\..\backends\sdl ..\..\..\..\sound
+
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\..\..\..\backends\epoc // for portdefs.h
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\..
+
+//START_AUTO_OBJECTS_BASE_// Updated @ Tue May 31 18:35:38 2005
+SOURCE base\engine.cpp
+SOURCE base\gameDetector.cpp
+SOURCE base\main.cpp
+SOURCE base\plugins.cpp
+//STOP_AUTO_OBJECTS_BASE_//
+
+// backend EPOC/SDL/ESDL specific includes
+SOURCE backends\sdl\events.cpp
+SOURCE backends\sdl\graphics.cpp
+SOURCE backends\sdl\sdl.cpp
+SOURCE backends\fs\symbian\symbian-fs.cpp
+SOURCE backends\epoc\SymbianOS.cpp
+SOURCE backends\epoc\ScummApp.cpp
+
+// *** Dynamic Libraries
+
+LIBRARY cone.lib eikcore.lib
+LIBRARY euser.lib apparc.lib fbscli.lib
+LIBRARY estlib.lib apgrfx.lib
+LIBRARY gdi.lib hal.lib bitgdi.lib
+LIBRARY mediaclientaudiostream.lib efsrv.lib ws32.lib
+LIBRARY AVKON.LIB
+
diff --git a/backends/epoc/build/S60/EScummVM_S60_App.mmp b/backends/epoc/build/S60/EScummVM_S60_App.mmp
new file mode 100644
index 0000000000..0664320027
--- /dev/null
+++ b/backends/epoc/build/S60/EScummVM_S60_App.mmp
@@ -0,0 +1,47 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+//
+// MAKEFILE.MMP S60 ScummVM Launcher
+//
+
+TARGET EScummVMS60.app
+TARGETPATH system\apps\EScummVMS60
+TARGETTYPE app
+
+UID 0x100039ce 0x101f9b57
+RESOURCE ESCUMMVMS60.rss
+
+SOURCEPATH .
+USERINCLUDE .
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc
+
+// app source
+SOURCE ScummVMApp.cpp
+sourcepath ..
+AIF EScummVmS60.Aif ..\ ScummVmAif.rss c16 ScummL.bmp ScummLM.bmp ScummS.bmp ScummSM.bmp // still fails?
+// libraries
+LIBRARY cone.lib EIKCORE.lib
+LIBRARY euser.lib apparc.lib
+LIBRARY efsrv.lib apgrfx.lib
+LIBRARY avkon.lib \ No newline at end of file
diff --git a/backends/epoc/build/S60/ScummVMApp.cpp b/backends/epoc/build/S60/ScummVMApp.cpp
new file mode 100644
index 0000000000..1702a88ba7
--- /dev/null
+++ b/backends/epoc/build/S60/ScummVMApp.cpp
@@ -0,0 +1,163 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+#include "ScummVMapp.h"
+#include <escummvms60.rsg>
+#include <apgcli.h>
+#include <eikdll.h>
+
+EXPORT_C CApaApplication* NewApplication() {
+ return (new CScummVM);
+}
+
+CScummVM::CScummVM() {
+}
+
+CScummVM::~CScummVM() {
+}
+
+CApaDocument* CScummVM::CreateDocumentL()
+{
+ return new (ELeave) CScummVMDoc(*this);
+}
+
+TUid CScummVM::AppDllUid() const
+{
+ return TUid::Uid(0x101f9b57);
+}
+
+CScummVMDoc::CScummVMDoc(CEikApplication& aApp):CAknDocument(aApp) {
+}
+
+CScummVMDoc::~CScummVMDoc() {
+}
+
+CEikAppUi* CScummVMDoc::CreateAppUiL() {
+ return new (ELeave) CScummVMUi;
+}
+
+void CScummVMUi::HandleForegroundEventL(TBool aForeground) {
+ if(aForeground) {
+ BringUpEmulatorL();
+ }
+}
+
+CScummVMUi::CScummVMUi() {
+}
+
+CScummVMUi::~CScummVMUi() {
+ if(iWatcher) {
+ iThreadWatch.LogonCancel(iWatcher->iStatus);
+ iWatcher->Cancel();
+ }
+ delete iWatcher;
+
+ iThreadWatch.Close();
+}
+
+void CScummVMUi::ConstructL() {
+ BaseConstructL();
+ TBuf<128> startFile;
+ startFile = iEikonEnv->EikAppUi()->Application()->AppFullName();
+ TParse parser;
+ parser.Set(startFile,NULL,NULL);
+
+ startFile = parser.DriveAndPath();
+#ifndef __WINS__
+ startFile.Append( _L("EScummVM.exe"));
+#else
+ startFile.Append( _L("EScummVM.dll"));
+#endif
+ CApaCommandLine* cmdLine=CApaCommandLine::NewLC(startFile);
+ RApaLsSession lsSession;
+ lsSession.Connect();
+ CleanupClosePushL(lsSession);
+ lsSession.StartApp(*cmdLine,iThreadId);
+ CleanupStack::PopAndDestroy();//close lsSession
+ CleanupStack::PopAndDestroy(cmdLine);
+
+ TApaTaskList taskList(iEikonEnv->WsSession());
+ TApaTask myTask=taskList.FindApp(TUid::Uid(0x101f9b57));
+ myTask.SendToBackground();
+ TApaTask exeTask=taskList.FindByPos(0);
+ iExeWgId=exeTask.WgId();
+
+ if(iExeWgId == myTask.WgId()) { // Should n't be the same
+ Exit();
+ }
+ if(iThreadWatch.Open(iThreadId)==KErrNone) {
+ iWatcher = new (ELeave)CScummWatcher;
+ iWatcher->iAppUi=this;
+ iThreadWatch.Logon(iWatcher->iStatus);
+ }
+}
+
+CScummWatcher::CScummWatcher():CActive(EPriorityStandard) {
+ CActiveScheduler::Add(this);
+ iStatus=KRequestPending;
+ SetActive();
+}
+
+CScummWatcher::~CScummWatcher() {
+}
+
+void CScummWatcher::DoCancel() {
+}
+
+void CScummWatcher::RunL() {
+ iAppUi->HandleCommandL(EEikCmdExit);
+}
+
+void CScummVMUi::BringUpEmulatorL() {
+ RThread thread;
+ if(thread.Open(iThreadId)==KErrNone) {
+ thread.Close();
+ TApaTask apaTask(iEikonEnv->WsSession());
+ apaTask.SetWgId(iExeWgId);
+ apaTask.BringToForeground();
+ }
+ else
+ {
+ iExeWgId=-1;
+ }
+}
+
+void CScummVMUi::HandleCommandL(TInt aCommand) {
+ switch(aCommand) {
+ case EEikCmdExit:
+ {
+ RThread thread;
+ if(thread.Open(iThreadId)==KErrNone)
+ {
+ thread.Terminate(0);
+ thread.Close();
+ }
+ Exit();
+ }
+ break;
+ }
+}
+
+GLDEF_C TInt E32Dll(TDllReason) {
+ return KErrNone;
+}
diff --git a/backends/epoc/build/S60/ScummVMApp.h b/backends/epoc/build/S60/ScummVMApp.h
new file mode 100644
index 0000000000..9cf8623835
--- /dev/null
+++ b/backends/epoc/build/S60/ScummVMApp.h
@@ -0,0 +1,79 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+#ifndef ScummVMapps60h
+#define ScummVMapps60h
+
+#include <aknapp.h>
+#include <eikapp.h>
+#include <e32base.h>
+#include <coecntrl.h>
+#include <eikenv.h>
+#include <coeview.h>
+#include <eikappui.h>
+
+class CScummVM:public CEikApplication {
+public:
+ CScummVM();
+ ~CScummVM();
+ CApaDocument* CreateDocumentL();
+ TUid AppDllUid() const;
+};
+
+
+#include <AKNdoc.h>
+
+class CScummVMDoc:public CAknDocument {
+public:
+ ~CScummVMDoc();
+ CEikAppUi* CreateAppUiL();
+ void ConstructL();
+ CScummVMDoc(CEikApplication& aApplicaiton);
+};
+
+#include <aknappui.h>
+class CScummVMUi;
+class CScummWatcher:public CActive {
+public:
+ CScummWatcher();
+ ~CScummWatcher();
+ void DoCancel();
+ void RunL();
+ CScummVMUi* iAppUi;
+};
+
+class CScummVMUi:public CAknAppUi {
+public:
+ CScummVMUi();
+ ~CScummVMUi();
+ void ConstructL();
+ void HandleCommandL(TInt aCommand);
+ void HandleForegroundEventL(TBool aForeground);
+ void BringUpEmulatorL();
+private:
+ TThreadId iThreadId;
+ TInt iExeWgId;
+ RThread iThreadWatch;
+ CScummWatcher* iWatcher;
+};
+#endif
diff --git a/backends/epoc/build/S80/BLD.INF b/backends/epoc/build/S80/BLD.INF
new file mode 100644
index 0000000000..72207eb096
--- /dev/null
+++ b/backends/epoc/build/S80/BLD.INF
@@ -0,0 +1,12 @@
+PRJ_PLATFORMS
+WINS ARMI // ARM4 THUMB
+
+PRJ_MMPFILES
+..\scummvm_base.mmp
+..\scummvm_scumm.mmp
+..\scummvm_simon.mmp
+..\scummvm_sky.mmp
+..\scummvm_queen.mmp
+..\scummvm_gob.mmp
+.\EScummVM_S80.mmp
+.\EScummVM_S80_App.mmp
diff --git a/backends/epoc/build/S80/EScummVM_080.pkg b/backends/epoc/build/S80/EScummVM_080.pkg
new file mode 100644
index 0000000000..51cb3e394c
--- /dev/null
+++ b/backends/epoc/build/S80/EScummVM_080.pkg
@@ -0,0 +1,36 @@
+;;;
+;;; EScummVM .PKG file for .SIS gegeration
+;;;
+
+; Languages
+;&EN
+
+; UID is the app's UID
+#{"EScummVM S60"},(0x101f9b57),0,80,3
+
+; Platform type
+(0x101F6F88), 0, 0, 0, {"Series60ProductID"}
+
+; Signature
+*"EScummVM.key","EScummVM.cer"
+
+; Application file Launcher and actual exe
+"..\..\\epoc32\release\armi\urel\EScummVMS60.app"-"!:\system\apps\EScummVMS60\EScummVMS60.app"
+"\epoc32\release\armi\urel\EScummVM.exe"-":\system\apps\EScummVMS60\EScummVM.exe"
+
+; AIF application information file
+"\epoc32\data\z\system\apps\EScummVMS60\EScummVMS60.aif"-"!:\system\apps\EScummVMS60\EScummVMS60.aif"
+
+; Resource file
+"\epoc32\data\z\system\apps\EScummVMS60\EScummVMS60.rsc"-"!:\system\apps\EScummVMS60\EScummVMS60.rsc"
+
+; Empty .placeholder file, ensures creation of c:\documents\EScummVM\ for future file saves
+".placeholder"-"c:\documents\EScummVM\.placeholder"
+
+; Config/log files: 'empty' will automagically be removed on uninstall
+""-"c:\documents\EScummVM\scummvm.ini",FN
+""-"c:\documents\EScummVM\scummvm.stdout.txt",FN
+""-"c:\documents\EScummVM\scummvm.stderr.txt",FN
+
+; This install layout will let you upgrade to newer versions wihout loss of scummvm.ini.
+; It will remove the config file, std***.txt files & dirs on uninstall. \ No newline at end of file
diff --git a/backends/epoc/build/S80/EScummVM_S80.mmp b/backends/epoc/build/S80/EScummVM_S80.mmp
new file mode 100644
index 0000000000..4b12e269b7
--- /dev/null
+++ b/backends/epoc/build/S80/EScummVM_S80.mmp
@@ -0,0 +1,112 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+//
+// EPOC S80 MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+#if defined(WINS)
+ TARGET EScummVM.dll
+#else
+ TARGET EScummVM.exe
+#endif
+TARGETPATH system\apps\EScummVMs80
+TARGETTYPE EXEDLL
+ // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
+OPTION MSVC /QIfist /Ob1 /Oy /GF
+//OPTION GCC -O3 -funroll-loops -finline-functions -ffast-math -frerun-loop-opt -fconserve-space -fexpensive-optimizations -Wno-multichar -Wno-reorder
+sourcepath ..\
+EPOCSTACKSIZE 0x00008000
+
+EPOCHEAPSIZE 1024 5242880
+
+MACRO S80
+MACRO NONSTANDARD_PORT
+
+// these need too high a resolution
+MACRO DISABLE_SWORD1
+MACRO DISABLE_SWORD2
+// these are not ready to be released
+MACRO DISABLE_SAGA
+MACRO DISABLE_KYRA
+// these work, so don't disable them :)
+//MACRO DISABLE_SIMON
+//MACRO DISABLE_SKY
+//MACRO DISABLE_QUEEN
+//MACRO DISABLE_GOB
+
+// *** Static Libraries
+
+STATICLIBRARY scummvm_scumm.lib
+STATICLIBRARY scummvm_simon.lib
+STATICLIBRARY scummvm_sky.lib
+STATICLIBRARY scummvm_queen.lib
+STATICLIBRARY scummvm_gob.lib
+STATICLIBRARY scummvm_base.lib
+
+STATICLIBRARY libmad.lib
+STATICLIBRARY zlib.lib
+STATICLIBRARY esdl.lib
+#if !defined(WINS)
+STATICLIBRARY egcc.lib // for __fixunsdfsi
+#endif
+// *** Include paths
+
+USERINCLUDE ..\..\..\.. ..\..\..\..\common ..\..\..\..\gui
+USERINCLUDE ..\..\..\..\backends\fs ..\..\..\..\backends\epoc ..\..\..\..\backends\sdl ..\..\..\..\sound
+
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\..\..\..\backends\epoc // for portdefs.h
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\..
+
+//START_AUTO_OBJECTS_BASE_// Updated @ Tue May 31 18:35:38 2005
+SOURCE base\engine.cpp
+SOURCE base\gameDetector.cpp
+SOURCE base\main.cpp
+SOURCE base\plugins.cpp
+//STOP_AUTO_OBJECTS_BASE_//
+
+// backend EPOC/SDL/ESDL specific includes
+SOURCE backends\sdl\events.cpp
+SOURCE backends\sdl\graphics.cpp
+SOURCE backends\sdl\sdl.cpp
+SOURCE backends\fs\symbian\symbian-fs.cpp
+SOURCE backends\epoc\SymbianOS.cpp
+SOURCE backends\epoc\ScummApp.cpp
+
+// *** Dynamic Libraries
+
+LIBRARY cone.lib eikcore.lib
+LIBRARY euser.lib apparc.lib fbscli.lib
+LIBRARY estlib.lib apgrfx.lib
+LIBRARY gdi.lib hal.lib bitgdi.lib
+LIBRARY mediaclientaudiostream.lib efsrv.lib ws32.lib
+
diff --git a/backends/epoc/build/S80/EScummVM_S80_App.mmp b/backends/epoc/build/S80/EScummVM_S80_App.mmp
new file mode 100644
index 0000000000..05f14b703a
--- /dev/null
+++ b/backends/epoc/build/S80/EScummVM_S80_App.mmp
@@ -0,0 +1,46 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+//
+// MAKEFILE.MMP S80 ScummVM Launcher
+//
+
+TARGET EScummVMS80.app
+TARGETPATH system\apps\EScummVMS80
+TARGETTYPE app
+
+UID 0x100039ce 0x101f9b57
+RESOURCE ESCUMMVMS80.rss
+
+SOURCEPATH .
+USERINCLUDE .
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc
+
+// app source
+SOURCE ScummVMApp.cpp
+sourcepath ..
+AIF EScummVmS80.Aif ..\ ScummVmAif.rss c16 ScummL.bmp ScummLM.bmp ScummS.bmp ScummSM.bmp // still fails?
+// libraries
+LIBRARY cone.lib EIKCORE.lib
+LIBRARY euser.lib apparc.lib
+LIBRARY efsrv.lib apgrfx.lib \ No newline at end of file
diff --git a/backends/epoc/build/S80/EScummvmS80.rss b/backends/epoc/build/S80/EScummvmS80.rss
new file mode 100644
index 0000000000..1f116a7bf7
--- /dev/null
+++ b/backends/epoc/build/S80/EScummvmS80.rss
@@ -0,0 +1,62 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+// ScummVM.RSS
+
+NAME SCUM
+
+// Include definitions of resource STRUCTS used by this
+// resource script
+#include <eikon.rh>
+#include "..\..\Scummvm.hrh"
+// Include the standard Eikon resource ids
+#include <eikon.rsg>
+
+
+RESOURCE RSS_SIGNATURE
+ {
+ }
+
+RESOURCE TBUF16 { buf=""; }
+
+RESOURCE EIK_APP_INFO
+ {
+ menubar = r_scum_menubar;
+ }
+
+RESOURCE MENU_BAR r_scum_menubar // *** Menu bar
+{
+ titles =
+ {
+ MENU_TITLE { menu_pane = r_scum_menu; txt = "ScummVM"; }
+ };
+}
+
+RESOURCE MENU_PANE r_scum_menu // *** Submenu
+{
+ items =
+ {
+
+ MENU_ITEM{command = EEikCmdExit;txt = "Exit";}
+ };
+}
diff --git a/backends/epoc/build/S80/ScummVMApp.cpp b/backends/epoc/build/S80/ScummVMApp.cpp
new file mode 100644
index 0000000000..f0e0860216
--- /dev/null
+++ b/backends/epoc/build/S80/ScummVMApp.cpp
@@ -0,0 +1,163 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+#include "ScummVMapp.h"
+#include <escummvms80.rsg>
+#include <apgcli.h>
+#include <eikdll.h>
+#include <apgtask.h>
+EXPORT_C CApaApplication* NewApplication() {
+ return (new CScummVM);
+}
+
+CScummVM::CScummVM() {
+}
+
+CScummVM::~CScummVM() {
+}
+
+CApaDocument* CScummVM::CreateDocumentL()
+{
+ return new (ELeave) CScummVMDoc(*this);
+}
+
+TUid CScummVM::AppDllUid() const
+{
+ return TUid::Uid(0x101f9b57);
+}
+
+CScummVMDoc::CScummVMDoc(CEikApplication& aApp):CEikDocument(aApp) {
+}
+
+CScummVMDoc::~CScummVMDoc() {
+}
+
+CEikAppUi* CScummVMDoc::CreateAppUiL() {
+ return new (ELeave) CScummVMUi;
+}
+
+void CScummVMUi::HandleForegroundEventL(TBool aForeground) {
+ if(aForeground) {
+ BringUpEmulatorL();
+ }
+}
+
+CScummVMUi::CScummVMUi() {
+}
+
+CScummVMUi::~CScummVMUi() {
+ if(iWatcher) {
+ iThreadWatch.LogonCancel(iWatcher->iStatus);
+ iWatcher->Cancel();
+ }
+ delete iWatcher;
+
+ iThreadWatch.Close();
+}
+
+void CScummVMUi::ConstructL() {
+ BaseConstructL();
+ TBuf<128> startFile;
+ startFile = iEikonEnv->EikAppUi()->Application()->AppFullName();
+ TParse parser;
+ parser.Set(startFile,NULL,NULL);
+
+ startFile = parser.DriveAndPath();
+#ifndef __WINS__
+ startFile.Append( _L("EScummVM.exe"));
+#else
+ startFile.Append( _L("EScummVM.dll"));
+#endif
+ CApaCommandLine* cmdLine=CApaCommandLine::NewLC(startFile);
+ RApaLsSession lsSession;
+ lsSession.Connect();
+ CleanupClosePushL(lsSession);
+ lsSession.StartApp(*cmdLine,iThreadId);
+ CleanupStack::PopAndDestroy();//close lsSession
+ CleanupStack::PopAndDestroy(cmdLine);
+ User::After(500000);// Let the application start
+ TApaTaskList taskList(iEikonEnv->WsSession());
+ TApaTask myTask=taskList.FindApp(TUid::Uid(0x101f9b57));
+ myTask.SendToBackground();
+ TApaTask exeTask=taskList.FindByPos(0);
+ iExeWgId=exeTask.WgId();
+ exeTask.BringToForeground();
+ if(iExeWgId == myTask.WgId()) { // Should n't be the same
+ Exit();
+ }
+ if(iThreadWatch.Open(iThreadId)==KErrNone) {
+ iWatcher = new (ELeave)CScummWatcher;
+ iWatcher->iAppUi=this;
+ iThreadWatch.Logon(iWatcher->iStatus);
+ }
+}
+
+CScummWatcher::CScummWatcher():CActive(EPriorityStandard) {
+ CActiveScheduler::Add(this);
+ iStatus=KRequestPending;
+ SetActive();
+}
+
+CScummWatcher::~CScummWatcher() {
+}
+
+void CScummWatcher::DoCancel() {
+}
+
+void CScummWatcher::RunL() {
+ iAppUi->HandleCommandL(EEikCmdExit);
+}
+
+void CScummVMUi::BringUpEmulatorL() {
+ RThread thread;
+ if(thread.Open(iThreadId)==KErrNone) {
+ thread.Close();
+ TApaTask apaTask(iEikonEnv->WsSession());
+ apaTask.SetWgId(iExeWgId);
+ apaTask.BringToForeground();
+ }
+ else
+ {
+ iExeWgId=-1;
+ }
+}
+
+void CScummVMUi::HandleCommandL(TInt aCommand) {
+ switch(aCommand) {
+ case EEikCmdExit:
+ {
+ RThread thread;
+ if(thread.Open(iThreadId)==KErrNone)
+ {
+ thread.Terminate(0);
+ thread.Close();
+ }
+ Exit();
+ }
+ break;
+ }
+}
+
+GLDEF_C TInt E32Dll(TDllReason) {
+ return KErrNone;
+}
diff --git a/backends/epoc/build/S80/ScummVMApp.h b/backends/epoc/build/S80/ScummVMApp.h
new file mode 100644
index 0000000000..71732f2ec0
--- /dev/null
+++ b/backends/epoc/build/S80/ScummVMApp.h
@@ -0,0 +1,78 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+#ifndef ScummVMapps60h
+#define ScummVMapps60h
+
+#include <eikapp.h>
+#include <e32base.h>
+#include <coecntrl.h>
+#include <eikenv.h>
+#include <coeview.h>
+#include <eikappui.h>
+
+class CScummVM:public CEikApplication {
+public:
+ CScummVM();
+ ~CScummVM();
+ CApaDocument* CreateDocumentL();
+ TUid AppDllUid() const;
+};
+
+
+#include <eikdoc.h>
+
+class CScummVMDoc:public CEikDocument {
+public:
+ ~CScummVMDoc();
+ CEikAppUi* CreateAppUiL();
+ void ConstructL();
+ CScummVMDoc(CEikApplication& aApplicaiton);
+};
+
+#include <eikappui.h>
+class CScummVMUi;
+class CScummWatcher:public CActive {
+public:
+ CScummWatcher();
+ ~CScummWatcher();
+ void DoCancel();
+ void RunL();
+ CScummVMUi* iAppUi;
+};
+
+class CScummVMUi:public CEikAppUi {
+public:
+ CScummVMUi();
+ ~CScummVMUi();
+ void ConstructL();
+ void HandleCommandL(TInt aCommand);
+ void HandleForegroundEventL(TBool aForeground);
+ void BringUpEmulatorL();
+private:
+ TThreadId iThreadId;
+ TInt iExeWgId;
+ RThread iThreadWatch;
+ CScummWatcher* iWatcher;
+};
+#endif
diff --git a/backends/epoc/build/S90/BLD.INF b/backends/epoc/build/S90/BLD.INF
new file mode 100644
index 0000000000..62c19024cb
--- /dev/null
+++ b/backends/epoc/build/S90/BLD.INF
@@ -0,0 +1,12 @@
+PRJ_PLATFORMS
+WINS ARMI // ARM4 THUMB
+
+PRJ_MMPFILES
+..\scummvm_base.mmp
+..\scummvm_scumm.mmp
+..\scummvm_simon.mmp
+..\scummvm_sky.mmp
+..\scummvm_queen.mmp
+..\scummvm_gob.mmp
+.\EScummVM_S90.mmp
+.\EScummVM_S90_App.mmp
diff --git a/backends/epoc/build/S90/EScummVM_080.pkg b/backends/epoc/build/S90/EScummVM_080.pkg
new file mode 100644
index 0000000000..51cb3e394c
--- /dev/null
+++ b/backends/epoc/build/S90/EScummVM_080.pkg
@@ -0,0 +1,36 @@
+;;;
+;;; EScummVM .PKG file for .SIS gegeration
+;;;
+
+; Languages
+;&EN
+
+; UID is the app's UID
+#{"EScummVM S60"},(0x101f9b57),0,80,3
+
+; Platform type
+(0x101F6F88), 0, 0, 0, {"Series60ProductID"}
+
+; Signature
+*"EScummVM.key","EScummVM.cer"
+
+; Application file Launcher and actual exe
+"..\..\\epoc32\release\armi\urel\EScummVMS60.app"-"!:\system\apps\EScummVMS60\EScummVMS60.app"
+"\epoc32\release\armi\urel\EScummVM.exe"-":\system\apps\EScummVMS60\EScummVM.exe"
+
+; AIF application information file
+"\epoc32\data\z\system\apps\EScummVMS60\EScummVMS60.aif"-"!:\system\apps\EScummVMS60\EScummVMS60.aif"
+
+; Resource file
+"\epoc32\data\z\system\apps\EScummVMS60\EScummVMS60.rsc"-"!:\system\apps\EScummVMS60\EScummVMS60.rsc"
+
+; Empty .placeholder file, ensures creation of c:\documents\EScummVM\ for future file saves
+".placeholder"-"c:\documents\EScummVM\.placeholder"
+
+; Config/log files: 'empty' will automagically be removed on uninstall
+""-"c:\documents\EScummVM\scummvm.ini",FN
+""-"c:\documents\EScummVM\scummvm.stdout.txt",FN
+""-"c:\documents\EScummVM\scummvm.stderr.txt",FN
+
+; This install layout will let you upgrade to newer versions wihout loss of scummvm.ini.
+; It will remove the config file, std***.txt files & dirs on uninstall. \ No newline at end of file
diff --git a/backends/epoc/build/S90/EScummvmS90.rss b/backends/epoc/build/S90/EScummvmS90.rss
new file mode 100644
index 0000000000..1f116a7bf7
--- /dev/null
+++ b/backends/epoc/build/S90/EScummvmS90.rss
@@ -0,0 +1,62 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+// ScummVM.RSS
+
+NAME SCUM
+
+// Include definitions of resource STRUCTS used by this
+// resource script
+#include <eikon.rh>
+#include "..\..\Scummvm.hrh"
+// Include the standard Eikon resource ids
+#include <eikon.rsg>
+
+
+RESOURCE RSS_SIGNATURE
+ {
+ }
+
+RESOURCE TBUF16 { buf=""; }
+
+RESOURCE EIK_APP_INFO
+ {
+ menubar = r_scum_menubar;
+ }
+
+RESOURCE MENU_BAR r_scum_menubar // *** Menu bar
+{
+ titles =
+ {
+ MENU_TITLE { menu_pane = r_scum_menu; txt = "ScummVM"; }
+ };
+}
+
+RESOURCE MENU_PANE r_scum_menu // *** Submenu
+{
+ items =
+ {
+
+ MENU_ITEM{command = EEikCmdExit;txt = "Exit";}
+ };
+}
diff --git a/backends/epoc/build/S90/EScummvm_S90.mmp b/backends/epoc/build/S90/EScummvm_S90.mmp
new file mode 100644
index 0000000000..6327b93c74
--- /dev/null
+++ b/backends/epoc/build/S90/EScummvm_S90.mmp
@@ -0,0 +1,112 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+//
+// EPOC S90 MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+#if defined(WINS)
+ TARGET EScummVM.dll
+#else
+ TARGET EScummVM.exe
+#endif
+TARGETPATH system\apps\EScummVMs90
+TARGETTYPE EXEDLL
+ // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
+OPTION MSVC /QIfist /Ob1 /Oy /GF
+//OPTION GCC -O3 -funroll-loops -finline-functions -ffast-math -frerun-loop-opt -fconserve-space -fexpensive-optimizations -Wno-multichar -Wno-reorder
+sourcepath ..\
+EPOCSTACKSIZE 0x00008000
+
+EPOCHEAPSIZE 1024 5242880
+
+MACRO S90
+MACRO NONSTANDARD_PORT
+
+// these need too high a resolution
+MACRO DISABLE_SWORD1
+MACRO DISABLE_SWORD2
+// these are not ready to be released
+MACRO DISABLE_SAGA
+MACRO DISABLE_KYRA
+// these work, so don't disable them :)
+//MACRO DISABLE_SIMON
+//MACRO DISABLE_SKY
+//MACRO DISABLE_QUEEN
+//MACRO DISABLE_GOB
+
+// *** Static Libraries
+
+STATICLIBRARY scummvm_scumm.lib
+STATICLIBRARY scummvm_simon.lib
+STATICLIBRARY scummvm_sky.lib
+STATICLIBRARY scummvm_queen.lib
+STATICLIBRARY scummvm_gob.lib
+STATICLIBRARY scummvm_base.lib
+
+STATICLIBRARY libmad.lib
+STATICLIBRARY zlib.lib
+STATICLIBRARY esdl.lib
+#if !defined(WINS)
+STATICLIBRARY egcc.lib // for __fixunsdfsi
+#endif
+// *** Include paths
+
+USERINCLUDE ..\..\..\.. ..\..\..\..\common ..\..\..\..\gui
+USERINCLUDE ..\..\..\..\backends\fs ..\..\..\..\backends\epoc ..\..\..\..\backends\sdl ..\..\..\..\sound
+
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\..\..\..\backends\epoc // for portdefs.h
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\..
+
+//START_AUTO_OBJECTS_BASE_// Updated @ Tue May 31 18:35:38 2005
+SOURCE base\engine.cpp
+SOURCE base\gameDetector.cpp
+SOURCE base\main.cpp
+SOURCE base\plugins.cpp
+//STOP_AUTO_OBJECTS_BASE_//
+
+// backend EPOC/SDL/ESDL specific includes
+SOURCE backends\sdl\events.cpp
+SOURCE backends\sdl\graphics.cpp
+SOURCE backends\sdl\sdl.cpp
+SOURCE backends\fs\symbian\symbian-fs.cpp
+SOURCE backends\epoc\SymbianOS.cpp
+SOURCE backends\epoc\ScummApp.cpp
+
+// *** Dynamic Libraries
+
+LIBRARY cone.lib eikcore.lib
+LIBRARY euser.lib apparc.lib fbscli.lib
+LIBRARY estlib.lib apgrfx.lib
+LIBRARY gdi.lib hal.lib bitgdi.lib
+LIBRARY mediaclientaudiostream.lib efsrv.lib ws32.lib
+
diff --git a/backends/epoc/build/S90/EScummvm_S90_App.mmp b/backends/epoc/build/S90/EScummvm_S90_App.mmp
new file mode 100644
index 0000000000..b070a317e1
--- /dev/null
+++ b/backends/epoc/build/S90/EScummvm_S90_App.mmp
@@ -0,0 +1,46 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+//
+// MAKEFILE.MMP S90 ScummVM Launcher
+//
+
+TARGET EScummVMS90.app
+TARGETPATH system\apps\EScummVMS90
+TARGETTYPE app
+
+UID 0x100039ce 0x101f9b57
+RESOURCE ESCUMMVMS90.rss
+
+SOURCEPATH .
+USERINCLUDE .
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc
+
+// app source
+SOURCE ScummVMApp.cpp
+sourcepath ..
+AIF EScummVmS90.Aif ..\ ScummVmAif.rss c16 ScummL.bmp ScummLM.bmp ScummS.bmp ScummSM.bmp // still fails?
+// libraries
+LIBRARY cone.lib EIKCORE.lib
+LIBRARY euser.lib apparc.lib
+LIBRARY efsrv.lib apgrfx.lib \ No newline at end of file
diff --git a/backends/epoc/build/S90/ScummVMApp.cpp b/backends/epoc/build/S90/ScummVMApp.cpp
new file mode 100644
index 0000000000..95ab6d3b84
--- /dev/null
+++ b/backends/epoc/build/S90/ScummVMApp.cpp
@@ -0,0 +1,163 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+#include "ScummVMapp.h"
+#include <escummvms90.rsg>
+#include <apgcli.h>
+#include <eikdll.h>
+#include <apgtask.h>
+EXPORT_C CApaApplication* NewApplication() {
+ return (new CScummVM);
+}
+
+CScummVM::CScummVM() {
+}
+
+CScummVM::~CScummVM() {
+}
+
+CApaDocument* CScummVM::CreateDocumentL()
+{
+ return new (ELeave) CScummVMDoc(*this);
+}
+
+TUid CScummVM::AppDllUid() const
+{
+ return TUid::Uid(0x101f9b57);
+}
+
+CScummVMDoc::CScummVMDoc(CEikApplication& aApp):CEikDocument(aApp) {
+}
+
+CScummVMDoc::~CScummVMDoc() {
+}
+
+CEikAppUi* CScummVMDoc::CreateAppUiL() {
+ return new (ELeave) CScummVMUi;
+}
+
+void CScummVMUi::HandleForegroundEventL(TBool aForeground) {
+ if(aForeground) {
+ BringUpEmulatorL();
+ }
+}
+
+CScummVMUi::CScummVMUi() {
+}
+
+CScummVMUi::~CScummVMUi() {
+ if(iWatcher) {
+ iThreadWatch.LogonCancel(iWatcher->iStatus);
+ iWatcher->Cancel();
+ }
+ delete iWatcher;
+
+ iThreadWatch.Close();
+}
+
+void CScummVMUi::ConstructL() {
+ BaseConstructL();
+ TBuf<128> startFile;
+ startFile = iEikonEnv->EikAppUi()->Application()->AppFullName();
+ TParse parser;
+ parser.Set(startFile,NULL,NULL);
+
+ startFile = parser.DriveAndPath();
+#ifndef __WINS__
+ startFile.Append( _L("EScummVM.exe"));
+#else
+ startFile.Append( _L("EScummVM.dll"));
+#endif
+ CApaCommandLine* cmdLine=CApaCommandLine::NewLC(startFile);
+ RApaLsSession lsSession;
+ lsSession.Connect();
+ CleanupClosePushL(lsSession);
+ lsSession.StartApp(*cmdLine,iThreadId);
+ CleanupStack::PopAndDestroy();//close lsSession
+ CleanupStack::PopAndDestroy(cmdLine);
+ User::After(500000);// Let the application start
+ TApaTaskList taskList(iEikonEnv->WsSession());
+ TApaTask myTask=taskList.FindApp(TUid::Uid(0x101f9b57));
+ myTask.SendToBackground();
+ TApaTask exeTask=taskList.FindByPos(0);
+ iExeWgId=exeTask.WgId();
+ exeTask.BringToForeground();
+ if(iExeWgId == myTask.WgId()) { // Should n't be the same
+ Exit();
+ }
+ if(iThreadWatch.Open(iThreadId)==KErrNone) {
+ iWatcher = new (ELeave)CScummWatcher;
+ iWatcher->iAppUi=this;
+ iThreadWatch.Logon(iWatcher->iStatus);
+ }
+}
+
+CScummWatcher::CScummWatcher():CActive(EPriorityStandard) {
+ CActiveScheduler::Add(this);
+ iStatus=KRequestPending;
+ SetActive();
+}
+
+CScummWatcher::~CScummWatcher() {
+}
+
+void CScummWatcher::DoCancel() {
+}
+
+void CScummWatcher::RunL() {
+ iAppUi->HandleCommandL(EEikCmdExit);
+}
+
+void CScummVMUi::BringUpEmulatorL() {
+ RThread thread;
+ if(thread.Open(iThreadId)==KErrNone) {
+ thread.Close();
+ TApaTask apaTask(iEikonEnv->WsSession());
+ apaTask.SetWgId(iExeWgId);
+ apaTask.BringToForeground();
+ }
+ else
+ {
+ iExeWgId=-1;
+ }
+}
+
+void CScummVMUi::HandleCommandL(TInt aCommand) {
+ switch(aCommand) {
+ case EEikCmdExit:
+ {
+ RThread thread;
+ if(thread.Open(iThreadId)==KErrNone)
+ {
+ thread.Terminate(0);
+ thread.Close();
+ }
+ Exit();
+ }
+ break;
+ }
+}
+
+GLDEF_C TInt E32Dll(TDllReason) {
+ return KErrNone;
+}
diff --git a/backends/epoc/build/S90/ScummVMApp.h b/backends/epoc/build/S90/ScummVMApp.h
new file mode 100644
index 0000000000..71732f2ec0
--- /dev/null
+++ b/backends/epoc/build/S90/ScummVMApp.h
@@ -0,0 +1,78 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+#ifndef ScummVMapps60h
+#define ScummVMapps60h
+
+#include <eikapp.h>
+#include <e32base.h>
+#include <coecntrl.h>
+#include <eikenv.h>
+#include <coeview.h>
+#include <eikappui.h>
+
+class CScummVM:public CEikApplication {
+public:
+ CScummVM();
+ ~CScummVM();
+ CApaDocument* CreateDocumentL();
+ TUid AppDllUid() const;
+};
+
+
+#include <eikdoc.h>
+
+class CScummVMDoc:public CEikDocument {
+public:
+ ~CScummVMDoc();
+ CEikAppUi* CreateAppUiL();
+ void ConstructL();
+ CScummVMDoc(CEikApplication& aApplicaiton);
+};
+
+#include <eikappui.h>
+class CScummVMUi;
+class CScummWatcher:public CActive {
+public:
+ CScummWatcher();
+ ~CScummWatcher();
+ void DoCancel();
+ void RunL();
+ CScummVMUi* iAppUi;
+};
+
+class CScummVMUi:public CEikAppUi {
+public:
+ CScummVMUi();
+ ~CScummVMUi();
+ void ConstructL();
+ void HandleCommandL(TInt aCommand);
+ void HandleForegroundEventL(TBool aForeground);
+ void BringUpEmulatorL();
+private:
+ TThreadId iThreadId;
+ TInt iExeWgId;
+ RThread iThreadWatch;
+ CScummWatcher* iWatcher;
+};
+#endif
diff --git a/backends/epoc/build/ScummVmAif.rss b/backends/epoc/build/ScummVmAif.rss
new file mode 100644
index 0000000000..cc4424f7cb
--- /dev/null
+++ b/backends/epoc/build/ScummVmAif.rss
@@ -0,0 +1,44 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+#include <aiftool.rh>
+
+
+RESOURCE AIF_DATA
+ {
+ app_uid= 0x101f9b57;
+ //
+ hidden=KAppNotHidden;
+ embeddability=KAppNotEmbeddable;
+ caption_list=
+ {
+ CAPTION { code=ELangEnglish; caption="EScummVM"; },
+ CAPTION { code=ELangAmerican; caption="EScummVM"; },
+ CAPTION { code=ELangOther; caption="EScummVM"; }
+ };
+ //
+ num_icons=2;
+ }
+
+
+
diff --git a/backends/epoc/build/UIQ/BLD.INF b/backends/epoc/build/UIQ/BLD.INF
new file mode 100644
index 0000000000..870189a4d0
--- /dev/null
+++ b/backends/epoc/build/UIQ/BLD.INF
@@ -0,0 +1,13 @@
+PRJ_PLATFORMS
+WINS ARMI // ARM4 THUMB
+
+PRJ_MMPFILES
+..\scummvm_scumm.mmp
+..\scummvm_simon.mmp
+..\scummvm_sky.mmp
+..\scummvm_queen.mmp
+..\scummvm_gob.mmp
+..\scummvm_base.mmp
+.\EScummVM_UIQ.mmp
+
+prj_testmmpfiles
diff --git a/backends/epoc/build/UIQ/EScummVM.cer b/backends/epoc/build/UIQ/EScummVM.cer
new file mode 100644
index 0000000000..8a366f1cab
--- /dev/null
+++ b/backends/epoc/build/UIQ/EScummVM.cer
@@ -0,0 +1,26 @@
+-----BEGIN CERTIFICATE-----
+MIIEfDCCBDqgAwIBAgIBADALBgcqhkjOOAQDBQAwYTEQMA4GA1UEChMHU2N1bW1W
+TTEQMA4GA1UECxMHRGV2VGVhbTEQMA4GA1UEAxMHU2N1bW1WTTEpMCcGCSqGSIb3
+DQEJARYac3VtdGhpbndpY2tlZEB1c2Vycy5zZi5uZXQwHhcNMDUwNDI1MDIxNTA1
+WhcNMDYwNDI1MDIxNTA1WjBhMRAwDgYDVQQKEwdTY3VtbVZNMRAwDgYDVQQLEwdE
+ZXZUZWFtMRAwDgYDVQQDEwdTY3VtbVZNMSkwJwYJKoZIhvcNAQkBFhpzdW10aGlu
+d2lja2VkQHVzZXJzLnNmLm5ldDCCAzswggIuBgcqhkjOOAQBMIICIQKCAQEA84zz
+w3SAZSHUvmpEKn/o+RBhgs+Spxr1vIX4K7nc27dTl8Q8OWw+2kWUsySkzbhcwzV4
+r2exWSUjKeAMhVnnV5bhlTlHQITTEhIm5XkbWWgBnqjxa990YAfU2vSFV//Yq9IP
+eBtsx0Rc3M1QYAuBSZUA9n0J6omc2XrYqHNiqjlkgr0oVX1Y9acFNg2A4hoI0ltK
+0ARqlv+s/yAntg+p2c3abiIFceFpnF0pI/veoyXFASqebUNvquYryiUdSxYxamMF
+PB7i35VRY0WuOcDQsg6gMdAePC+oENBeEGAOaBrJ+M5KFRohcU8H4RF+FqaegtsA
+dHECDoQMfQNynaAMrwIVAL8RRcz9e50iVWpUWeLf19EdQ2crAoIBAQDZZ6z5JfNz
+f/ItU8/0Lo6lmFlC0axYhM5+MKBLGBE/Xo+tqUiwIhVBWGEZN0B8DGD7OnljPqWd
+2LzapsfGfoMh22oQTXljwS13So1akeJK0OaKZS699Nl5YrM0oFa6pLj9wbwPgd0I
+HwaVS4YZhrJyPAKiHZlz7YGIqEvCFjDWBsPMZ1gbTIGrvkhFNvClP7U5gBVj6ASQ
+gLwnuD7oApXfEbyEzPg0EmxD1zHsnvmwtQT66tmnVsgIe9gsF3XL2rlJIxogbM4/
+zKPzWiQaypdqzgdGT/F8fonumN8QA1GR+SHLh6LnxWVGQwXOueXdlZPH8ELg4mYv
+SgRTU+UYDc6YA4IBBQACggEAQ69uT4wfbkrXWu1uozU8yWNTpO1pq/eQdnz70dBr
+iO5wWD0ojEj6IOp968p5DbWCRn/xAl+aNAFlxaMvJrhjcKCPjYENQkPdRhrgB/tO
+B/LzK64RjPswAkOkwLX7GK6N3m0Yt2BW02t8j13f1Ckg1dvX7JKAD2xqAKIap94P
+CbF/URAYGKFNechB3MlJK9/zW9huk9PQ/ulsDrZ0itZuTR+24P7co8hAhGnVL6TC
+zQzL6WHF3MPirr5T0tvquryZKiX3shOJtsRRCjkJS4oEuFAwQx+q7HtCA/6+MmQF
+0odo9lzNa44SVBGkD9M8tRYrO4OaLuU24f4AeUx7VSflnDALBgcqhkjOOAQDBQAD
+LwAwLAIUUS6s1EFzzhP0ZyJ1GE0asFJtkVoCFBbw9qDXTT3mTyCVvmSwCB9YtCuz
+-----END CERTIFICATE-----
diff --git a/backends/epoc/build/UIQ/EScummVM.key b/backends/epoc/build/UIQ/EScummVM.key
new file mode 100644
index 0000000000..9002105043
--- /dev/null
+++ b/backends/epoc/build/UIQ/EScummVM.key
@@ -0,0 +1,20 @@
+-----BEGIN DSA PRIVATE KEY-----
+MIIDPgIBAAKCAQEA84zzw3SAZSHUvmpEKn/o+RBhgs+Spxr1vIX4K7nc27dTl8Q8
+OWw+2kWUsySkzbhcwzV4r2exWSUjKeAMhVnnV5bhlTlHQITTEhIm5XkbWWgBnqjx
+a990YAfU2vSFV//Yq9IPeBtsx0Rc3M1QYAuBSZUA9n0J6omc2XrYqHNiqjlkgr0o
+VX1Y9acFNg2A4hoI0ltK0ARqlv+s/yAntg+p2c3abiIFceFpnF0pI/veoyXFASqe
+bUNvquYryiUdSxYxamMFPB7i35VRY0WuOcDQsg6gMdAePC+oENBeEGAOaBrJ+M5K
+FRohcU8H4RF+FqaegtsAdHECDoQMfQNynaAMrwIVAL8RRcz9e50iVWpUWeLf19Ed
+Q2crAoIBAQDZZ6z5JfNzf/ItU8/0Lo6lmFlC0axYhM5+MKBLGBE/Xo+tqUiwIhVB
+WGEZN0B8DGD7OnljPqWd2LzapsfGfoMh22oQTXljwS13So1akeJK0OaKZS699Nl5
+YrM0oFa6pLj9wbwPgd0IHwaVS4YZhrJyPAKiHZlz7YGIqEvCFjDWBsPMZ1gbTIGr
+vkhFNvClP7U5gBVj6ASQgLwnuD7oApXfEbyEzPg0EmxD1zHsnvmwtQT66tmnVsgI
+e9gsF3XL2rlJIxogbM4/zKPzWiQaypdqzgdGT/F8fonumN8QA1GR+SHLh6LnxWVG
+QwXOueXdlZPH8ELg4mYvSgRTU+UYDc6YAoIBAEOvbk+MH25K11rtbqM1PMljU6Tt
+aav3kHZ8+9HQa4jucFg9KIxI+iDqfevKeQ21gkZ/8QJfmjQBZcWjLya4Y3Cgj42B
+DUJD3UYa4Af7Tgfy8yuuEYz7MAJDpMC1+xiujd5tGLdgVtNrfI9d39QpINXb1+yS
+gA9sagCiGqfeDwmxf1EQGBihTXnIQdzJSSvf81vYbpPT0P7pbA62dIrWbk0ftuD+
+3KPIQIRp1S+kws0My+lhxdzD4q6+U9Lb6rq8mSol97ITibbEUQo5CUuKBLhQMEMf
+qux7QgP+vjJkBdKHaPZczWuOElQRpA/TPLUWKzuDmi7lNuH+AHlMe1Un5ZwCFBoc
+P3MxHDcW4ZTIXdJxxCylT+ix
+-----END DSA PRIVATE KEY-----
diff --git a/backends/epoc/build/UIQ/EScummVM.rss b/backends/epoc/build/UIQ/EScummVM.rss
new file mode 100644
index 0000000000..470e819220
--- /dev/null
+++ b/backends/epoc/build/UIQ/EScummVM.rss
@@ -0,0 +1,62 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+// ScummVM.RSS
+
+NAME SCUM
+
+// Include definitions of resource STRUCTS used by this
+// resource script
+#include <eikon.rh>
+#include "..\backends\epoc\Scummvm.hrh"
+// Include the standard Eikon resource ids
+#include <eikon.rsg>
+
+
+RESOURCE RSS_SIGNATURE
+ {
+ }
+
+RESOURCE TBUF16 { buf=""; }
+
+RESOURCE EIK_APP_INFO
+ {
+ menubar = r_scum_menubar;
+ }
+
+RESOURCE MENU_BAR r_scum_menubar // *** Menu bar
+{
+ titles =
+ {
+ MENU_TITLE { menu_pane = r_scum_menu; txt = "ScummVM"; }
+ };
+}
+
+RESOURCE MENU_PANE r_scum_menu // *** Submenu
+{
+ items =
+ {
+
+ MENU_ITEM{command = EEikCmdExit;txt = "Exit";}
+ };
+}
diff --git a/backends/epoc/build/UIQ/EScummVM_080.pkg b/backends/epoc/build/UIQ/EScummVM_080.pkg
new file mode 100644
index 0000000000..7dabed2d08
--- /dev/null
+++ b/backends/epoc/build/UIQ/EScummVM_080.pkg
@@ -0,0 +1,35 @@
+;;;
+;;; EScummVM .PKG file for .SIS gegeration
+;;;
+
+; Languages
+;&EN
+
+; UID is the app's UID
+#{"EScummVM"},(0x101f9b57),0,80,3
+
+; Platform type
+(0x101F617B), 2, 0, 0, {"UIQ20ProductID"}
+
+; Signature
+*"EScummVM.key","EScummVM.cer"
+
+; Application file
+"..\..\..\..\UIQ_21\epoc32\release\armi\urel\EScummVM.app"-"!:\system\apps\EScummVM\EScummVM.app"
+
+; AIF application information file
+"..\..\..\..\UIQ_21\epoc32\data\z\system\apps\EScummVM\EScummVM.aif"-"!:\system\apps\EScummVM\EScummVM.aif"
+
+; Resource file
+"..\..\..\..\UIQ_21\epoc32\data\z\system\apps\EScummVM\EScummVM.rsc"-"!:\system\apps\EScummVM\EScummVM.rsc"
+
+; Empty .placeholder file, ensures creation of c:\documents\EScummVM\ for future file saves
+".placeholder"-"c:\documents\EScummVM\.placeholder"
+
+; Config/log files: 'empty' will automagically be removed on uninstall
+""-"c:\documents\EScummVM\scummvm.ini",FN
+""-"c:\documents\EScummVM\scummvm.stdout.txt",FN
+""-"c:\documents\EScummVM\scummvm.stderr.txt",FN
+
+; This install layout will let you upgrade to newer versions wihout loss of scummvm.ini.
+; It will remove the config file, std***.txt files & dirs on uninstall. \ No newline at end of file
diff --git a/backends/epoc/build/UIQ/EScummVM_UIQ.mmp b/backends/epoc/build/UIQ/EScummVM_UIQ.mmp
new file mode 100644
index 0000000000..c0ad2e1bef
--- /dev/null
+++ b/backends/epoc/build/UIQ/EScummVM_UIQ.mmp
@@ -0,0 +1,110 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+//
+// EPOC UIQ MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+TARGET ESCUMMVM.APP
+TARGETPATH system\apps\EScummVM
+TARGETTYPE app
+
+OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
+OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
+
+RESOURCE EScummVM.rss
+EPOCSTACKSIZE 0x80008000 // this enables ECompXL app compression
+AIF EScummVm.Aif ..\ ScummVmAif.rss c16 ScummL.bmp ScummLM.bmp ScummS.bmp ScummSM.bmp // still fails?
+UID 0x100039ce 0x101f9b57
+
+MACRO UIQ
+MACRO NONSTANDARD_PORT
+
+// these need too high a resolution
+MACRO DISABLE_SWORD1
+MACRO DISABLE_SWORD2
+// these are not ready to be released
+MACRO DISABLE_SAGA
+MACRO DISABLE_KYRA
+// these work, so don't disable them, left here because during dev you might wanna turn them off once in a while :)
+//MACRO DISABLE_SIMON
+//MACRO DISABLE_SKY
+//MACRO DISABLE_QUEEN
+//MACRO DISABLE_GOB
+
+// *** Static Libraries
+
+STATICLIBRARY scummvm_scumm.lib
+STATICLIBRARY scummvm_simon.lib
+STATICLIBRARY scummvm_sky.lib
+STATICLIBRARY scummvm_queen.lib
+STATICLIBRARY scummvm_gob.lib
+STATICLIBRARY scummvm_base.lib
+
+STATICLIBRARY libmad.lib
+STATICLIBRARY zlib.lib
+STATICLIBRARY esdl.lib
+#if !defined(WINS)
+STATICLIBRARY egcc.lib // for __fixunsdfsi
+#endif
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\.. ..\..\..\..\common ..\..\..\..\gui
+USERINCLUDE ..\..\..\..\backends\fs ..\..\..\..\backends\epoc ..\..\..\..\backends\sdl ..\..\..\..\sound
+
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\..\..\..\backends\epoc // for portdefs.h
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\..\
+
+//START_AUTO_OBJECTS_BASE_// Updated @ Tue May 31 18:35:38 2005
+SOURCE base\engine.cpp
+SOURCE base\gameDetector.cpp
+SOURCE base\main.cpp
+SOURCE base\plugins.cpp
+//STOP_AUTO_OBJECTS_BASE_//
+
+// backend EPOC/SDL/ESDL specific includes
+SOURCE backends\sdl\events.cpp
+SOURCE backends\sdl\graphics.cpp
+SOURCE backends\sdl\sdl.cpp
+SOURCE backends\fs\symbian\symbian-fs.cpp
+SOURCE backends\epoc\SymbianOS.cpp
+SOURCE backends\epoc\ScummApp.cpp
+
+// *** Dynamic Libraries
+
+LIBRARY cone.lib eikcore.lib
+LIBRARY euser.lib apparc.lib fbscli.lib
+LIBRARY estlib.lib apgrfx.lib
+LIBRARY gdi.lib hal.lib
+LIBRARY mediaclientaudiostream.lib efsrv.lib ws32.lib
+LIBRARY qikctl.lib
diff --git a/backends/epoc/build/epoc-libmad.zip b/backends/epoc/build/epoc-libmad.zip
new file mode 100644
index 0000000000..dec1a8eb69
--- /dev/null
+++ b/backends/epoc/build/epoc-libmad.zip
Binary files differ
diff --git a/backends/epoc/build/epoc-zlib.zip b/backends/epoc/build/epoc-zlib.zip
new file mode 100644
index 0000000000..efae82d6b3
--- /dev/null
+++ b/backends/epoc/build/epoc-zlib.zip
Binary files differ
diff --git a/backends/epoc/build/make.bat b/backends/epoc/build/make.bat
new file mode 100644
index 0000000000..a6ea619763
--- /dev/null
+++ b/backends/epoc/build/make.bat
@@ -0,0 +1,46 @@
+@ECHO OFF
+
+SET target=%2
+
+if "%1"=="clean" goto clean
+if "%1"=="test" goto test
+if "%1"=="fast" goto fast
+if "%1"=="--help" goto help
+if "%1"=="-h" goto help
+
+SET platform=armi
+if "%1"=="" goto build
+SET platform=%1
+
+:build
+echo ---------------------------------------------------
+@ECHO ON
+call abld build %platform% urel %target%
+goto End
+
+:fast
+echo ---------------------------------------------------
+REM @ECHO ON
+call abld library %platform% urel %target%
+REM call abld resource %platform% urel %target%
+call abld target %platform% urel %target%
+goto End
+
+:test
+echo ---------------------------------------------------
+@ECHO ON
+call abld test build armi urel %target%
+goto End
+
+:clean
+abld clean %target%
+goto End
+
+:help
+echo Usage: make clean
+echo make [armi|wins] [target]
+goto End
+
+:End
+echo ---------------------------------------------------
+
diff --git a/backends/epoc/build/scummL.bmp b/backends/epoc/build/scummL.bmp
new file mode 100644
index 0000000000..4cb8bd3228
--- /dev/null
+++ b/backends/epoc/build/scummL.bmp
Binary files differ
diff --git a/backends/epoc/build/scummLm.bmp b/backends/epoc/build/scummLm.bmp
new file mode 100644
index 0000000000..f4f35e48f2
--- /dev/null
+++ b/backends/epoc/build/scummLm.bmp
Binary files differ
diff --git a/backends/epoc/build/scummS.bmp b/backends/epoc/build/scummS.bmp
new file mode 100644
index 0000000000..457ef4d241
--- /dev/null
+++ b/backends/epoc/build/scummS.bmp
Binary files differ
diff --git a/backends/epoc/build/scummSm.bmp b/backends/epoc/build/scummSm.bmp
new file mode 100644
index 0000000000..9ddfee2a85
--- /dev/null
+++ b/backends/epoc/build/scummSm.bmp
Binary files differ
diff --git a/backends/epoc/build/scummvm_base.mmp b/backends/epoc/build/scummvm_base.mmp
new file mode 100644
index 0000000000..e7c0a5f3de
--- /dev/null
+++ b/backends/epoc/build/scummvm_base.mmp
@@ -0,0 +1,136 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+
+//
+// EPOC MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+TARGET scummvm_base.lib
+TARGETTYPE lib
+OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
+OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
+
+MACRO NONSTANDARD_PORT
+MACRO USE_MAD
+MACRO USE_ZLIB
+
+// these need too high a resolution
+MACRO DISABLE_SWORD1
+MACRO DISABLE_SWORD2
+// these are not ready to be released
+MACRO DISABLE_SAGA
+MACRO DISABLE_KYRA
+// these work, so don't disable them :)
+//MACRO DISABLE_SIMON
+//MACRO DISABLE_SKY
+//MACRO DISABLE_QUEEN
+//MACRO DISABLE_GOB
+
+// *** Include paths
+
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound
+USERINCLUDE ..\..\..\backends\fs ..\..\..\backends\epoc ..\..\..\backends\sdl
+
+SYSTEMINCLUDE \epoc32\include\ESDL
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\..\..\backends\epoc // for portdefs.h
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..
+
+//START_AUTO_OBJECTS_COMMON_// Updated @ Mon Jun 6 23:07:22 2005
+SOURCE common\config-file.cpp
+SOURCE common\config-manager.cpp
+SOURCE common\file.cpp
+SOURCE common\md5.cpp
+SOURCE common\mutex.cpp
+SOURCE common\str.cpp
+SOURCE common\stream.cpp
+SOURCE common\timer.cpp
+SOURCE common\util.cpp
+SOURCE common\savefile.cpp
+SOURCE common\system.cpp
+//STOP_AUTO_OBJECTS_COMMON_//
+
+//START_AUTO_OBJECTS_GRAPHICS_// Updated @ Mon Jun 6 23:07:22 2005
+SOURCE graphics\animation.cpp
+SOURCE graphics\consolefont.cpp
+SOURCE graphics\font.cpp
+SOURCE graphics\fontman.cpp
+SOURCE graphics\newfont.cpp
+SOURCE graphics\newfont_big.cpp
+SOURCE graphics\primitives.cpp
+SOURCE graphics\scummfont.cpp
+SOURCE graphics\surface.cpp
+//STOP_AUTO_OBJECTS_GRAPHICS_//
+
+//START_AUTO_OBJECTS_GUI_// Updated @ Mon Jun 6 23:07:22 2005
+SOURCE gui\about.cpp
+SOURCE gui\browser.cpp
+SOURCE gui\chooser.cpp
+SOURCE gui\console.cpp
+SOURCE gui\dialog.cpp
+SOURCE gui\editable.cpp
+SOURCE gui\EditTextWidget.cpp
+SOURCE gui\launcher.cpp
+SOURCE gui\ListWidget.cpp
+SOURCE gui\message.cpp
+SOURCE gui\newgui.cpp
+SOURCE gui\options.cpp
+SOURCE gui\PopUpWidget.cpp
+SOURCE gui\ScrollBarWidget.cpp
+SOURCE gui\TabWidget.cpp
+SOURCE gui\widget.cpp
+//STOP_AUTO_OBJECTS_GUI_//
+
+//START_AUTO_OBJECTS_SOUND_// Updated @ Mon Jun 6 23:07:22 2005
+SOURCE sound\adpcm.cpp
+SOURCE sound\audiocd.cpp
+SOURCE sound\audiostream.cpp
+SOURCE sound\flac.cpp
+SOURCE sound\fmopl.cpp
+SOURCE sound\mididrv.cpp
+SOURCE sound\midiparser.cpp
+SOURCE sound\midiparser_smf.cpp
+SOURCE sound\midiparser_xmidi.cpp
+SOURCE sound\mixer.cpp
+SOURCE sound\mp3.cpp
+SOURCE sound\mpu401.cpp
+SOURCE sound\rate.cpp
+SOURCE sound\voc.cpp
+SOURCE sound\vorbis.cpp
+SOURCE sound\wave.cpp
+SOURCE sound\softsynth\adlib.cpp
+SOURCE sound\softsynth\ym2612.cpp
+//STOP_AUTO_OBJECTS_SOUND_//
+
+// backend specific includes
+SOURCE backends\midi\null.cpp
+SOURCE backends\fs\fs.cpp
+// backend specific includes
diff --git a/backends/epoc/build/scummvm_gob.mmp b/backends/epoc/build/scummvm_gob.mmp
new file mode 100644
index 0000000000..c580f4bb0c
--- /dev/null
+++ b/backends/epoc/build/scummvm_gob.mmp
@@ -0,0 +1,69 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+//
+// EPOC MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+TARGET scummvm_gob.lib
+TARGETTYPE lib
+OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
+OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
+
+MACRO NONSTANDARD_PORT
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..
+
+//START_AUTO_OBJECTS_GOB_// Updated @ Mon Jun 6 23:07:22 2005
+SOURCE gob\anim.cpp
+SOURCE gob\cdrom.cpp
+SOURCE gob\dataio.cpp
+SOURCE gob\draw.cpp
+SOURCE gob\driver_vga.cpp
+SOURCE gob\game.cpp
+SOURCE gob\global.cpp
+SOURCE gob\goblin.cpp
+SOURCE gob\init.cpp
+SOURCE gob\inter.cpp
+SOURCE gob\map.cpp
+SOURCE gob\mult.cpp
+SOURCE gob\pack.cpp
+SOURCE gob\palanim.cpp
+SOURCE gob\parse.cpp
+SOURCE gob\scenery.cpp
+SOURCE gob\util.cpp
+SOURCE gob\video.cpp
+SOURCE gob\sound.cpp
+SOURCE gob\timer.cpp
+SOURCE gob\gob.cpp
+//STOP_AUTO_OBJECTS_GOB_//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\gob
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\..\..\backends\epoc
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\..\..\backends\epoc
diff --git a/backends/epoc/build/scummvm_queen.mmp b/backends/epoc/build/scummvm_queen.mmp
new file mode 100644
index 0000000000..699a004f7b
--- /dev/null
+++ b/backends/epoc/build/scummvm_queen.mmp
@@ -0,0 +1,69 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+//
+// EPOC MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+TARGET scummvm_queen.lib
+TARGETTYPE lib
+OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
+OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
+
+MACRO NONSTANDARD_PORT
+MACRO USE_MAD
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..
+
+//START_AUTO_OBJECTS_QUEEN_// Updated @ Mon Jun 6 23:07:22 2005
+SOURCE queen\bankman.cpp
+SOURCE queen\command.cpp
+SOURCE queen\credits.cpp
+SOURCE queen\cutaway.cpp
+SOURCE queen\debug.cpp
+SOURCE queen\display.cpp
+SOURCE queen\graphics.cpp
+SOURCE queen\grid.cpp
+SOURCE queen\input.cpp
+SOURCE queen\journal.cpp
+SOURCE queen\logic.cpp
+SOURCE queen\music.cpp
+SOURCE queen\musicdata.cpp
+SOURCE queen\queen.cpp
+SOURCE queen\resource.cpp
+SOURCE queen\restables.cpp
+SOURCE queen\sound.cpp
+SOURCE queen\state.cpp
+SOURCE queen\talk.cpp
+SOURCE queen\walk.cpp
+//STOP_AUTO_OBJECTS_QUEEN_//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\queen
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\..\..\backends\epoc
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\..\..\backends\epoc
diff --git a/backends/epoc/build/scummvm_scumm.mmp b/backends/epoc/build/scummvm_scumm.mmp
new file mode 100644
index 0000000000..9760985f2a
--- /dev/null
+++ b/backends/epoc/build/scummvm_scumm.mmp
@@ -0,0 +1,142 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+
+//
+// EPOC MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+TARGET scummvm_scumm.lib
+TARGETTYPE lib
+OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
+OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
+
+MACRO NONSTANDARD_PORT
+MACRO USE_MAD
+MACRO USE_ZLIB
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..
+
+//START_AUTO_OBJECTS_SCUMM_// Updated @ Mon Jun 6 23:07:22 2005
+SOURCE scumm\actor.cpp
+SOURCE scumm\akos.cpp
+SOURCE scumm\base-costume.cpp
+SOURCE scumm\bomp.cpp
+SOURCE scumm\boxes.cpp
+SOURCE scumm\camera.cpp
+SOURCE scumm\charset.cpp
+SOURCE scumm\costume.cpp
+SOURCE scumm\cursor.cpp
+SOURCE scumm\debugger.cpp
+SOURCE scumm\dialogs.cpp
+SOURCE scumm\gfx.cpp
+SOURCE scumm\imuse.cpp
+SOURCE scumm\imuse_player.cpp
+SOURCE scumm\input.cpp
+SOURCE scumm\instrument.cpp
+SOURCE scumm\help.cpp
+SOURCE scumm\midiparser_ro.cpp
+SOURCE scumm\midiparser_eup.cpp
+SOURCE scumm\nut_renderer.cpp
+SOURCE scumm\object.cpp
+SOURCE scumm\palette.cpp
+SOURCE scumm\player_mod.cpp
+SOURCE scumm\player_v1.cpp
+SOURCE scumm\player_nes.cpp
+SOURCE scumm\player_v2.cpp
+SOURCE scumm\player_v2a.cpp
+SOURCE scumm\player_v3a.cpp
+SOURCE scumm\resource.cpp
+SOURCE scumm\resource_v2.cpp
+SOURCE scumm\resource_v3.cpp
+SOURCE scumm\resource_v4.cpp
+SOURCE scumm\room.cpp
+SOURCE scumm\saveload.cpp
+SOURCE scumm\script.cpp
+SOURCE scumm\script_c64.cpp
+SOURCE scumm\script_v2.cpp
+SOURCE scumm\script_v5.cpp
+SOURCE scumm\script_v6.cpp
+SOURCE scumm\script_v6he.cpp
+SOURCE scumm\scumm.cpp
+SOURCE scumm\sound.cpp
+SOURCE scumm\string.cpp
+SOURCE scumm\usage_bits.cpp
+SOURCE scumm\util.cpp
+SOURCE scumm\vars.cpp
+SOURCE scumm\verbs.cpp
+SOURCE scumm\thumbnail.cpp
+//STOP_AUTO_OBJECTS_SCUMM_//
+
+//START_AUTO_OBJECTS_SCUMM_DISABLE_SCUMM_7_8// Updated @ Mon Jun 6 23:03:34 2005
+SOURCE scumm\script_v8.cpp
+SOURCE scumm\imuse_digi\dimuse.cpp
+SOURCE scumm\imuse_digi\dimuse_bndmgr.cpp
+SOURCE scumm\imuse_digi\dimuse_codecs.cpp
+SOURCE scumm\imuse_digi\dimuse_music.cpp
+SOURCE scumm\imuse_digi\dimuse_sndmgr.cpp
+SOURCE scumm\imuse_digi\dimuse_script.cpp
+SOURCE scumm\imuse_digi\dimuse_track.cpp
+SOURCE scumm\imuse_digi\dimuse_tables.cpp
+SOURCE scumm\insane\insane.cpp
+SOURCE scumm\insane\insane_ben.cpp
+SOURCE scumm\insane\insane_enemy.cpp
+SOURCE scumm\insane\insane_scenes.cpp
+SOURCE scumm\insane\insane_iact.cpp
+SOURCE scumm\smush\chunk.cpp
+SOURCE scumm\smush\codec1.cpp
+SOURCE scumm\smush\codec37.cpp
+SOURCE scumm\smush\codec47.cpp
+SOURCE scumm\smush\imuse_channel.cpp
+SOURCE scumm\smush\smush_player.cpp
+SOURCE scumm\smush\saud_channel.cpp
+SOURCE scumm\smush\smush_mixer.cpp
+SOURCE scumm\smush\smush_font.cpp
+//STOP_AUTO_OBJECTS_SCUMM_DISABLE_SCUMM_7_8//
+
+//START_AUTO_OBJECTS_SCUMM_DISABLE_HE// Updated @ Mon Jun 6 23:03:34 2005
+SOURCE scumm\logic_he.cpp
+SOURCE scumm\palette_he.cpp
+SOURCE scumm\resource_v7he.cpp
+SOURCE scumm\script_v7he.cpp
+SOURCE scumm\script_v72he.cpp
+SOURCE scumm\script_v80he.cpp
+SOURCE scumm\script_v90he.cpp
+SOURCE scumm\script_v100he.cpp
+SOURCE scumm\sprite_he.cpp
+SOURCE scumm\wiz_he.cpp
+//STOP_AUTO_OBJECTS_SCUMM_DISABLE_HE//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\scumm ..\..\..\scumm\smush ..\..\..\scumm\insane
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\..\..\backends\epoc
+
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\..\..\backends\epoc // for portdefs.h
diff --git a/backends/epoc/build/scummvm_simon.mmp b/backends/epoc/build/scummvm_simon.mmp
new file mode 100644
index 0000000000..ed9fbd8679
--- /dev/null
+++ b/backends/epoc/build/scummvm_simon.mmp
@@ -0,0 +1,64 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+
+//
+// EPOC MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+TARGET scummvm_simon.lib
+TARGETTYPE lib
+OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
+OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
+
+MACRO NONSTANDARD_PORT
+MACRO USE_MAD
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..
+
+//START_AUTO_OBJECTS_SIMON_// Updated @ Mon Jun 6 23:07:22 2005
+SOURCE simon\charset.cpp
+SOURCE simon\cursor.cpp
+SOURCE simon\debug.cpp
+SOURCE simon\debugger.cpp
+SOURCE simon\icons.cpp
+SOURCE simon\items.cpp
+SOURCE simon\midi.cpp
+SOURCE simon\midiparser_s1d.cpp
+SOURCE simon\res.cpp
+SOURCE simon\saveload.cpp
+SOURCE simon\sound.cpp
+SOURCE simon\simon.cpp
+SOURCE simon\verb.cpp
+SOURCE simon\vga.cpp
+//STOP_AUTO_OBJECTS_SIMON_//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\simon
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\..\..\backends\epoc
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\..\..\backends\epoc
diff --git a/backends/epoc/build/scummvm_sky.mmp b/backends/epoc/build/scummvm_sky.mmp
new file mode 100644
index 0000000000..985b0f8d0b
--- /dev/null
+++ b/backends/epoc/build/scummvm_sky.mmp
@@ -0,0 +1,71 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header:
+ */
+
+
+//
+// EPOC MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+TARGET scummvm_sky.lib
+TARGETTYPE lib
+OPTION MSVC /QIfist /Ob1 /Oy /GF // /QIfist disables use of __ftol2 to avoid linker probs with MS libc: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefQIfistSuppress_ftol.asp
+OPTION GCC -Wno-multichar -Wno-reorder // don't optimize for ARM, platform way too sensitive for that :( just turn off some common warnings
+
+MACRO NONSTANDARD_PORT
+MACRO USE_MAD
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..
+
+//START_AUTO_OBJECTS_SKY_// Updated @ Mon Jun 6 23:07:22 2005
+SOURCE sky\autoroute.cpp
+SOURCE sky\compact.cpp
+SOURCE sky\control.cpp
+SOURCE sky\debug.cpp
+SOURCE sky\disk.cpp
+SOURCE sky\grid.cpp
+SOURCE sky\hufftext.cpp
+SOURCE sky\intro.cpp
+SOURCE sky\logic.cpp
+SOURCE sky\mouse.cpp
+SOURCE sky\rnc_deco.cpp
+SOURCE sky\screen.cpp
+SOURCE sky\sky.cpp
+SOURCE sky\sound.cpp
+SOURCE sky\text.cpp
+SOURCE sky\music\adlibchannel.cpp
+SOURCE sky\music\adlibmusic.cpp
+SOURCE sky\music\gmchannel.cpp
+SOURCE sky\music\gmmusic.cpp
+SOURCE sky\music\mt32music.cpp
+SOURCE sky\music\musicbase.cpp
+//STOP_AUTO_OBJECTS_SKY_//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\sky ..\..\..\sky\music
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\..\..\backends\epoc
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\..\..\backends\epoc
diff --git a/backends/epoc/build/updateMMPs.pl b/backends/epoc/build/updateMMPs.pl
new file mode 100644
index 0000000000..fc7108c3e6
--- /dev/null
+++ b/backends/epoc/build/updateMMPs.pl
@@ -0,0 +1,156 @@
+
+use Cwd;
+
+print "
+=======================================================================================
+Preparing to update all the Symbian MMP project files with objects from module.mk files
+=======================================================================================
+
+";
+
+$buildDir = getcwd();
+chdir("../../../");
+
+my @std = (""); # section standard, no #ifdef
+#my @sec = ("", "DISABLE_SCUMM_7_8", "DISABLE_HE"); # sections for scumm DISABLED_s
+my @exc = ("mt32","fluidsynth"); # exclusions for sound
+
+#arseModule(mmpStr, dirStr, ifdefArray, [exclusionsArray])
+#ParseModule("_base", "base", \@std); # now in EScummVM_TRG.mmp, these never change anyways...
+ParseModule("_base", "common", \@std);
+ParseModule("_base", "gui", \@std);
+ParseModule("_base", "graphics", \@std);
+ParseModule("_base", "sound", \@std, \@exc);
+
+ParseModule("_scumm", "scumm", \@std); #\@sec # no more: enabled all again
+ParseModule("_queen", "queen", \@std);
+ParseModule("_simon", "simon", \@std);
+ParseModule("_sky", "sky", \@std);
+ParseModule("_gob", "gob", \@std);
+
+print "
+=======================================================================================
+Done. Enjoy :P
+=======================================================================================
+";
+# parses multiple sections per mmp/module
+sub ParseModule
+{
+ my ($mmp,$module,$sections,$exclusions) = @_;
+ my @sections = @{$sections};
+ my @exclusions = @{$exclusions};
+
+ foreach $section (@sections)
+ {
+ CheckForModuleMK($module, $section, @exclusions);
+ UpdateProjectFile($mmp, $module, $section);
+ }
+}
+
+# parses all module.mk files in a dir and its subdirs
+sub CheckForModuleMK
+{
+ my ($item,$section,@exclusions) = @_;
+
+ if (-d $item)
+ {
+ #print "$item\n";
+
+ opendir DIR, $item;
+ #my @Files = readdir DIR;
+ my @Files = grep s/^([^\.].*)$/$1/, readdir DIR;
+ closedir DIR;
+
+ foreach $entry (@Files)
+ {
+ CheckForModuleMK("$item/$entry", $section, @exclusions);
+ }
+ }
+
+ if (-f $item and $item =~ /.*\/module.mk$/)
+ {
+ my $sec = "";
+ my $secnum = 0;
+
+ print "Parsing $item for section '$section' ... ";
+
+ open FILE, $item;
+ my @lines = <FILE>;
+ close FILE;
+
+ my $count = @lines;
+ print "$count lines";
+
+ A: foreach $line (@lines)
+ {
+ # found a section? reset
+ if ($line =~ /^ifndef (.*)/)
+ {
+ $sec = $1;
+ }
+
+ # found an object? Not uncommented!
+ if (!($line =~ /^#/) && $line =~ s/\.o/.cpp/)
+ {
+ # handle this section?
+ if ($sec eq $section)
+ {
+ $line =~ s/^\s*//g; # remove possible leading whitespace
+ $line =~ s/ \\//; # remove possible trailing ' \'
+ $line =~ s/\//\\/g; # replace / with \
+ chop($line); # remove \n
+
+ # do we need to skip this file?
+ foreach $exclusion (@exclusions)
+ {
+ if ($line =~ /$exclusion/)
+ {
+ #print "\n !$line (excluded)";
+ next A;
+ }
+ }
+
+ $secnum++;
+ #print "\n $line";
+ $output .= "SOURCE $line\n";
+ }
+ }
+ }
+ print " -- $secnum objects selected\n";
+ }
+}
+
+# update an MMP project file with the new objects
+sub UpdateProjectFile
+{
+ my ($mmp,$module,$section) = @_;
+ my $n = "AUTO_OBJECTS_".uc($module)."_$section";
+ my $a = "\/\/START_$n\/\/";
+ my $b = "\/\/STOP_$n\/\/";
+ my $name = "scummvm$mmp.mmp";
+ my $file = "$buildDir/$name";
+ my $updated = " Updated @ ".localtime();
+
+ print " ===>Updating backends/epoc/build/$name @ $n ... ";
+
+ open FILE, "$file";
+ my @lines = <FILE>;
+ close FILE;
+
+# open FILE, ">$file~";
+# print FILE @lines;
+# close FILE;
+
+ my $onestr = join("",@lines);
+ $onestr =~ s/$a.*$b/$a$updated\n$output$b/s;
+
+ open FILE, ">$file";
+ print FILE $onestr;
+ close FILE;
+
+ print "done.\n";
+
+ $output = "";
+}
+
+ \ No newline at end of file
diff --git a/backends/epoc/portdefs.h b/backends/epoc/portdefs.h
new file mode 100644
index 0000000000..2f993c7e4e
--- /dev/null
+++ b/backends/epoc/portdefs.h
@@ -0,0 +1,78 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003-2005 Andreas 'Sprawl' Karlsson - Original EPOC port, ESDL
+ * Copyright (C) 2003-2005 Lars 'AnotherGuest' Persson - Original EPOC port, Audio System
+ * Copyright (C) 2005 Jurgen 'SumthinWicked' Braam - EPOC/CVS maintainer
+ * Copyright (C) 2005 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+#include <assert.h>
+#include <stdarg.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <e32def.h>
+
+#include <e32std.h>
+#include <math.h>
+
+
+// the place in Symbian FS where scummvm.ini & std***.txt are saved
+#define SYMBIAN32_DOC_DIR "C:\\documents\\EScummVM\\" // includes final \\!
+#define DISABLE_HQ_SCALERS // we only need 1x
+
+// hack in some tricks to work around not having these fcns for Symbian
+// and we _really_ don't wanna link with any other windows LIBC library!
+#ifdef __GCC32__
+
+ #define snprintf(buf,len,args...) sprintf(buf,args)
+ #define vsnprintf snprintf
+
+#else // WINS
+
+ // let's just blatantly ignore this for now and just get it to work :P but does n't work from the debug function
+ int inline scumm_snprintf (char *str, unsigned long n, char const *fmt, ...)
+ {
+ va_list args;
+ va_start(args, fmt);
+ vsprintf(str, fmt, args);
+ va_end(args);
+ return strlen(str);
+ }
+
+ #define snprintf scumm_snprintf
+ #define vsnprintf scumm_snprintf
+
+#endif
+
+// somehow nobody has this function...
+#define hypot(a, b) sqrt((a)*(a) + (b)*(b))
+
+// Symbian bsearch implementation is flawed
+void inline *scumm_bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)) {
+ size_t i;
+
+ for (i=0; i<nmemb; i++)
+ if (compar(key, (void*)((size_t)base + size * i)) == 0)
+ return (void*)((size_t)base + size * i);
+ return NULL;
+}
+#define bsearch scumm_bsearch
+