aboutsummaryrefslogtreecommitdiff
path: root/backends/epoc/S90
diff options
context:
space:
mode:
Diffstat (limited to 'backends/epoc/S90')
-rw-r--r--backends/epoc/S90/ScummVMApp.cpp171
-rw-r--r--backends/epoc/S90/ScummVMApp.h83
-rw-r--r--backends/epoc/S90/ScummvmS90.rss62
-rw-r--r--backends/epoc/S90/Scummvm_S90_App.mmp48
-rw-r--r--backends/epoc/S90/scummvm-CVS-SymbianS90.pkg31
5 files changed, 395 insertions, 0 deletions
diff --git a/backends/epoc/S90/ScummVMApp.cpp b/backends/epoc/S90/ScummVMApp.cpp
new file mode 100644
index 0000000000..4de27158b2
--- /dev/null
+++ b/backends/epoc/S90/ScummVMApp.cpp
@@ -0,0 +1,171 @@
+/* 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 <scummvms90.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("ScummVM.exe"));
+#else
+ startFile.Append( _L("ScummVM.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;
+ Exit();
+ }
+}
+
+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/S90/ScummVMApp.h b/backends/epoc/S90/ScummVMApp.h
new file mode 100644
index 0000000000..e297d75e9d
--- /dev/null
+++ b/backends/epoc/S90/ScummVMApp.h
@@ -0,0 +1,83 @@
+/* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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(CEikApplication &aApplicaiton);
+ ~CScummVMDoc();
+
+ CEikAppUi *CreateAppUiL();
+ void ConstructL();
+};
+
+#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/S90/ScummvmS90.rss b/backends/epoc/S90/ScummvmS90.rss
new file mode 100644
index 0000000000..0c52253483
--- /dev/null
+++ b/backends/epoc/S90/ScummvmS90.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 "..\src\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/S90/Scummvm_S90_App.mmp b/backends/epoc/S90/Scummvm_S90_App.mmp
new file mode 100644
index 0000000000..6fb8894027
--- /dev/null
+++ b/backends/epoc/S90/Scummvm_S90_App.mmp
@@ -0,0 +1,48 @@
+/* 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 ScummVMS90.app
+TARGETPATH system\apps\ScummVMS90
+TARGETTYPE app
+
+UID 0x100039ce 0x101f9b57
+RESOURCE SCUMMVMS90.rss
+
+SOURCEPATH .
+USERINCLUDE .
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc
+
+// app source
+SOURCE ScummVMApp.cpp
+
+sourcepath ..
+AIF ScummVmS90.Aif ..\res\ ScummVmAif.rss c16 ScummL.bmp ScummLM.bmp ScummS.bmp ScummSM.bmp
+
+// 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/S90/scummvm-CVS-SymbianS90.pkg b/backends/epoc/S90/scummvm-CVS-SymbianS90.pkg
new file mode 100644
index 0000000000..942a445103
--- /dev/null
+++ b/backends/epoc/S90/scummvm-CVS-SymbianS90.pkg
@@ -0,0 +1,31 @@
+;;;
+;;; ScummVM .PKG file for .SIS gegeration
+;;;
+
+; Languages
+;&EN
+
+; UID is the app's UID
+#{"ScummVM S90"},(0x101f9b57),0,80,3
+
+; Application file Launcher and actual exe
+"\epoc32\release\armi\urel\ScummVMS90.app"-"!:\system\apps\ScummVMS90\ScummVMS90.app"
+"\epoc32\release\armi\urel\ScummVM.exe"-"!:\system\apps\ScummVMS90\ScummVM.exe"
+
+; AIF application information file
+"\epoc32\data\z\system\apps\ScummVMS90\ScummVMS90.aif"-"!:\system\apps\ScummVMS90\ScummVMS90.aif"
+
+; Resource file
+"\epoc32\data\z\system\apps\ScummVMS90\ScummVMS90.rsc"-"!:\system\apps\ScummVMS90\ScummVMS90.rsc"
+
+; Empty .placeholder file, ensures creation of c:\documents\ScummVM\ for future file saves
+"..\.placeholder"-"c:\documents\ScummVM\.placeholder"
+
+; Config/log files: 'empty' will automagically be removed on uninstall
+""-"c:\documents\ScummVM\scummvm.ini",FILENULL
+""-"c:\documents\ScummVM\scummvm.stdout.txt",FILENULL
+""-"c:\documents\ScummVM\scummvm.stderr.txt",FILENULL
+""-"!:\system\apps\ScummVM\sdl.ini",FILENULL
+
+; 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