aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/symbian
diff options
context:
space:
mode:
Diffstat (limited to 'backends/platform/symbian')
-rw-r--r--backends/platform/symbian/.placeholder1
-rw-r--r--backends/platform/symbian/AdaptAllMMPs.pl382
-rw-r--r--backends/platform/symbian/BuildPackageUpload_AllVersions.pl637
-rw-r--r--backends/platform/symbian/BuildPackageUpload_LocalSettings.pl292
-rw-r--r--backends/platform/symbian/README135
-rw-r--r--backends/platform/symbian/S60/BLD.INF.in12
-rw-r--r--backends/platform/symbian/S60/ScummVM_S60.mmp.in104
-rw-r--r--backends/platform/symbian/S60/ScummVM_S60_App.mmp49
-rw-r--r--backends/platform/symbian/S60/scummvm-CVS-SymbianS60v1.pkg27
-rw-r--r--backends/platform/symbian/S60/scummvm-CVS-SymbianS60v2.pkg27
-rw-r--r--backends/platform/symbian/S60v3/BLD.INF.in11
-rw-r--r--backends/platform/symbian/S60v3/ScummVM_Loc.rss22
-rw-r--r--backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in123
-rw-r--r--backends/platform/symbian/S60v3/scummvm-CVS-SymbianS60v3.pkg33
-rw-r--r--backends/platform/symbian/S60v3/scummvm_reg.rss18
-rw-r--r--backends/platform/symbian/S80/BLD.INF.in12
-rw-r--r--backends/platform/symbian/S80/ScummVM_S80.mmp.in102
-rw-r--r--backends/platform/symbian/S80/ScummVM_S80_App.mmp49
-rw-r--r--backends/platform/symbian/S80/scummvm-CVS-SymbianS80.pkg27
-rw-r--r--backends/platform/symbian/S90/BLD.INF.in12
-rw-r--r--backends/platform/symbian/S90/Scummvm_S90.mmp.in102
-rw-r--r--backends/platform/symbian/S90/Scummvm_S90_App.mmp49
-rw-r--r--backends/platform/symbian/S90/scummvm-CVS-SymbianS90.pkg27
-rw-r--r--backends/platform/symbian/UIQ2/BLD.INF.in11
-rw-r--r--backends/platform/symbian/UIQ2/ScummVM.rss46
-rw-r--r--backends/platform/symbian/UIQ2/ScummVM_UIQ2.mmp.in106
-rw-r--r--backends/platform/symbian/UIQ2/Vibration.sisbin0 -> 2175 bytes
-rw-r--r--backends/platform/symbian/UIQ2/chkstk.objbin0 -> 329 bytes
-rw-r--r--backends/platform/symbian/UIQ2/lldiv.objbin0 -> 418 bytes
-rw-r--r--backends/platform/symbian/UIQ2/llmul.objbin0 -> 300 bytes
-rw-r--r--backends/platform/symbian/UIQ2/llshl.objbin0 -> 280 bytes
-rw-r--r--backends/platform/symbian/UIQ2/scummvm-CVS-SymbianUIQ2.pkg26
-rw-r--r--backends/platform/symbian/UIQ2/scummvm-CVS-SymbianUIQ2_SE.pkg31
-rw-r--r--backends/platform/symbian/UIQ3/BLD.INF.in11
-rw-r--r--backends/platform/symbian/UIQ3/ScummVM.rss49
-rw-r--r--backends/platform/symbian/UIQ3/ScummVM_UIQ3.mmp.in125
-rw-r--r--backends/platform/symbian/UIQ3/scummvm-CVS-SymbianUIQ3.pkg33
-rw-r--r--backends/platform/symbian/UIQ3/scummvm_loc.rss59
-rw-r--r--backends/platform/symbian/UIQ3/scummvm_reg.rss18
-rw-r--r--backends/platform/symbian/mmp/scummvm_agi.mmp.in55
-rw-r--r--backends/platform/symbian/mmp/scummvm_base.mmp.in111
-rw-r--r--backends/platform/symbian/mmp/scummvm_cine.mmp.in54
-rw-r--r--backends/platform/symbian/mmp/scummvm_gob.mmp.in54
-rw-r--r--backends/platform/symbian/mmp/scummvm_kyra.mmp.in54
-rw-r--r--backends/platform/symbian/mmp/scummvm_lure.mmp.in54
-rw-r--r--backends/platform/symbian/mmp/scummvm_queen.mmp.in54
-rw-r--r--backends/platform/symbian/mmp/scummvm_saga.mmp.in54
-rw-r--r--backends/platform/symbian/mmp/scummvm_scumm.mmp.in70
-rw-r--r--backends/platform/symbian/mmp/scummvm_simon.mmp.in55
-rw-r--r--backends/platform/symbian/mmp/scummvm_sky.mmp.in54
-rw-r--r--backends/platform/symbian/mmp/scummvm_sword1.mmp.in54
-rw-r--r--backends/platform/symbian/mmp/scummvm_sword2.mmp.in54
-rw-r--r--backends/platform/symbian/res/ScummS.bmpbin0 -> 822 bytes
-rw-r--r--backends/platform/symbian/res/ScummSmall.bmpbin0 -> 1062 bytes
-rw-r--r--backends/platform/symbian/res/ScummVmAif.rss43
-rw-r--r--backends/platform/symbian/res/scummL.bmpbin0 -> 2102 bytes
-rw-r--r--backends/platform/symbian/res/scummLarge.bmpbin0 -> 4854 bytes
-rw-r--r--backends/platform/symbian/res/scummLargeMask.bmpbin0 -> 918 bytes
-rw-r--r--backends/platform/symbian/res/scummLm.bmpbin0 -> 630 bytes
-rw-r--r--backends/platform/symbian/res/scummSm.bmpbin0 -> 246 bytes
-rw-r--r--backends/platform/symbian/res/scummSmallMask.bmpbin0 -> 334 bytes
-rw-r--r--backends/platform/symbian/res/scummvm.rss62
-rw-r--r--backends/platform/symbian/res/scummxLarge.bmpbin0 -> 12342 bytes
-rw-r--r--backends/platform/symbian/res/scummxLargeMask.bmpbin0 -> 2166 bytes
-rw-r--r--backends/platform/symbian/src/ScummApp.cpp119
-rw-r--r--backends/platform/symbian/src/ScummApp.h54
-rw-r--r--backends/platform/symbian/src/ScummVMApp.cpp170
-rw-r--r--backends/platform/symbian/src/ScummVMApp.h82
-rw-r--r--backends/platform/symbian/src/ScummVm.hrh30
-rw-r--r--backends/platform/symbian/src/SymbianActions.cpp189
-rw-r--r--backends/platform/symbian/src/SymbianActions.h77
-rw-r--r--backends/platform/symbian/src/SymbianOS.cpp419
-rw-r--r--backends/platform/symbian/src/SymbianOS.h139
-rw-r--r--backends/platform/symbian/src/main_features.inl66
-rw-r--r--backends/platform/symbian/src/portdefs.h148
75 files changed, 5143 insertions, 0 deletions
diff --git a/backends/platform/symbian/.placeholder b/backends/platform/symbian/.placeholder
new file mode 100644
index 0000000000..dcf4d34a62
--- /dev/null
+++ b/backends/platform/symbian/.placeholder
@@ -0,0 +1 @@
+>> SumthinWicked *grins* << \ No newline at end of file
diff --git a/backends/platform/symbian/AdaptAllMMPs.pl b/backends/platform/symbian/AdaptAllMMPs.pl
new file mode 100644
index 0000000000..48b100b2ee
--- /dev/null
+++ b/backends/platform/symbian/AdaptAllMMPs.pl
@@ -0,0 +1,382 @@
+
+use Cwd;
+
+$buildDir = getcwd();
+chdir("../../");
+
+# list of project files to process
+@mmp_files = (
+ "mmp/scummvm_scumm.mmp",
+ "mmp/scummvm_queen.mmp",
+ "mmp/scummvm_simon.mmp",
+ "mmp/scummvm_sky.mmp",
+ "mmp/scummvm_gob.mmp",
+ "mmp/scummvm_saga.mmp",
+ "mmp/scummvm_kyra.mmp",
+ "mmp/scummvm_sword1.mmp",
+ "mmp/scummvm_sword2.mmp",
+ "mmp/scummvm_lure.mmp",
+ "mmp/scummvm_cine.mmp",
+ "mmp/scummvm_agi.mmp",
+ "S60/ScummVM_S60.mmp",
+ "S60v3/ScummVM_S60v3.mmp",
+ "S80/ScummVM_S80.mmp",
+ "S90/ScummVM_S90.mmp",
+ "UIQ2/ScummVM_UIQ2.mmp",
+ "UIQ3/ScummVM_UIQ3.mmp"
+);
+
+# do this first to set all *.mmp & *.inf files to *.*.in states
+ResetProjectFiles();
+
+print "
+=======================================================================================
+Updating slave MACRO settings in MMP files from master 'scummvm_base.mmp'
+=======================================================================================
+
+";
+
+# do this first so we have @DisableDefines for correct inclusion of SOURCE files later
+UpdateSlaveMacros();
+
+print "
+=======================================================================================
+Preparing to update all the Symbian MMP project files with objects from module.mk files
+=======================================================================================
+
+";
+
+my @section_empty = (""); # section standard: no #ifdef's in module.mk files
+my @sections_scumm = ("", "DISABLE_SCUMM_7_8", "DISABLE_HE"); # special sections for engine SCUMM
+
+# files excluded from build, case insensitive, will be matched in filename string only
+my @excludes_snd = (
+ "mt32",
+ "fluidsynth",
+ "i386",
+ "part.cpp",
+ "partial.cpp",
+ "partialmanager.cpp",
+ "synth.cpp",
+ "tables.cpp",
+ "freeverb.cpp"
+);
+my @excludes_gui = (
+);
+
+#arseModule(mmpStr, dirStr, ifdefArray, [exclusionsArray])
+ParseModule("_base", "base", \@section_empty); # now in ./TRG/ScummVM_TRG.mmp, these never change anyways...
+ParseModule("_base", "common", \@section_empty);
+ParseModule("_base", "gui", \@section_empty, \@excludes_gui);
+ParseModule("_base", "graphics", \@section_empty);
+ParseModule("_base", "sound", \@section_empty, \@excludes_snd);
+
+chdir("engines/");
+ParseModule("_scumm", "scumm", \@sections_scumm);
+ParseModule("_queen", "queen", \@section_empty);
+ParseModule("_simon", "simon", \@section_empty);
+ParseModule("_sky", "sky", \@section_empty);
+ParseModule("_gob", "gob", \@section_empty);
+ParseModule("_saga", "saga", \@section_empty);
+
+ParseModule("_kyra", "kyra", \@section_empty);
+ParseModule("_sword1", "sword1", \@section_empty);
+ParseModule("_sword2", "sword2", \@section_empty);
+ParseModule("_lure", "lure", \@section_empty);
+ParseModule("_cine", "cine", \@section_empty);
+ParseModule("_agi", "agi", \@section_empty);
+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 dir: check subdirs too
+ 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 this is a module.mk file
+ if (-f $item and $item =~ /.*\/module.mk$/)
+ {
+ my $sec = "";
+ my $ObjectsSelected = 0;
+ my $ObjectsTotal = 0;
+
+ print "$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)
+ {
+ $ObjectsTotal++;
+
+ $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? According to our own @exclusions array
+ foreach $exclusion (@exclusions)
+ {
+ if ($line =~ /$exclusion/i)
+ {
+ print "\n ! $line (excluded, \@exclusions[$exclusion])";
+ next A;
+ }
+ }
+
+ # do we need to skip this file? According to MACROs in .MMPs
+ foreach $DisableDefine (@DisableDefines)
+ {
+ if ($DisableDefine eq $section && $section ne '')
+ {
+ print "\n !$line (excluded, MACRO $DisableDefine)";
+ next A;
+ }
+ }
+
+ $ObjectsSelected++;
+ #print "\n $line";
+ $output .= "SOURCE $line\n";
+ }
+ }
+ }
+ print " -- $ObjectsSelected/$ObjectsTotal 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 $updated = " Updated @ ".localtime();
+ my $name;
+ my @mmp_files_plus_one = @mmp_files;
+ unshift @mmp_files_plus_one, "mmp/scummvm_base.mmp";
+
+ foreach $name (@mmp_files_plus_one)
+ {
+ my $file = "$buildDir/$name";
+
+ open FILE, "$file";
+ my @lines = <FILE>;
+ close FILE;
+
+ my $onestr = join("",@lines);
+
+ if ($onestr =~ /$n/)
+ {
+
+ print " - $name @ $n updating ... ";
+
+ $onestr =~ s/$a.*$b/$a$updated\n$output$b/s;
+ open FILE, ">$file";
+ print FILE $onestr;
+ close FILE;
+
+ print "done.\n";
+ }
+ }
+
+ $output = "";
+}
+
+##################################################################################################################
+
+sub UpdateSlaveMacros
+{
+ my $updated = " Updated @ ".localtime();
+
+ my $name = "mmp/scummvm_base.mmp";
+ my $file = "$buildDir/$name";
+ print "Reading master MACROS from backends/symbian/$name ... ";
+
+ open FILE, "$file";
+ my @lines = <FILE>;
+ close FILE;
+ my $onestr = join("",@lines);
+
+ my $n = "AUTO_MACROS_MASTER";
+ my $a = "\/\/START_$n\/\/";
+ my $b = "\/\/STOP_$n\/\/";
+ $onestr =~ /$a(.*)$b/s;
+ my $macros = $1;
+
+ my $libs_first = "\n// automagically enabled static libs from macros above\n";
+ my $libs_second = "STATICLIBRARY scummvm_base.lib // must be above USE_* .libs\n";
+ my $macro_counter = 0;
+ my $macros2 = "\n"; # output for in *.mmp MACROS section
+ my $projects = "\n..\\mmp\\scummvm_base.mmp\n"; # output for in BLD.INF projects section
+
+ foreach $line (split("\n", $macros))
+ {
+ # do we need to add a static .lib?
+ if ($line =~ /^.*MACRO\s*([0-9A-Z_]*)\s*\/\/\s*LIB\:(.*)$/)
+ {
+ my $macro = $1; my $lib = $2;
+
+ # this macro enabled? then also add the .lib
+ if ($line =~ /^\s*MACRO\s*$macro/m)
+ {
+ # these are the USE_ libs
+ $libs_second .= "STATICLIBRARY $lib\n" if ($macro =~ /^USE_/);
+ }
+ else
+ {
+ # these are the non DISABLED_ libs
+ $libs_first .= "STATICLIBRARY $lib\n" if ($macro =~ /^DISABLE_/);
+
+ # add projects for BLD.INF's
+ my $projectname = substr("$lib",0,-4);
+ $projects .= "..\\mmp\\$projectname.mmp\n" if ($macro =~ /^DISABLE_/);
+ }
+ $macro_counter++;
+ }
+ # not commented out? then add the macro to output string
+ if ($line =~ /^\s*MACRO\s*([0-9A-Z_]*)\s*/)
+ {
+ my $macro = $1;
+ $macros2 .= "$line\n";
+ push @DisableDefines, $macro; # used in CheckForModuleMK()!!
+ }
+ }
+
+ print "$macro_counter macro lines.\n";
+
+ $n = "AUTO_MACROS_SLAVE";
+ $a = "\/\/START_$n\/\/";
+ $b = "\/\/STOP_$n\/\/";
+
+ $m = "AUTO_PROJECTS";
+ $p = "\/\/START_$m\/\/";
+ $q = "\/\/STOP_$m\/\/";
+
+ foreach $name (@mmp_files)
+ {
+ $file = "$buildDir/$name";
+ $fileBLDINF = $buildDir .'/'. substr($name, 0, rindex($name, "/")) . "/BLD.INF";
+ print "Updating macros in $file ... ";
+ #print "Updating macros in backends/symbian/$name ... ";
+
+ open FILE, "$file"; @lines = <FILE>; close FILE;
+ $onestr = join("",@lines);
+
+ my $extralibs = ""; # output
+ # slash in name means it's a phone specific build file: add LIBs
+ $extralibs .= "$libs_first$libs_second" if (-e $fileBLDINF);
+
+ $onestr =~ s/$a.*$b/$a$updated$macros2$extralibs$b/s;
+
+ open FILE, ">$file"; print FILE $onestr; close FILE;
+
+ my $count = @lines;
+ print "wrote $count lines.\n";
+
+ if (-e $fileBLDINF)
+ {
+ # slash in name means it's a phone specific build file:
+ # this also means we need to update a BLD.INF file here!
+ print "Updating projects in $fileBLDINF ... \n";
+
+ open FILE, "$fileBLDINF"; @lines = <FILE>; close FILE;
+ $onestr = join("",@lines);
+
+ $onestr =~ s/$p.*$q/$p$updated$projects$q/s;
+
+ open FILE, ">$fileBLDINF"; print FILE $onestr; close FILE;
+ }
+ }
+}
+
+##################################################################################################################
+
+sub ResetProjectFiles()
+{
+ my $onestr, @lines;
+ my @mmp_files_plus_one = @mmp_files;
+# unshift @mmp_files_plus_one, "mmp/scummvm_base.mmp";
+
+ print "Resetting project files: ";
+
+ # we don't need to do mmp/scummvm_base.mmp", it was done in BuildPackageUpload.pl before the call to this script
+ foreach $name (@mmp_files_plus_one)
+ {
+ my $file = "$buildDir/$name";
+
+ print "$name ";
+ open FILE, "$file.in"; @lines = <FILE>; close FILE;
+ $onestr = join("",@lines);
+ open FILE, ">$file"; print FILE $onestr; close FILE;
+
+ # also do BLD.INF if it is there...
+ my $fileBLDINF = $buildDir .'/'. substr($name, 0, rindex($name, "/")) . "/BLD.INF";
+ if (-e "$fileBLDINF.in")
+ {
+ print substr($name, 0, rindex($name, "/")) . "/BLD.INF ";
+ open FILE, "$fileBLDINF.in"; @lines = <FILE>; close FILE;
+ $onestr = join("",@lines);
+ open FILE, ">$fileBLDINF"; print FILE $onestr; close FILE;
+ }
+ }
+
+ print "... done.\n";
+}
+
+##################################################################################################################
diff --git a/backends/platform/symbian/BuildPackageUpload_AllVersions.pl b/backends/platform/symbian/BuildPackageUpload_AllVersions.pl
new file mode 100644
index 0000000000..7a4d6e21e2
--- /dev/null
+++ b/backends/platform/symbian/BuildPackageUpload_AllVersions.pl
@@ -0,0 +1,637 @@
+
+use Cwd;
+use Switch;
+
+system("cls");
+require "BuildPackageUpload_LocalSettings.pl";
+
+##################################################################################################################
+# prep some vars
+
+$SDK_BuildDirs{'UIQ2'} = "UIQ2";
+$SDK_BuildDirs{'UIQ3'} = "UIQ3";
+$SDK_BuildDirs{'S60v1'} = "S60";
+$SDK_BuildDirs{'S60v2'} = "S60";
+$SDK_BuildDirs{'S60v3'} = "S60v3";
+$SDK_BuildDirs{'S80'} = "S80";
+$SDK_BuildDirs{'S90'} = "S90";
+
+$SDK_TargetName{'UIQ2'} = "armi";
+$SDK_TargetName{'UIQ3'} = "gcce";
+$SDK_TargetName{'S60v1'}= "armi";
+$SDK_TargetName{'S60v2'}= "armi";
+$SDK_TargetName{'S60v3'}= "gcce";
+$SDK_TargetName{'S80'} = "armi";
+$SDK_TargetName{'S90'} = "armi";
+
+$SDK_TargetDir{'UIQ2'} = "armi";
+$SDK_TargetDir{'UIQ3'} = "armv5";
+$SDK_TargetDir{'S60v1'} = "armi";
+$SDK_TargetDir{'S60v2'} = "armi";
+$SDK_TargetDir{'S60v3'} = "armv5";
+$SDK_TargetDir{'S80'} = "armi";
+$SDK_TargetDir{'S90'} = "armi";
+
+$build_dir = getcwd();
+$output_dir = "$build_dir/Packages";
+chdir("../../");
+$base_dir = getcwd();
+chdir($build_dir);
+$build_log_out = "$build_dir/Build.out.log";
+$build_log_err = "$build_dir/Build.err.log";
+
+$initial_path = $ENV{'PATH'}; # so we can start with a fresh PATH for each Build
+
+($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
+$date = sprintf("%02d%02d%02d", $year-100, $mon+=1, $mday);
+$file_tpl_pkg = "scummvm-CVS-Symbian%s.pkg";
+$file_tpl_sis = "scummvm-%s-Symbian%s%s.sis";
+$version_tpl_sis = "$date"; # "CVS$date"
+
+$PackagesQueued = 0;
+$PackagesCreated = 0;
+$PackagesUploaded = 0;
+@ErrorMessages = ();
+$ftp_url = "FTP://$FTP_User\@$FTP_Host/$FTP_Dir/";
+
+$ExtraMacros = "MACRO NONSTANDARD_PORT\n";
+$ExtraMacros .= "MACRO DISABLE_FANCY_THEMES\n";
+
+# prep nice list of SDKs
+#while( ($SDK, $RootDir) = each(%SDK_RootDirs) )
+foreach $SDK (sort keys(%SDK_RootDirs))
+{
+ $SDKs .= "$SDK\t$SDK_RootDirs{$SDK}\n\t\t\t";
+}
+
+# prep nice list of Libraries
+while( ($SDK, $Value) = each(%SDK_LibraryDirs) )
+{
+ while( ($Library, $Path) = each(%{$SDK_LibraryDirs{$SDK}}) )
+ {
+ $PresentLibs{$Library} = $Path;
+ }
+}
+foreach $Library (sort keys(%PresentLibs))
+{
+ $LIBs .= "$Library\t$PresentLibs{$Library}\n\t\t\t";
+}
+
+# prep nice list of Variations
+while( ($SDK, $Value) = each(%SDK_Variations) )
+{
+ while( ($Variation, $Value2) = each(%{$SDK_Variations{$SDK}}) )
+ {
+ $Extra = ($Variation ne '' ? "_$Variation" : "");
+ if ($SDK eq "ALL")
+ {
+ while( ($SDK2, $RootDir) = each(%SDK_RootDirs) )
+ {
+ if ($SDK_RootDirs{$SDK2} ne '') # is this SDK listed as installed? (fails silently)
+ {
+ push @Packages, sprintf($file_tpl_sis, $version_tpl_sis, $SDK2, $Extra);
+ $PackagesQueued++;
+ }
+ }
+ }
+ else
+ {
+ if ($SDK_RootDirs{$SDK} ne '') # is this SDK listed as installed? (fails silently)
+ {
+ push @Packages, sprintf($file_tpl_sis, $version_tpl_sis, $SDK, $Extra);
+ $PackagesQueued++;
+ }
+ }
+ }
+}
+foreach $Package (sort @Packages)
+{
+ $PackagesStr .= "$Package\n\t\t\t";
+}
+
+print "
+=======================================================================================
+Preparing to Build, Package & Upload $PackagesQueued SymbianOS ScummVM variations
+=======================================================================================
+
+ Producer \t$Producer (RedirE:$RedirectSTDERR HaltE:$HaltOnError Skip:$SkipExistingPackages Quiet:$ReallyQuiet)
+
+ SDKs inst'd \t$SDKs ".( %SDK_LibraryDirs ? "
+ LIBs inst'd \t$LIBs " : "" )."
+ $PackagesQueued Variations \t$PackagesStr
+ DIR base \t$base_dir
+ build \t$build_dir
+ output \t$output_dir
+".( $FTP_Host ne '' ? "
+ FTP host \t$FTP_Host
+ user \t$FTP_User
+ pass \t"."*" x length($FTP_Pass)."
+ dir \t$FTP_Dir
+" : "" )."
+=======================================================================================
+Press Ctrl-C to abort or enter to continue Build, Package & Upload $PackagesQueued Variations...
+=======================================================================================
+";
+
+$line = <STDIN>;
+
+# make sure the output dir exists!
+mkdir($output_dir, 0755) if (! -d $output_dir);
+
+unlink($build_log_out);
+unlink($build_log_err);
+
+# init _base.mmp now, so we can start changing it without affecting the CVS version _base.mmp.in!
+my $name = "mmp/scummvm_base.mmp";
+my $file = "$build_dir/$name";
+open FILE, "$file.in"; @lines = <FILE>; close FILE;
+my $onestr = join("",@lines);
+open FILE, ">$file"; print FILE $onestr; close FILE;
+
+##################################################################################################################
+# do the actual deeds for all present libs
+
+while( ($SDK, $Value) = each(%SDK_LibraryDirs) )
+{
+ while( ($Library, $Path) = each(%{$SDK_LibraryDirs{$SDK}}) )
+ {
+ if ($SDK eq "ALL")
+ {
+ while( ($SDK2, $RootDir) = each(%SDK_RootDirs) )
+ {
+ if ($SDK_RootDirs{$SDK2} ne '') # is this SDK listed as installed? (fails silently)
+ {
+ $LibrariesQueued++;
+ DoLibrary($SDK2, $Library, $Path);
+ }
+ }
+ }
+ else
+ {
+ if ($SDK_RootDirs{$SDK} ne '') # is this SDK listed as installed? (fails silently)
+ {
+ $LibrariesQueued++;
+ DoLibrary($SDK, $Library, $Path);
+ }
+ }
+ }
+}
+
+#system('pause');
+
+##################################################################################################################
+# do the actual deeds for all configured variations
+
+while( ($SDK, $VariationsHash) = each(%SDK_Variations) )
+{
+ while( ($Variation, $MacroBlock) = each(%{$SDK_Variations{$SDK}}) )
+ {
+ if ($SDK eq "ALL")
+ {
+ while( ($SDK2, $RootDir) = each(%SDK_RootDirs) )
+ {
+ if ($SDK_RootDirs{$SDK2} ne '')
+ {
+ DoVariation($SDK2, $Variation, $MacroBlock);
+ }
+ }
+ }
+ else
+ {
+ if ($SDK_RootDirs{$SDK} ne '')
+ {
+ DoVariation($SDK, $Variation, $MacroBlock);
+ }
+ }
+ }
+}
+
+##################################################################################################################
+# give report
+
+chdir($build_dir);
+
+print "
+=======================================================================================".( %SDK_LibraryDirs ? "
+Libraries selected: \t$LibrariesQueued
+ built: \t$LibrariesSucceeded " : "" )."
+Packages selected: \t$PackagesQueued $base_dir ".( $PackagesExisted ? "
+ existed: \t$PackagesExisted $output_dir " : "" )."
+ created: \t$PackagesCreated $output_dir ".( $FTP_Host ne '' ? "
+ uploaded: \t$PackagesUploaded $ftp_url " : "" )."
+=======================================================================================
+";
+
+my $count = @ErrorMessages;
+if ($count)
+{
+ print "Hmm, unfortunately some ERRORs have occurred during the process:\n";
+ foreach $Error (@ErrorMessages)
+ {
+ print "> $Error\n";
+ }
+ print "=======================================================================================\n";
+ print "\007\007";
+}
+
+# first clean up 'initial path' by removing possible old entries (in case of aborted builds)
+#$initial_path_system_cleaned = CleanupPath($initial_path_system);
+
+# show them we cleaned up?
+#if ($initial_path_system_cleaned ne $initial_path_system)
+#{
+# PrintMessage("PATH cleaned up from:\n$initial_path_system\n\nto:\n$initial_path_system_cleaned");
+#}
+
+print " SumthinWicked wishes you a ridiculously good and optimally happy day :P\n=======================================================================================";
+
+##################################################################################################################
+##################################################################################################################
+
+# Build, Package & Upload a single Variation
+sub DoLibrary
+{
+ my ($SDK, $Library, $Path) = @_;
+ my $TargetName = $SDK_TargetName{$SDK};
+ my $TargetDir = $SDK_TargetDir{$SDK};
+ my $Target = "$SDK - $Library";
+ my $TargetFilePath = $SDK_RootDirs{$SDK}."\\epoc32\\release\\$TargetDir\\urel\\$Library";
+ #my $TargetIntermediatePath = uc($SDK_RootDirs{$SDK}."\\EPOC32\\BUILD\\".substr($Path, 3));
+ # does this remove too much?
+ my $TargetIntermediatePath = uc($SDK_RootDirs{$SDK}."\\EPOC32\\BUILD\\");
+
+my $header = "
+=======================================================================================
+=======================================================================================
+=======================================================================================
+ Preparing to build library $Target
+=======================================================================================
+=======================================================================================
+=======================================================================================
+";
+ print $header if (!$ReallyQuiet);
+ open FILE, ">>$build_log_out"; print FILE $header; close FILE;
+ open FILE, ">>$build_log_err"; print FILE $header; close FILE;
+
+ # easy for error-handling:
+ $CurrentTarget = $Target;
+ my $OK = 1;
+
+ PrepSdkPaths($SDK);
+
+ chdir($Path) or $OK=0;
+ PrintErrorMessage("Changing to $Path failed!") if (!$OK);
+ return 0 if (!$OK);
+
+ PrintMessage("Cleaning for $Target") if (!$ReallyQuiet);
+ system("bldmake bldfiles > NUL 2> NUL");
+ PrintErrorMessage("'bldmake bldfiles' exited with value " . ($? >> 8)) if ($? >> 8);
+ system("abld clean $TargetName urel > NUL 2> NUL");
+ PrintErrorMessage("'abld clean $TargetName urel' exited with value " . ($? >> 8)) if ($? >> 8);
+ # remove file so we are sure that after .lib generation we have a fresh copy!
+ if (-e $TargetFilePath) { unlink($TargetFilePath) or PrintErrorMessage("Removing $TargetFilePath"); }
+
+ my $Redirection = "OUT:file, ERR:".($RedirectSTDERR ? "file" : "screen");
+ my $Message = "Building $Target ($Redirection)";
+ PrintMessage($Message) if (!$ReallyQuiet);
+ print(" $Message\n") if ($ReallyQuiet);
+
+ my $OldSize = (-s $build_log_err);
+ $Redirection = ($RedirectSTDERR ? "2>> $build_log_err" : "");
+ system("abld build $TargetName urel $Redirection >> $build_log_out");
+ $OK = 0 if ($? >> 8);
+# print " STDERR: ".((-s $build_log_err)-$OldSize)." bytes output written to $build_log_err\n+--------------------------------------------------------------------------------------\n" if ($OldSize != (-s $build_log_err));
+ PrintErrorMessage("'abld build $TargetName urel' exited with value " . ($? >> 8)) if ($? >> 8);
+ return 0 if (!$OK); # ABLD always returns ok :( grr
+ PrintMessage("Done.") if (!$ReallyQuiet);
+
+ # did it work? :)
+ if (-e $TargetFilePath)
+ {
+ $LibrariesSucceeded++;
+
+ if ($TargetIntermediatePath ne '' && $TargetIntermediatePath =~ /\\EPOC32\\BUILD\\/i) # make really sure it's a valid path!
+ {
+ system("del /S /Q $TargetIntermediatePath > NUL");
+ }
+ return 1;
+ }
+ else
+ {
+ PrintErrorMessage("'abld build $TargetName urel' apparently failed.");
+ if ($HaltOnError)
+ {
+ PrintErrorMessage("Halting on error as requested!");
+ exit 1;
+ }
+ return 0;
+ }
+}
+
+##################################################################################################################
+
+# Build, Package & Upload a single Variation
+sub DoVariation
+{
+ my ($SDK, $Variation, $MacroBlock) = @_;
+ my $Extra = ($Variation ne '' ? "_$Variation" : "");
+ my $Package = sprintf($file_tpl_sis, $version_tpl_sis, $SDK, $Extra);
+
+ if ($SkipExistingPackages && -f "$output_dir/$Package")
+ {
+ PrintMessage("Skipping $Package (already exists!)");
+ $PackagesExisted++;
+ return;
+ }
+
+my $header = "
+=======================================================================================
+=======================================================================================
+=======================================================================================
+ Preparing to build $Package
+=======================================================================================
+=======================================================================================
+=======================================================================================
+";
+ print $header if (!$ReallyQuiet);
+ open FILE, ">>$build_log_out"; print FILE $header; close FILE;
+ open FILE, ">>$build_log_err"; print FILE $header; close FILE;
+
+ # easy for error-handling:
+ $CurrentTarget = $Package;
+ my $OK;
+
+ $OK = PrepVariation($SDK, $Variation, $Package, $MacroBlock);
+
+ if ($OK)
+ {
+ $OK = BuildVariation($SDK, $Variation, $Package, $MacroBlock);
+
+ if ($OK && $FTP_Host ne '')
+ {
+ UploadVariation($SDK, $Variation, $Package);
+ }
+ }
+}
+
+##################################################################################################################
+
+sub PrepVariation()
+{
+ my ($SDK, $Variation, $Package, $MacroBlock) = @_;
+ my $OK = 1;
+
+ PrepSdkPaths($SDK);
+
+ chdir($build_dir) or $OK=0;
+ PrintErrorMessage("Changing to $build_dir failed!") if (!$OK);
+ return 0 if (!$OK);
+
+ # insert $MacroBlock into AUTO_MACRO_MASTER in scummvm_base.mmp
+ PrintMessage("Setting new AUTO_MACROS_MASTER in scummvm_base.mmp for '$Variation'") if (!$ReallyQuiet);
+ my $n = "AUTO_MACROS_MASTER";
+ my $a = "\/\/START_$n\/\/";
+ my $b = "\/\/STOP_$n\/\/";
+ my $name = "scummvm_base.mmp";
+ my $file = "$build_dir/mmp/$name";
+ my $updated = " Updated @ ".localtime();
+
+ open FILE, "$file" or $OK=0;
+ PrintErrorMessage("Reading file '$file'") if (!$OK);
+ return 0 if (!$OK);
+ my @lines = <FILE>;
+ close FILE;
+
+ my $onestr = join("",@lines);
+ $MacroBlock =~ s/^\s*//gm;
+ $onestr =~ s/$a(.*)$b/$a$updated\n$ExtraMacros$MacroBlock$b/s;
+
+ open FILE, ">$file" or $OK=0;
+ PrintErrorMessage("Writing file '$file'") if (!$OK);
+ return 0 if (!$OK);
+ print FILE $onestr;
+ close FILE;
+
+ # running AdaptAllMMPs.pl to propagate changes
+ PrintMessage("Running AdaptAllMMPs.pl to propagate MACRO changes") if (!$ReallyQuiet);
+ system("perl AdaptAllMMPs.pl > NUL");
+ $OK = 0 if ($? >> 8);
+ PrintErrorMessage("'AdaptAllMMPs.pl' exited with value " . ($? >> 8)) if ($? >> 8);
+ return 0 if (!$OK);
+
+ # we are here: so all is ok :)
+ return 1;
+}
+
+##################################################################################################################
+
+sub BuildVariation()
+{
+ my ($SDK, $Variation, $Package, $MacroBlock) = @_;
+ my $TargetName = $SDK_TargetName{$SDK};
+ my $TargetDir = $SDK_TargetDir{$SDK};
+ my $OK = 1;
+
+ my $dir = $build_dir."/".$SDK_BuildDirs{$SDK};
+ $dir =~ s#/#\\#g;
+ chdir($dir);
+
+ #my $TargetIntermediatePath = uc($SDK_RootDirs{$SDK}."\\EPOC32\\BUILD\\".substr($dir, 3));
+ # does this remove too much?
+ my $TargetIntermediatePath = uc($SDK_RootDirs{$SDK}."\\EPOC32\\BUILD\\");
+
+ PrintMessage("Cleaning for $Package") if (!$ReallyQuiet);
+
+ # remove some files so we are sure that after .sis package generation we have a fresh copy!
+ my $UnlinkFile = "$output_dir/$Package";
+ if (-e $UnlinkFile) { unlink($UnlinkFile) or PrintErrorMessage("Removing $UnlinkFile"); }
+ $UnlinkFile = $SDK_RootDirs{$SDK}."/epoc32/release/$TargetDir/urel/ScummVM.app";
+ if (-e $UnlinkFile) { unlink($UnlinkFile) or PrintErrorMessage("Removing $UnlinkFile"); }
+ $UnlinkFile = $SDK_RootDirs{$SDK}."/epoc32/release/$TargetDir/urel/ScummVM.exe";
+ if (-e $UnlinkFile) { unlink($UnlinkFile) or PrintErrorMessage("Removing $UnlinkFile"); }
+
+ system("bldmake bldfiles 2> NUL > NUL");
+ PrintErrorMessage("'bldmake bldfiles' exited with value " . ($? >> 8)) if ($? >> 8);
+
+ system("abld clean $TargetName urel 2> NUL > NUL");
+ PrintErrorMessage("'abld clean $TargetName urel' exited with value " . ($? >> 8)) if ($? >> 8);
+
+ my $Redirection = "OUT:file, ERR:".($RedirectSTDERR ? "file" : "screen");
+ my $Message = "Building $Package ($Redirection)";
+ PrintMessage($Message) if (!$ReallyQuiet);
+ print(" $Message\n") if ($ReallyQuiet);
+
+ my $OldSize = (-s $build_log_err);
+ $Redirection = ($RedirectSTDERR ? "2>> $build_log_err" : "");
+ system("abld build $TargetName urel $Redirection >> $build_log_out");
+ $OK = 0 if ($? >> 8);
+ print " STDERR: ".((-s $build_log_err)-$OldSize)." bytes output written to $build_log_err\n+--------------------------------------------------------------------------------------\n" if ($OldSize != (-s $build_log_err) && !$ReallyQuiet);
+ PrintErrorMessage("'abld build $TargetName urel' exited with value " . ($? >> 8)) if ($? >> 8);
+ return 0 if (!$OK); # ABLD always returns ok :( grr
+ PrintMessage("Done.") if (!$ReallyQuiet);
+
+ # do we have an override suffix for the package name?
+ $MacroBlock =~ /^\s*\/\/\s*PKG_SUFFIX:\s*(\w+)\s*/gm; # using '@' as delimiter here instead of '/' for clarity
+ my $PkgSuffix = $1; # can be ""
+ my $PkgFile = sprintf($file_tpl_pkg, $SDK.$PkgSuffix);
+
+ PrintMessage("Creating package $Package") if (!$ReallyQuiet);
+## fix if (!$ReallyQuiet) for next:
+ system("makesis -d\"".$SDK_RootDirs{$SDK}."\" $PkgFile \"$output_dir/$Package\" $Redirection >> $build_log_out");
+ $OK = 0 if ($? >> 8);
+ PrintErrorMessage("'makesis' $PkgFile exited with value " . ($? >> 8)) if (!$OK);
+ if ($HaltOnError && !$OK)
+ {
+ PrintErrorMessage("Halting on error as requested!");
+ exit 1;
+ }
+ return 0 if (!$OK);
+
+ # did it work? :)
+ if (-e "$output_dir/$Package")
+ {
+ $PackagesCreated++;
+
+ if ($TargetIntermediatePath ne '' && $TargetIntermediatePath =~ /\\EPOC32\\BUILD\\/i) # make really sure it's a valid path!
+ {
+ #PrintMessage("Cleaning $TargetIntermediatePath");
+ system("del /S /Q $TargetIntermediatePath > NUL");
+ }
+ return 1;
+ }
+ else
+ {
+ PrintErrorMessage("'makesis' apparently failed. (?)");
+ return 0;
+ }
+}
+
+##################################################################################################################
+
+sub UploadVariation()
+{
+ my ($SDK, $Variation, $Package) = @_;
+
+ use Net::FTP;
+ my $newerr;
+
+ PrintMessage("Connecting to FTP $FTP_Host") if (!$ReallyQuiet);
+
+ $ftp = Net::FTP->new($FTP_Host,Timeout=>240) or $newerr=1;
+ PrintErrorMessage("Connecting to FTP $FTP_Host! Aborting!") if $newerr;
+ if (!$newerr)
+ {
+ $ftp->login($FTP_User, $FTP_Pass) or $newerr=1;
+ PrintErrorMessage("Logging in with $FTP_User to $FTP_Host! Aborting!") if $newerr;
+ if (!$newerr)
+ {
+ if ($FTP_Dir ne '') # do we need to change dir?
+ {
+ PrintMessage("Changing to dir $FTP_Dir");
+ $ftp->cwd($FTP_Dir) or $newerr=1;
+
+ if ($newerr)
+ {
+ PrintErrorMessage("Changing to dir $FTP_Dir! Aborting!");
+ $ftp->quit;
+ return;
+ }
+ }
+
+# leave this for possible auto-deletion of old files?
+# @files = $ftp->dir or $newerr=1;
+# push @ERRORS, "Can't get file list $!\n" if $newerr;
+# print "Got file list\n";
+# foreach(@files) {
+# print "$_\n";
+# }
+
+ PrintMessage("Uploading $Package (".(-s "$output_dir/$Package")." bytes)");
+
+ $ftp->binary;
+ $ftp->put("$output_dir/$Package") or $newerr=1;
+ PrintErrorMessage("Uploading package! Aborting!") if $newerr;
+ $PackagesUploaded++ if (!$newerr);
+ }
+
+ $ftp->quit;
+ }
+}
+
+##################################################################################################################
+
+sub PrepSdkPaths()
+{
+ my ($SDK) = @_;
+ my $EPOCROOT = $SDK_RootDirs{$SDK};
+ my $EPOC32RT = "$EPOCROOT\\epoc32";
+ my $AdditionalPathEntries = "";
+ my $OK = 1;
+
+ # do the directories exist?
+ if (! -d $EPOCROOT) { PrintErrorMessage("$SDK Directory does not exist: '$EPOCROOT'"); return 0; }
+ if (! -d $EPOC32RT) { PrintErrorMessage("$SDK Directory does not exist: '$EPOC32RT'"); return 0; }
+
+ # set env stuff
+ PrintMessage("Prepending $SDK specific paths to %PATH%") if (!$ReallyQuiet);
+ $AdditionalPathEntries .= "$ECompXL_BinDir;" if ($ECompXL_BinDir ne '' && $SDK eq 'UIQ2');
+ $AdditionalPathEntries .= "$EPOC32RT\\include;";
+ $AdditionalPathEntries .= "$EPOC32RT\\tools;";
+ $AdditionalPathEntries .= "$EPOC32RT\\gcc\\bin;";
+ $ENV{'EPOCROOT'} = substr($EPOCROOT,2)."\\"; # strips drive letter, needs to end with backslash!
+ $ENV{'PATH'} = "$AdditionalPathEntries$initial_path";
+
+ return 1;
+}
+
+##################################################################################################################
+
+sub CleanupPath()
+{
+ my ($path) = @_;
+
+ if ($ECompXL_BinDir ne '')
+ {
+ $path =~ s/\"\Q$ECompXL_BinDir\E\";//g;
+ }
+
+ while( ($SDK, $RootDir) = each(%SDK_RootDirs) )
+ {
+ if ($SDK_RootDirs{$SDK} ne '')
+ {
+ my $path_component = "\"".$SDK_RootDirs{$SDK}."\\epoc32\\";
+ $path =~ s/\Q$path_component\E.*?\";//g;
+ }
+ }
+
+ return $path;
+}
+
+##################################################################################################################
+
+sub PrintErrorMessage()
+{
+ my ($msg) = @_;
+
+ # add to array, so we can print it @ the end!
+ push @ErrorMessages, "$CurrentTarget: $msg";
+
+ print "+--------------------------------------------------------------------------------------\n";
+ PrintMessage("ERROR: $CurrentTarget: $msg");
+ print "\007" if (!$HaltOnError);
+ print "\007\007" if ($HaltOnError); # make more noise if halt-on-error
+}
+
+sub PrintMessage()
+{
+ my ($msg) = @_;
+
+ print "| $msg\n";
+ print "+--------------------------------------------------------------------------------------\n";
+#$line = <STDIN>;
+
+ #print "\e[1,31m> $msg\e[0m\n";
+}
+
+##################################################################################################################
+ \ No newline at end of file
diff --git a/backends/platform/symbian/BuildPackageUpload_LocalSettings.pl b/backends/platform/symbian/BuildPackageUpload_LocalSettings.pl
new file mode 100644
index 0000000000..a357b836db
--- /dev/null
+++ b/backends/platform/symbian/BuildPackageUpload_LocalSettings.pl
@@ -0,0 +1,292 @@
+
+##################################################################################################################
+
+ # you can use these below for speed & clarity or override with custom settings
+ $DefaultTopMacros = "
+ MACRO USE_ZLIB // LIB:zlib.lib
+ MACRO USE_MAD // LIB:libmad.lib
+ //MACRO USE_TREMOR // LIB:libtremor.lib
+ ";
+
+ $DefaultBottomMacros = "
+ MACRO DISABLE_SWORD1 // LIB:scummvm_sword1.lib
+ MACRO DISABLE_SWORD2 // LIB:scummvm_sword2.lib
+ MACRO DISABLE_LURE // LIB:scummvm_lure.lib
+ MACRO DISABLE_CINE // LIB:scummvm_cine.lib
+ ";
+
+ ##
+ ## General system information:
+ ##
+
+ # this way you can use the same LocalSettings.pl file on multiple machines!
+ if ($ENV{'COMPUTERNAME'} eq "MYCOMPUTER")
+ {
+ # might use this string for file/dir naming in the future :)
+ $Producer = "BUILDERNAME";
+ $RedirectSTDERR = 0;
+ $HaltOnError = 1;
+ $SkipExistingPackages = 0;
+ $ReallyQuiet = 0;
+
+ # specify an optional FTP server to upload to after each Build+Package (can leave empty)
+ #$FTP_Host = "ftp.myftp.net";
+ #$FTP_User = "user";
+ #$FTP_Pass = "pass";
+ #$FTP_Dir = "directory";
+
+ # possible SDKs: ("UIQ2", UIQ3", "S60v1", "S60v2", "S60v3", "S80", "S90")
+ # Note1: the \epoc32 directory needs to be in these rootdirs
+ # Note2: these paths do NOT end in a backslash!
+ $SDK_RootDirs{'UIQ2'} = "C:\\S\\UIQ_21";
+ $SDK_RootDirs{'S60v1'} = "C:\\S\\S60v1";
+ $SDK_RootDirs{'S60v2'} = "C:\\S\\S60v2";
+ $SDK_RootDirs{'S80'} = "C:\\S\\S80";
+ $SDK_RootDirs{'S90'} = "C:\\S\\S90";
+ $ECompXL_BinDir = "C:\\S\\ECompXL\\bin"; # only needed for UIQ
+ # you need to specify each of the SDKs used in the blocks below!
+
+ # these supporting libraries get built first, then all the Variations
+ # Note: the string {'xxx.lib'} is used in checking in build success: so needs to be accurate!
+ if (0) # so we can turn them on/off easily
+ {
+ #$SDK_LibraryDirs{'ALL'}{'zlib.lib'} = "C:\\S\\zlib-1.2.2\\epoc";
+ #$SDK_LibraryDirs{'ALL'}{'libmad.lib'} = "C:\\S\\libmad-0.15.1b\\group";
+ #$SDK_LibraryDirs{'ALL'}{'libtremor.lib'}= "C:\\S\\tremor\\epoc";
+ $SDK_LibraryDirs{'UIQ2'}{'esdl.lib'} = $SDK_LibraryDirs{'UIQ3'}{'esdl.lib'} = "C:\\S\\ESDL\\epoc\\UIQ";
+ #$SDK_LibraryDirs{'S60v1'}{'esdl.lib'} = $SDK_LibraryDirs{'S60v2'}{'esdl.lib'} = $SDK_LibraryDirs{'S60v3'}{'esdl.lib'} = "C:\\S\\ESDL\\epoc\\S60";
+ #$SDK_LibraryDirs{'S80'}{'esdl.lib'} = "C:\\S\\ESDL\\epoc\\S80";
+ #$SDK_LibraryDirs{'S90'}{'esdl.lib'} = "C:\\S\\ESDL\\epoc\\S90";
+ #$SDK_LibraryDirs{'ALL'}{'libmpeg2.lib'} = "C:\\S\\mpeg2dec-0.4.0\\epoc";
+ }
+
+ # backup :P
+ #Path=C:\Progra~1\Active\Python24\.;C:\Program Files\Active\Tcl\bin;C:\Progra~1\Active\Perl\bin\;C:\WINDOWS\system32;C:\W
+ #INDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;C:\Program Files\GNU\cvsnt;C:\Progra
+ #m Files\WinSCP3\;"C:\Program Files\Common Files\Microsoft Shared\VSA\8.0\VsaEnv\";"c:\Program Files\Microsoft Visual Stu
+ #dio 8\VC\bin";"C:\Program Files\UltraEdit-32"
+ }
+ elsif ($ENV{'COMPUTERNAME'} eq "OTHERCOMPUTER")
+ {
+#see previous section
+ # now you can add $SDK_Variations only built on this PC here :)
+ }
+ else
+ {
+ print "ERROR: Computer name ".$ENV{'COMPUTERNAME'}." not recognized! Plz edit _LocalSettings.pl!";
+ exit 1;
+ }
+
+ ##
+ ## Variation defines:
+ ##
+
+ # second hash index = literal string used in .sis file created.
+ # empty string also removes the trailing '_'. Some 051101 examples:
+
+ # $SDK_Variations{'UIQ2'}{''} would produce:
+ # scummvm-051101-SymbianUIQ2.sis
+
+ # $SDK_Variations{'S60v2'}{'simon'} would produce:
+ # scummvm-051101-SymbianS60v2_simon.sis
+
+ # $SDK_Variations{'ALL'}{'queen'} with all $SDK_RootDirs defined would produce:
+ # scummvm-051101-SymbianUIQ2_queen.sis
+ # scummvm-051101-SymbianUIQ3_queen.sis
+ # scummvm-051101-SymbianS60v1_queen.sis
+ # scummvm-051101-SymbianS60v2_queen.sis
+ # scummvm-051101-SymbianS60v3_queen.sis
+ # scummvm-051101-SymbianS80_queen.sis
+ # scummvm-051101-SymbianS90_queen.sis
+
+ $SDK_Variations{'UIQ2'}{'test'} = "$DefaultTopMacro
+ MACRO USE_TREMOR // LIB:libtremor.lib
+ //MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
+ //MACRO DISABLE_SIMON // LIB:scummvm_simon.lib
+ //MACRO DISABLE_SKY // LIB:scummvm_sky.lib
+ //MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
+ //MACRO DISABLE_GOB // LIB:scummvm_gob.lib
+ //MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
+ //MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
+ $DefaultBottomMacros";
+# $SDK_Variations{'S60v1'}{'test'} = $SDK_Variations{'UIQ2'}{'test'};
+
+if (0) # all regular combo's
+{
+ # the first one includes all SDKs & engines
+
+ $SDK_Variations{'ALL'}{'all'} = "$DefaultTopMacros
+ //MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
+ //MACRO DISABLE_SIMON // LIB:scummvm_simon.lib
+ //MACRO DISABLE_SKY // LIB:scummvm_sky.lib
+ //MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
+ //MACRO DISABLE_GOB // LIB:scummvm_gob.lib
+ //MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
+ //MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
+ $DefaultBottomMacros";
+
+ # now one for each ready-for-release engine
+
+ $SDK_Variations{'ALL'}{'scumm'} = "$DefaultTopMacros
+ //MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
+ MACRO DISABLE_SIMON // LIB:scummvm_simon.lib
+ MACRO DISABLE_SKY // LIB:scummvm_sky.lib
+ MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
+ MACRO DISABLE_GOB // LIB:scummvm_gob.lib
+ MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
+ MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
+ $DefaultBottomMacros";
+
+ $SDK_Variations{'ALL'}{'simon'} = "$DefaultTopMacros
+ MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
+ //MACRO DISABLE_SIMON // LIB:scummvm_simon.lib
+ MACRO DISABLE_SKY // LIB:scummvm_sky.lib
+ MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
+ MACRO DISABLE_GOB // LIB:scummvm_gob.lib
+ MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
+ MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
+ $DefaultBottomMacros";
+
+ $SDK_Variations{'ALL'}{'sky'} = "$DefaultTopMacros
+ MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
+ MACRO DISABLE_SIMON // LIB:scummvm_simon.lib
+ //MACRO DISABLE_SKY // LIB:scummvm_sky.lib
+ MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
+ MACRO DISABLE_GOB // LIB:scummvm_gob.lib
+ MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
+ MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
+ $DefaultBottomMacros";
+
+ $SDK_Variations{'ALL'}{'queen'} = "$DefaultTopMacros
+ MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
+ MACRO DISABLE_SIMON // LIB:scummvm_simon.lib
+ MACRO DISABLE_SKY // LIB:scummvm_sky.lib
+ //MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
+ MACRO DISABLE_GOB // LIB:scummvm_gob.lib
+ MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
+ MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
+ $DefaultBottomMacros";
+
+ $SDK_Variations{'ALL'}{'gob'} = "$DefaultTopMacros
+ MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
+ MACRO DISABLE_SIMON // LIB:scummvm_simon.lib
+ MACRO DISABLE_SKY // LIB:scummvm_sky.lib
+ MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
+ //MACRO DISABLE_GOB // LIB:scummvm_gob.lib
+ MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
+ MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
+ $DefaultBottomMacros";
+
+ $SDK_Variations{'ALL'}{'saga'} = "$DefaultTopMacros
+ MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
+ MACRO DISABLE_SIMON // LIB:scummvm_simon.lib
+ MACRO DISABLE_SKY // LIB:scummvm_sky.lib
+ MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
+ MACRO DISABLE_GOB // LIB:scummvm_gob.lib
+ //MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
+ MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
+ $DefaultBottomMacros";
+
+ $SDK_Variations{'ALL'}{'kyra'} = "$DefaultTopMacros
+ MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
+ MACRO DISABLE_SIMON // LIB:scummvm_simon.lib
+ MACRO DISABLE_SKY // LIB:scummvm_sky.lib
+ MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
+ MACRO DISABLE_GOB // LIB:scummvm_gob.lib
+ MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
+ //MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
+ $DefaultBottomMacros";
+
+ # below here you could specify weird & experimental combinations, non-ready engines
+
+ $SDK_Variations{'ALL'}{'test_lure'} = "$DefaultTopMacros
+ MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
+ MACRO DISABLE_SIMON // LIB:scummvm_simon.lib
+ MACRO DISABLE_SKY // LIB:scummvm_sky.lib
+ MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
+ MACRO DISABLE_GOB // LIB:scummvm_gob.lib
+ MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
+ MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
+ MACRO DISABLE_SWORD1 // LIB:scummvm_sword1.lib
+ MACRO DISABLE_SWORD2 // LIB:scummvm_sword2.lib
+ //MACRO DISABLE_LURE // LIB:scummvm_lure.lib
+ MACRO DISABLE_CINE
+ $DefaultBottomMacros";
+
+ $SDK_Variations{'ALL'}{'saga_mini'} = "
+ //MACRO USE_ZLIB // LIB:zlib.lib
+ //MACRO USE_MAD // LIB:libmad.lib
+ //MACRO USE_TREMOR // LIB:libtremor.lib
+ MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
+ MACRO DISABLE_SIMON // LIB:scummvm_simon.lib
+ MACRO DISABLE_SKY // LIB:scummvm_sky.lib
+ MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
+ MACRO DISABLE_GOB // LIB:scummvm_gob.lib
+ //MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
+ MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
+ MACRO DISABLE_CINE
+ $DefaultBottomMacros";
+
+ $SDK_Variations{'ALL'}{'scumm_no78he'} = "
+ MACRO USE_ZLIB // LIB:zlib.lib
+ MACRO USE_MAD // LIB:libmad.lib
+ //MACRO USE_TREMOR // LIB:libtremor.lib
+ //MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
+ MACRO DISABLE_SIMON // LIB:scummvm_simon.lib
+ MACRO DISABLE_SKY // LIB:scummvm_sky.lib
+ MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
+ MACRO DISABLE_GOB // LIB:scummvm_gob.lib
+ MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
+ MACRO DISABLE_SCUMM_7_8
+ MACRO DISABLE_SCUMM_HE
+ MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
+ MACRO DISABLE_CINE
+ $DefaultBottomMacros";
+
+# $SDK_Variations{'ALL'}{'all_vorbis'} = "
+# MACRO USE_ZLIB // LIB:zlib.lib
+# MACRO USE_MAD // LIB:libmad.lib
+# MACRO USE_TREMOR // LIB:libtremor.lib
+# //MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
+# //MACRO DISABLE_SIMON // LIB:scummvm_simon.lib
+# //MACRO DISABLE_SKY // LIB:scummvm_sky.lib
+# //MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
+# //MACRO DISABLE_GOB // LIB:scummvm_gob.lib
+# //MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
+# $DefaultBottomMacros";
+}
+
+#
+# $SDK_Variations{'S60v2'}{'test_sword'} = "$DefaultTopMacros
+# MACRO USE_MPEG2 // LIB:libmpeg2.lib
+# MACRO USE_TREMOR // LIB:libtremor.lib
+# MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
+# MACRO DISABLE_SIMON // LIB:scummvm_simon.lib
+# MACRO DISABLE_SKY // LIB:scummvm_sky.lib
+# MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
+# MACRO DISABLE_GOB // LIB:scummvm_gob.lib
+# MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
+# MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
+# //MACRO DISABLE_SWORD1 // LIB:scummvm_sword1.lib
+# //MACRO DISABLE_SWORD2 // LIB:scummvm_sword2.lib
+# ";
+# $SDK_Variations{'UIQ2'}{'test_sword'} = $SDK_Variations{'S60v2'}{'test_sword'}
+#
+
+# for mega-fast-testing only plz!
+# $SDK_Variations{'UIQ2'}{'(fast_empty)'} = "
+# //MACRO USE_ZLIB // LIB:zlib.lib
+# //MACRO USE_MAD // LIB:libmad.lib
+# //MACRO USE_TREMOR // LIB:libtremor.lib
+# MACRO USE_UIQ_SE_VIBRA // LIB:vibration.lib
+# MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
+# MACRO DISABLE_SIMON // LIB:scummvm_simon.lib
+# MACRO DISABLE_SKY // LIB:scummvm_sky.lib
+# //MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
+# MACRO DISABLE_GOB // LIB:scummvm_gob.lib
+# MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
+# $DefaultBottomMacros";
+
+##################################################################################################################
+
+1; \ No newline at end of file
diff --git a/backends/platform/symbian/README b/backends/platform/symbian/README
new file mode 100644
index 0000000000..3a4b6142ad
--- /dev/null
+++ b/backends/platform/symbian/README
@@ -0,0 +1,135 @@
+
+ ScummVM - 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 ScummVM
+--------------
+ 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 ScummVM yourself using the UIQ 2.1/Nokia S60 SDK/Nokia S80 SDK/Nokia S90 SDK 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:
+
+ - UIQ 2.1 SDK (To build for UIQ devices);
+ http://www.symbian.com/developer/sdks_uiq.asp
+
+ - Nokia S60 1st, 2nd edition (3rd edition has not been tested) SDK (To build for S60 devices)
+
+ - Nokia S80 SDK (To build for S80 devices)
+
+ - Nokia 7710 SDK (To build for the 7710/S90 device)
+
+ - ECompXL, an EPOC application compression library
+ http://www.yipton.demon.co.uk/ecompxl/latest/readme.html (To build for UIQ devices)
+
+ - 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 ScummVM
+-----------------
+ 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
+
+ ScummVM: make sure the SYSTEMINCLUDE dirs in ScumVM.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/ go:
+
+ > run 'unzip mmp\initial_mmps.zip'
+ > edit the scummvm_base.mmp to fit your needs (for supported target games and features, check the MACRO statements)
+ > run 'perl AdaptAllMMPs.pl' from the commandline, this will update all mmp and bld.inf files
+ > change to the directory for your designated target (uiq2 for UIQ 2.X, S60 for S60 v1 & V2 etc)
+ > 'bldmake bldfiles' to update and create the symbian build structure
+ > 'abld build armi urel' to build the target binaries
+ > makesis -d\sdkpath ScummVM_xxx.pkg to build the sis file for your target.
+
+ Now you should have yourself a nice ScummVM_xxx.sis installer package for use
+ on your phone. Please note that for development it will be a lot faster if you
+ transfer the SCUMMVM.APP/Scummvm.EXE file directly to your !:\system\apps\ScummVM\ 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 and adopting all sources together with Fingolfin :)
+ - 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
+
diff --git a/backends/platform/symbian/S60/BLD.INF.in b/backends/platform/symbian/S60/BLD.INF.in
new file mode 100644
index 0000000000..b6cf8bbda6
--- /dev/null
+++ b/backends/platform/symbian/S60/BLD.INF.in
@@ -0,0 +1,12 @@
+PRJ_PLATFORMS
+WINS ARMI // ARM4 THUMB
+
+PRJ_MMPFILES
+//START_AUTO_PROJECTS//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_PROJECTS//
+
+.\ScummVM_S60.mmp
+.\ScummVM_S60_App.mmp
diff --git a/backends/platform/symbian/S60/ScummVM_S60.mmp.in b/backends/platform/symbian/S60/ScummVM_S60.mmp.in
new file mode 100644
index 0000000000..3421cb306d
--- /dev/null
+++ b/backends/platform/symbian/S60/ScummVM_S60.mmp.in
@@ -0,0 +1,104 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// EPOC S60 MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+#if defined(WINS)
+ TARGET ScummVM.dll
+#else
+ TARGET ScummVM.exe
+#endif
+TARGETPATH system\apps\ScummVM
+TARGETTYPE EXEDLL
+
+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
+
+#if !defined(WINS)
+EPOCSTACKSIZE 0x00008000
+EPOCHEAPSIZE 2048000 8192000
+#endif
+
+MACRO S60
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** Static Libraries
+
+STATICLIBRARY esdl.lib
+
+#if !defined(WINS)
+STATICLIBRARY egcc.lib // for __fixunsdfsi
+#endif
+
+// *** Include paths
+
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\engines
+USERINCLUDE ..\..\..\backends\fs ..\src ..\..\..\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 ..\src // for portdefs.h
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\base
+
+//START_AUTO_OBJECTS_BASE_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_BASE_//
+
+SOURCEPATH ..\..\..
+
+// 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\symbian\src\SymbianOS.cpp
+SOURCE backends\symbian\src\SymbianActions.cpp
+SOURCE backends\symbian\src\ScummApp.cpp
+
+SOURCE gui\Key.cpp
+SOURCE gui\KeysDialog.cpp
+SOURCE gui\Actions.cpp
+
+// *** Dynamic Libraries
+
+LIBRARY cone.lib eikcore.lib
+LIBRARY euser.lib apparc.lib fbscli.lib
+LIBRARY estlib.lib
+LIBRARY gdi.lib hal.lib bitgdi.lib
+LIBRARY mediaclientaudiostream.lib efsrv.lib ws32.lib
+library avkon.lib bafl.lib
diff --git a/backends/platform/symbian/S60/ScummVM_S60_App.mmp b/backends/platform/symbian/S60/ScummVM_S60_App.mmp
new file mode 100644
index 0000000000..6caf91009b
--- /dev/null
+++ b/backends/platform/symbian/S60/ScummVM_S60_App.mmp
@@ -0,0 +1,49 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// MAKEFILE.MMP S60 ScummVM Launcher
+//
+
+TARGET ScummVM.app
+TARGETPATH system\apps\ScummVM
+TARGETTYPE app
+
+UID 0x100039ce 0x101f9b57
+sourcepath ..\res
+RESOURCE SCUMMVM.rss
+
+USERINCLUDE ..\src
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc
+
+// app source
+sourcepath ..\src
+SOURCE ScummVMApp.cpp
+
+sourcepath ..
+AIF ScummVm.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
+LIBRARY avkon.lib
diff --git a/backends/platform/symbian/S60/scummvm-CVS-SymbianS60v1.pkg b/backends/platform/symbian/S60/scummvm-CVS-SymbianS60v1.pkg
new file mode 100644
index 0000000000..d95ea72456
--- /dev/null
+++ b/backends/platform/symbian/S60/scummvm-CVS-SymbianS60v1.pkg
@@ -0,0 +1,27 @@
+;;;
+;;; ScummVM .PKG file for .SIS gegeration
+;;;
+
+; Languages
+;&EN
+
+; UID is the app's UID
+#{"ScummVM S60v1"},(0x101f9b57),0,80,0
+
+; Platform type
+(0x101F6F88), 0, 0, 0, {"Series60ProductID"}
+
+; Launcher, Application, AIF & Resource file
+"\epoc32\release\armi\urel\ScummVM.app"-"!:\system\apps\ScummVM\ScummVM.app"
+"\epoc32\release\armi\urel\ScummVM.exe"-"!:\system\apps\ScummVM\ScummVM.exe"
+"\epoc32\release\armi\urel\ScummVM.aif"-"!:\system\apps\ScummVM\ScummVM.aif"
+"\epoc32\release\armi\urel\ScummVM.rsc"-"!:\system\apps\ScummVM\ScummVM.rsc"
+
+; Config/log files: 'empty' will automagically be removed on uninstall
+""-"!:\system\apps\ScummVM\scummvm.ini",FILENULL
+""-"!:\system\apps\ScummVM\scummvm.stdout.txt",FILENULL
+""-"!:\system\apps\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
diff --git a/backends/platform/symbian/S60/scummvm-CVS-SymbianS60v2.pkg b/backends/platform/symbian/S60/scummvm-CVS-SymbianS60v2.pkg
new file mode 100644
index 0000000000..b2eb086488
--- /dev/null
+++ b/backends/platform/symbian/S60/scummvm-CVS-SymbianS60v2.pkg
@@ -0,0 +1,27 @@
+;;;
+;;; ScummVM .PKG file for .SIS gegeration
+;;;
+
+; Languages
+;&EN
+
+; UID is the app's UID
+#{"ScummVM S60v2"},(0x101f9b57),0,80,3
+
+; Platform type
+(0x101F6F88), 0, 0, 0, {"Series60ProductID"}
+
+; Launcher, Application, AIF & Resource file
+"\epoc32\release\armi\urel\ScummVM.app"-"!:\system\apps\ScummVM\ScummVM.app"
+"\epoc32\release\armi\urel\ScummVM.exe"-"!:\system\apps\ScummVM\ScummVM.exe"
+"\epoc32\data\z\system\apps\ScummVM\ScummVM.aif"-"!:\system\apps\ScummVM\ScummVM.aif"
+"\epoc32\data\z\system\apps\ScummVM\ScummVM.rsc"-"!:\system\apps\ScummVM\ScummVM.rsc"
+
+; Config/log files: 'empty' will automagically be removed on uninstall
+""-"!:\system\apps\ScummVM\scummvm.ini",FILENULL
+""-"!:\system\apps\ScummVM\scummvm.stdout.txt",FILENULL
+""-"!:\system\apps\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
diff --git a/backends/platform/symbian/S60v3/BLD.INF.in b/backends/platform/symbian/S60v3/BLD.INF.in
new file mode 100644
index 0000000000..f7b7090adf
--- /dev/null
+++ b/backends/platform/symbian/S60v3/BLD.INF.in
@@ -0,0 +1,11 @@
+PRJ_PLATFORMS
+GCCE WINSCW
+
+PRJ_MMPFILES
+//START_AUTO_PROJECTS//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_PROJECTS//
+
+.\ScummVM_S60v3.mmp
diff --git a/backends/platform/symbian/S60v3/ScummVM_Loc.rss b/backends/platform/symbian/S60v3/ScummVM_Loc.rss
new file mode 100644
index 0000000000..83a8cfcc4c
--- /dev/null
+++ b/backends/platform/symbian/S60v3/ScummVM_Loc.rss
@@ -0,0 +1,22 @@
+#include <AppInfo.rh>
+
+// This file localise the applications icons and caption
+RESOURCE LOCALISABLE_APP_INFO
+ {
+ caption_and_icon =
+ {
+ CAPTION_AND_ICON_INFO
+ {
+ // The caption text is defined in the rls file
+ caption = "ScummVM";
+ // Icons are used to represent applications in the
+ // application launcher and application title bar.
+ // The number_of_icons value identifies how many icons
+ // that exist in the icon_file.
+ number_of_icons = 3;
+ // Using the application icons.
+ icon_file = "\\Resource\\Apps\\ScummVM.mbm";
+ }
+ };
+ }
+
diff --git a/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in b/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in
new file mode 100644
index 0000000000..545eade06e
--- /dev/null
+++ b/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in
@@ -0,0 +1,123 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// EPOC S60 MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+TARGET ScummVM.exe
+TARGETPATH sys\bin
+TARGETTYPE EXE
+
+UID 0x100039ce 0xA0000657
+
+START RESOURCE ScummVM_reg.rss
+TARGETPATH \private\10003a3f\apps
+END
+
+START RESOURCE ScummVM_loc.rss
+TARGETPATH \Resource\Apps
+LANG SC
+END
+
+SOURCEPATH ..\res
+START RESOURCE ScummVM.rss
+HEADER
+TARGETPATH \Resource\Apps
+LANG SC
+END
+
+START BITMAP ScummVM.mbm
+TARGETPATH \Resource\Apps
+SOURCEPATH ..\res
+// Source Color-depth Source-bitmap-list
+// c denotes whether the bitmap is a colour bitmap and the digits represent the
+// colour-depth of the bitmap and the bitmap mask respectively
+SOURCE c24 ScummSmall.bmp
+SOURCE 8 ScummSmallMask.bmp
+SOURCE c24 ScummLarge.bmp
+SOURCE 8 ScummLargeMask.bmp
+SOURCE c24 ScummxLarge.bmp
+SOURCE 8 ScummxLargeMask.bmp
+END
+
+EPOCSTACKSIZE 0x0000F000
+EPOCHEAPSIZE 2048000 16192000
+
+MACRO S60
+MACRO S60V3
+MACRO EPOC_AS_APP
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** Static Libraries
+
+STATICLIBRARY esdl.lib
+
+// *** Include paths
+
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\engines
+USERINCLUDE ..\..\..\backends\fs ..\src ..\..\..\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 ..\src // for portdefs.h
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\base
+
+//START_AUTO_OBJECTS_BASE_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_BASE_//
+
+SOURCEPATH ..\..\..
+
+// 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\symbian\src\SymbianOS.cpp
+SOURCE backends\symbian\src\SymbianActions.cpp
+SOURCE backends\symbian\src\ScummApp.cpp
+
+SOURCE gui\Key.cpp
+SOURCE gui\KeysDialog.cpp
+SOURCE gui\Actions.cpp
+
+// *** Dynamic Libraries
+LIBRARY cone.lib eikcore.lib
+LIBRARY euser.lib apparc.lib fbscli.lib
+LIBRARY estlib.lib
+LIBRARY gdi.lib hal.lib bitgdi.lib
+LIBRARY mediaclientaudiostream.lib efsrv.lib ws32.lib
+library avkon.lib bafl.lib
diff --git a/backends/platform/symbian/S60v3/scummvm-CVS-SymbianS60v3.pkg b/backends/platform/symbian/S60v3/scummvm-CVS-SymbianS60v3.pkg
new file mode 100644
index 0000000000..d6a1e94c1f
--- /dev/null
+++ b/backends/platform/symbian/S60v3/scummvm-CVS-SymbianS60v3.pkg
@@ -0,0 +1,33 @@
+;;;
+;;; ScummVM .PKG file for .SIS gegeration
+;;;
+;Language - standard language definitions
+&EN
+
+; List of localised vendor names - one per language. At least one must be provided (English [EN]).
+; List must correspond to list of languages specified elsewhere in the .pkg
+%{"ScummVM"}
+; The non-localised, globally unique vendor name (mandatory)
+:"ScummVM"
+
+; UID is the app's UID
+#{"ScummVM S60v3"},(0xA0000657),0,90,0
+
+;Supports Series 60 v 3.0
+[0x101F7961], 0, 0, 0, {"Series60ProductID"}
+
+; Launcher, Application, AIF & Resource file
+"\s60v3\epoc32\release\gcce\urel\ScummVM.exe"- "!:\sys\bin\ScummVM.exe"
+"\s60v3\epoc32\data\z\resource\apps\ScummVM.rsc"- "!:\resource\apps\ScummVM.rsc"
+"\s60v3\epoc32\Data\Z\resource\apps\scummvm_loc.rsc"- "!:\resource\apps\scummvm_loc.rsc"
+"\s60v3\epoc32\data\Z\resource\APPS\scummvm.MBM"- "!:\resource\apps\scummvm.MBM"
+"\s60v3\epoc32\data\z\private\10003a3f\apps\scummvm_reg.rsc"-"!:\private\10003a3f\import\apps\scummvm_reg.rsc"
+
+; Config/log files: 'empty' will automagically be removed on uninstall
+""-"c:\private\A0000657\scummvm.ini",FILENULL
+""-"c:\private\A0000657\scummvm.stdout.txt",FILENULL
+""-"c:\private\A0000657\scummvm.stderr.txt",FILENULL
+""-"c:\private\A0000657\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
diff --git a/backends/platform/symbian/S60v3/scummvm_reg.rss b/backends/platform/symbian/S60v3/scummvm_reg.rss
new file mode 100644
index 0000000000..df99094b2e
--- /dev/null
+++ b/backends/platform/symbian/S60v3/scummvm_reg.rss
@@ -0,0 +1,18 @@
+// All registration files need to #include appinfo.rh.
+#include <AppInfo.rh>
+
+// All registration files must define UID2, which is always
+// KUidAppRegistrationResourceFile, and UID3, which is the application's UID.
+UID2 KUidAppRegistrationResourceFile
+UID3 0xA0000657 // application UID
+
+// Registration file need to containo an APP_REGISTRATION_INFO resource that
+// minimally needs to provide the name of the application binary (using the
+// app_file statement).
+RESOURCE APP_REGISTRATION_INFO
+ {
+ app_file = "ScummVM"; // filename of application binary (minus extension)
+ // Specify the location of the localisable icon/caption definition file
+ localisable_resource_file = "\\Resource\\Apps\\ScummVM_loc";
+ }
+
diff --git a/backends/platform/symbian/S80/BLD.INF.in b/backends/platform/symbian/S80/BLD.INF.in
new file mode 100644
index 0000000000..75ef20be12
--- /dev/null
+++ b/backends/platform/symbian/S80/BLD.INF.in
@@ -0,0 +1,12 @@
+PRJ_PLATFORMS
+WINS ARMI // ARM4 THUMB
+
+PRJ_MMPFILES
+//START_AUTO_PROJECTS//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_PROJECTS//
+
+.\ScummVM_S80.mmp
+.\ScummVM_S80_App.mmp
diff --git a/backends/platform/symbian/S80/ScummVM_S80.mmp.in b/backends/platform/symbian/S80/ScummVM_S80.mmp.in
new file mode 100644
index 0000000000..6074439552
--- /dev/null
+++ b/backends/platform/symbian/S80/ScummVM_S80.mmp.in
@@ -0,0 +1,102 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// EPOC S80 MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+#if defined(WINS)
+ TARGET ScummVM.dll
+#else
+ TARGET ScummVM.exe
+#endif
+TARGETPATH system\apps\ScummVM
+TARGETTYPE EXEDLL
+
+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
+
+EPOCSTACKSIZE 0x00008000
+EPOCHEAPSIZE 1024 8192000
+
+MACRO S80
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** Static Libraries
+
+STATICLIBRARY esdl.lib
+
+#if !defined(WINS)
+STATICLIBRARY egcc.lib // for __fixunsdfsi
+#endif
+
+// *** Include paths
+
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\engines
+USERINCLUDE ..\..\..\backends\fs ..\src ..\..\..\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 ..\src // for portdefs.h
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\base
+
+//START_AUTO_OBJECTS_BASE_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_BASE_//
+
+SOURCEPATH ..\..\..
+
+// 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\symbian\src\SymbianOS.cpp
+SOURCE backends\symbian\src\SymbianActions.cpp
+SOURCE backends\symbian\src\ScummApp.cpp
+
+SOURCE gui\Key.cpp
+SOURCE gui\KeysDialog.cpp
+SOURCE gui\Actions.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 bafl.lib
+
diff --git a/backends/platform/symbian/S80/ScummVM_S80_App.mmp b/backends/platform/symbian/S80/ScummVM_S80_App.mmp
new file mode 100644
index 0000000000..09fa822bc7
--- /dev/null
+++ b/backends/platform/symbian/S80/ScummVM_S80_App.mmp
@@ -0,0 +1,49 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// MAKEFILE.MMP S80 ScummVM Launcher
+//
+
+TARGET ScummVM.app
+TARGETPATH system\apps\ScummVM
+TARGETTYPE app
+
+UID 0x100039ce 0x101f9b57
+sourcepath ..\res
+RESOURCE SCUMMVM.rss
+
+SOURCEPATH .
+USERINCLUDE ..\src
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc
+
+// app source
+sourcepath ..\src
+SOURCE ScummVMApp.cpp
+
+sourcepath ..
+AIF ScummVm.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
diff --git a/backends/platform/symbian/S80/scummvm-CVS-SymbianS80.pkg b/backends/platform/symbian/S80/scummvm-CVS-SymbianS80.pkg
new file mode 100644
index 0000000000..e48d37b08e
--- /dev/null
+++ b/backends/platform/symbian/S80/scummvm-CVS-SymbianS80.pkg
@@ -0,0 +1,27 @@
+;;;
+;;; ScummVM .PKG file for .SIS gegeration
+;;;
+
+; Languages
+;&EN
+
+; UID is the app's UID
+#{"ScummVM S80"},(0x101f9b57),0,80,3
+
+; Platform type -- disabled: seems to be causing trouble
+;(0x101F8ED2), 0, 0, 0, {"Series80ProductID"}
+
+; Launcher, Application, AIF & Resource file
+"\epoc32\release\armi\urel\ScummVM.app"-"!:\system\apps\ScummVM\ScummVM.app"
+"\epoc32\release\armi\urel\ScummVM.exe"-"!:\system\apps\ScummVM\ScummVM.exe"
+"\epoc32\data\z\system\apps\ScummVM\ScummVM.aif"-"!:\system\apps\ScummVM\ScummVM.aif"
+"\epoc32\data\z\system\apps\ScummVM\ScummVM.rsc"-"!:\system\apps\ScummVM\ScummVM.rsc"
+
+; Config/log files: 'empty' will automagically be removed on uninstall
+""-"!:\system\apps\ScummVM\scummvm.ini",FILENULL
+""-"!:\system\apps\ScummVM\scummvm.stdout.txt",FILENULL
+""-"!:\system\apps\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
diff --git a/backends/platform/symbian/S90/BLD.INF.in b/backends/platform/symbian/S90/BLD.INF.in
new file mode 100644
index 0000000000..d6e1ece012
--- /dev/null
+++ b/backends/platform/symbian/S90/BLD.INF.in
@@ -0,0 +1,12 @@
+PRJ_PLATFORMS
+WINS ARMI // ARM4 THUMB
+
+PRJ_MMPFILES
+//START_AUTO_PROJECTS//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_PROJECTS//
+
+.\ScummVM_S90.mmp
+.\ScummVM_S90_App.mmp
diff --git a/backends/platform/symbian/S90/Scummvm_S90.mmp.in b/backends/platform/symbian/S90/Scummvm_S90.mmp.in
new file mode 100644
index 0000000000..2655a553a4
--- /dev/null
+++ b/backends/platform/symbian/S90/Scummvm_S90.mmp.in
@@ -0,0 +1,102 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// EPOC S90 MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+#if defined(WINS)
+ TARGET ScummVM.dll
+#else
+ TARGET ScummVM.exe
+#endif
+TARGETPATH system\apps\ScummVM
+TARGETTYPE EXEDLL
+
+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
+
+EPOCSTACKSIZE 0x00008000
+EPOCHEAPSIZE 1024 8192000
+
+MACRO S90
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** Static Libraries
+
+STATICLIBRARY esdl.lib
+
+#if !defined(WINS)
+STATICLIBRARY egcc.lib // for __fixunsdfsi
+#endif
+
+// *** Include paths
+
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\engines
+USERINCLUDE ..\..\..\backends\fs ..\src ..\..\..\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 ..\src // for portdefs.h
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\base
+
+//START_AUTO_OBJECTS_BASE_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_BASE_//
+
+SOURCEPATH ..\..\..
+
+// 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\symbian\src\SymbianOS.cpp
+SOURCE backends\symbian\src\SymbianActions.cpp
+SOURCE backends\symbian\src\ScummApp.cpp
+
+SOURCE gui\Key.cpp
+SOURCE gui\KeysDialog.cpp
+SOURCE gui\Actions.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 bafl.lib
+LIBRARY mediaclientaudiostream.lib efsrv.lib ws32.lib
+
diff --git a/backends/platform/symbian/S90/Scummvm_S90_App.mmp b/backends/platform/symbian/S90/Scummvm_S90_App.mmp
new file mode 100644
index 0000000000..62a045e146
--- /dev/null
+++ b/backends/platform/symbian/S90/Scummvm_S90_App.mmp
@@ -0,0 +1,49 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// MAKEFILE.MMP S90 ScummVM Launcher
+//
+
+TARGET ScummVM.app
+TARGETPATH system\apps\ScummVM
+TARGETTYPE app
+
+UID 0x100039ce 0x101f9b57
+sourcepath ..\res
+RESOURCE SCUMMVM.rss
+
+SOURCEPATH .
+USERINCLUDE .
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc
+
+// app source
+sourcepath ..\src
+SOURCE ScummVMApp.cpp
+
+sourcepath ..
+AIF ScummVm.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/platform/symbian/S90/scummvm-CVS-SymbianS90.pkg b/backends/platform/symbian/S90/scummvm-CVS-SymbianS90.pkg
new file mode 100644
index 0000000000..a913bd15ec
--- /dev/null
+++ b/backends/platform/symbian/S90/scummvm-CVS-SymbianS90.pkg
@@ -0,0 +1,27 @@
+;;;
+;;; ScummVM .PKG file for .SIS gegeration
+;;;
+
+; Languages
+;&EN
+
+; UID is the app's UID
+#{"ScummVM S90"},(0x101f9b57),0,80,3
+
+; Platform type -- disabled: seems to be causing trouble
+;(0x101FBE04), 0, 0, 0, {"Series90ProductID"}
+
+; Launcher, Application, AIF & Resource file
+"\epoc32\release\armi\urel\ScummVM.app"-"!:\system\apps\ScummVM\ScummVM.app"
+"\epoc32\release\armi\urel\ScummVM.exe"-"!:\system\apps\ScummVM\ScummVM.exe"
+"\epoc32\data\z\system\apps\ScummVM\ScummVM.aif"-"!:\system\apps\ScummVM\ScummVM.aif"
+"\epoc32\data\z\system\apps\ScummVM\ScummVM.rsc"-"!:\system\apps\ScummVM\ScummVM.rsc"
+
+; Config/log files: 'empty' will automagically be removed on uninstall
+""-"!:\system\apps\ScummVM\scummvm.ini",FILENULL
+""-"!:\system\apps\ScummVM\scummvm.stdout.txt",FILENULL
+""-"!:\system\apps\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
diff --git a/backends/platform/symbian/UIQ2/BLD.INF.in b/backends/platform/symbian/UIQ2/BLD.INF.in
new file mode 100644
index 0000000000..b607446a64
--- /dev/null
+++ b/backends/platform/symbian/UIQ2/BLD.INF.in
@@ -0,0 +1,11 @@
+PRJ_PLATFORMS
+WINS ARMI // ARM4 THUMB
+
+PRJ_MMPFILES
+//START_AUTO_PROJECTS//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_PROJECTS//
+
+.\ScummVM_UIQ2.mmp
diff --git a/backends/platform/symbian/UIQ2/ScummVM.rss b/backends/platform/symbian/UIQ2/ScummVM.rss
new file mode 100644
index 0000000000..a55fabfc51
--- /dev/null
+++ b/backends/platform/symbian/UIQ2/ScummVM.rss
@@ -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-2006 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.
+ *
+ * $URL$
+ * $Id$
+ */
+
+// 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
+ {
+ }
+
diff --git a/backends/platform/symbian/UIQ2/ScummVM_UIQ2.mmp.in b/backends/platform/symbian/UIQ2/ScummVM_UIQ2.mmp.in
new file mode 100644
index 0000000000..9b2e432b19
--- /dev/null
+++ b/backends/platform/symbian/UIQ2/ScummVM_UIQ2.mmp.in
@@ -0,0 +1,106 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// EPOC UIQ MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+TARGET SCUMMVM.APP
+TARGETPATH system\apps\ScummVM
+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 ScummVM.rss
+EPOCSTACKSIZE 0x80008000 // this enables ECompXL app compression
+AIF ScummVm.Aif ..\res\ ScummVmAif.rss c16 ScummL.bmp ScummLM.bmp ScummS.bmp ScummSM.bmp
+UID 0x100039ce 0x101f9b57
+
+MACRO UIQ
+MACRO EPOC_AS_APP
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** Static Libraries
+
+STATICLIBRARY esdl.lib
+
+#if !defined(WINS)
+STATICLIBRARY egcc.lib // for __fixunsdfsi
+#endif
+
+// *** Include paths
+
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\engines
+USERINCLUDE ..\..\..\backends\fs ..\src ..\..\..\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 ..\src // for portdefs.h
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\base
+
+//START_AUTO_OBJECTS_BASE_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_BASE_//
+
+SOURCEPATH ..\..\..\
+
+// 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\symbian\src\SymbianOS.cpp
+SOURCE backends\symbian\src\SymbianActions.cpp
+SOURCE backends\symbian\src\ScummApp.cpp
+
+SOURCE gui\Key.cpp
+SOURCE gui\KeysDialog.cpp
+SOURCE gui\Actions.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 bafl.lib
+
+START WINS
+WIN32_LIBRARY lldiv.obj llmul.obj llshl.obj
+END
+
diff --git a/backends/platform/symbian/UIQ2/Vibration.sis b/backends/platform/symbian/UIQ2/Vibration.sis
new file mode 100644
index 0000000000..7cd9d33f15
--- /dev/null
+++ b/backends/platform/symbian/UIQ2/Vibration.sis
Binary files differ
diff --git a/backends/platform/symbian/UIQ2/chkstk.obj b/backends/platform/symbian/UIQ2/chkstk.obj
new file mode 100644
index 0000000000..1df42b21c3
--- /dev/null
+++ b/backends/platform/symbian/UIQ2/chkstk.obj
Binary files differ
diff --git a/backends/platform/symbian/UIQ2/lldiv.obj b/backends/platform/symbian/UIQ2/lldiv.obj
new file mode 100644
index 0000000000..60d7c98660
--- /dev/null
+++ b/backends/platform/symbian/UIQ2/lldiv.obj
Binary files differ
diff --git a/backends/platform/symbian/UIQ2/llmul.obj b/backends/platform/symbian/UIQ2/llmul.obj
new file mode 100644
index 0000000000..c6416030a3
--- /dev/null
+++ b/backends/platform/symbian/UIQ2/llmul.obj
Binary files differ
diff --git a/backends/platform/symbian/UIQ2/llshl.obj b/backends/platform/symbian/UIQ2/llshl.obj
new file mode 100644
index 0000000000..30c5749d83
--- /dev/null
+++ b/backends/platform/symbian/UIQ2/llshl.obj
Binary files differ
diff --git a/backends/platform/symbian/UIQ2/scummvm-CVS-SymbianUIQ2.pkg b/backends/platform/symbian/UIQ2/scummvm-CVS-SymbianUIQ2.pkg
new file mode 100644
index 0000000000..2ebf7580f9
--- /dev/null
+++ b/backends/platform/symbian/UIQ2/scummvm-CVS-SymbianUIQ2.pkg
@@ -0,0 +1,26 @@
+;;;
+;;; ScummVM .PKG file for .SIS gegeration
+;;;
+
+; Languages
+;&EN
+
+; UID is the app's UID
+#{"ScummVM UIQ2"},(0x101f9b57),0,80,3
+
+; Platform type
+(0x101F617B), 2, 0, 0, {"UIQ20ProductID"}
+
+; Application, AIF & Resource file
+"\epoc32\release\armi\urel\ScummVM.app"-"!:\system\apps\ScummVM\ScummVM.app"
+"\epoc32\data\z\system\apps\ScummVM\ScummVM.aif"-"!:\system\apps\ScummVM\ScummVM.aif"
+"\epoc32\data\z\system\apps\ScummVM\ScummVM.rsc"-"!:\system\apps\ScummVM\ScummVM.rsc"
+
+; Config/log files: 'empty' will automagically be removed on uninstall
+""-"!:\system\apps\ScummVM\scummvm.ini",FILENULL
+""-"!:\system\apps\ScummVM\scummvm.stdout.txt",FILENULL
+""-"!:\system\apps\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
diff --git a/backends/platform/symbian/UIQ2/scummvm-CVS-SymbianUIQ2_SE.pkg b/backends/platform/symbian/UIQ2/scummvm-CVS-SymbianUIQ2_SE.pkg
new file mode 100644
index 0000000000..a07149b702
--- /dev/null
+++ b/backends/platform/symbian/UIQ2/scummvm-CVS-SymbianUIQ2_SE.pkg
@@ -0,0 +1,31 @@
+;;;
+;;; ScummVM .PKG file for .SIS gegeration
+;;;
+
+; Languages
+;&EN
+
+; UID is the app's UID
+#{"ScummVM SE"},(0x101f9b57),0,80,3
+
+; Platform type
+(0x101F617B), 2, 0, 0, {"UIQ20ProductID"}
+
+; Application, AIF & Resource file
+"\epoc32\release\armi\urel\ScummVM.app"-"!:\system\apps\ScummVM\ScummVM.app"
+"\epoc32\data\z\system\apps\ScummVM\ScummVM.aif"-"!:\system\apps\ScummVM\ScummVM.aif"
+"\epoc32\data\z\system\apps\ScummVM\ScummVM.rsc"-"!:\system\apps\ScummVM\ScummVM.rsc"
+
+; Config/log files: 'empty' will automagically be removed on uninstall
+""-"!:\system\apps\ScummVM\scummvm.ini",FILENULL
+""-"!:\system\apps\ScummVM\scummvm.stdout.txt",FILENULL
+""-"!:\system\apps\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.
+
+; add extra Vibration lib for P800, will be ignored during all other installs
+IF MachineUID = 0x101F408B
+@"Vibration.sis", (0x101F94A3)
+ENDIF \ No newline at end of file
diff --git a/backends/platform/symbian/UIQ3/BLD.INF.in b/backends/platform/symbian/UIQ3/BLD.INF.in
new file mode 100644
index 0000000000..9782901d6a
--- /dev/null
+++ b/backends/platform/symbian/UIQ3/BLD.INF.in
@@ -0,0 +1,11 @@
+PRJ_PLATFORMS
+WINS ARMI GCCE WINSCW THUMB
+
+PRJ_MMPFILES
+//START_AUTO_PROJECTS//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_PROJECTS//
+
+.\ScummVM_UIQ3.mmp
diff --git a/backends/platform/symbian/UIQ3/ScummVM.rss b/backends/platform/symbian/UIQ3/ScummVM.rss
new file mode 100644
index 0000000000..9430f4a2ba
--- /dev/null
+++ b/backends/platform/symbian/UIQ3/ScummVM.rss
@@ -0,0 +1,49 @@
+/* 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-2006 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.
+ *
+ * $URL$
+ * $Id: ScummVM.rss,v 1.1 2006/06/01 19:00:29 anotherguest Exp $
+ */
+
+// ScummVM.RSS
+
+NAME SCUM
+
+// Include definitions of resource STRUCTS used by this
+// resource script
+#include <eikon.rh>
+#include <qikon.rh>
+#include "..\src\Scummvm.hrh"
+// Include the standard Eikon resource ids
+#include <eikon.rsg>
+
+
+RESOURCE RSS_SIGNATURE
+ {
+ }
+
+RESOURCE TBUF16 { buf=""; }
+
+RESOURCE EIK_APP_INFO
+ {
+ }
+
+#include <sdl.ra>
+
diff --git a/backends/platform/symbian/UIQ3/ScummVM_UIQ3.mmp.in b/backends/platform/symbian/UIQ3/ScummVM_UIQ3.mmp.in
new file mode 100644
index 0000000000..170140848f
--- /dev/null
+++ b/backends/platform/symbian/UIQ3/ScummVM_UIQ3.mmp.in
@@ -0,0 +1,125 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// EPOC UIQ MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+TARGET SCUMMVM.exe
+//TARGETPATH sys\bin
+TARGETTYPE exe
+
+START RESOURCE ScummVM_reg.rss
+TARGETPATH \private\10003a3f\apps
+END
+
+START RESOURCE ScummVM_loc.rss
+TARGETPATH \Resource\Apps
+LANG SC
+END
+
+SOURCEPATH .
+START RESOURCE ScummVM.rss
+HEADER
+TARGETPATH \Resource\Apps
+LANG SC
+END
+
+EPOCSTACKSIZE 0x0000FFFF
+EPOCHEAPSIZE 0xFA000 0xfA0000
+
+START BITMAP ScummVM.mbm
+TARGETPATH \Resource\Apps
+SOURCEPATH ..\res
+// Source Color-depth Source-bitmap-list
+// c denotes whether the bitmap is a colour bitmap and the digits represent the
+// colour-depth of the bitmap and the bitmap mask respectively
+SOURCE c24 ScummSmall.bmp
+SOURCE 8 ScummSmallMask.bmp
+SOURCE c24 ScummLarge.bmp
+SOURCE 8 ScummLargeMask.bmp
+SOURCE c24 ScummxLarge.bmp
+SOURCE 8 ScummxLargeMask.bmp
+END
+UID 0x100039ce 0xA0000657
+
+MACRO UIQ
+MACRO UIQ3
+MACRO EPOC_AS_APP
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** Static Libraries
+
+STATICLIBRARY esdl.lib
+
+// *** Include paths
+
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\engines
+USERINCLUDE ..\..\..\backends\fs ..\src ..\..\..\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 ..\src // for portdefs.h
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\base
+
+//START_AUTO_OBJECTS_BASE_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_BASE_//
+
+SOURCEPATH ..\..\..\
+
+// 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\symbian\src\SymbianOS.cpp
+SOURCE backends\symbian\src\SymbianActions.cpp
+SOURCE backends\symbian\src\ScummApp.cpp
+
+SOURCE gui\Key.cpp
+SOURCE gui\KeysDialog.cpp
+SOURCE gui\Actions.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 qikctl.lib
+library qikcore.lib bafl.lib eikcoctl.lib \ No newline at end of file
diff --git a/backends/platform/symbian/UIQ3/scummvm-CVS-SymbianUIQ3.pkg b/backends/platform/symbian/UIQ3/scummvm-CVS-SymbianUIQ3.pkg
new file mode 100644
index 0000000000..3a47591b0a
--- /dev/null
+++ b/backends/platform/symbian/UIQ3/scummvm-CVS-SymbianUIQ3.pkg
@@ -0,0 +1,33 @@
+;;;
+;;; ScummVM .PKG file for .SIS gegeration
+;;;
+
+
+; List of localised vendor names - one per language. At least one must be provided (English [EN]).
+; List must correspond to list of languages specified elsewhere in the .pkg
+%{"ScummVM"}
+; The non-localised, globally unique vendor name (mandatory)
+:"ScummVM"
+
+; UID is the app's UID
+#{"ScummVM UIQ3"},(0xA0000657),0,90,0
+
+; ProductID for UIQ 3.0
+; Product/platform version UID, Major, Minor, Build, Product ID
+(0x101F6300), 3, 0, 0, {"UIQ30ProductID"}
+
+; Application, AIF & Resource file
+"\uiq3\epoc32\release\gcce\urel\ScummVM.exe"- "!:\sys\bin\ScummVM.exe"
+"\uiq3\epoc32\data\z\resource\apps\ScummVM.rsc"- "!:\resource\apps\ScummVM.rsc"
+"\uiq3\epoc32\Data\Z\resource\apps\scummvm_loc.rsc"- "!:\resource\apps\scummvm_loc.rsc"
+"\uiq3\epoc32\data\Z\resource\APPS\scummvm.MBM"- "!:\resource\apps\scummvm.MBM"
+"\uiq3\epoc32\data\z\private\10003a3f\apps\scummvm_reg.rsc"-"!:\private\10003a3f\import\apps\scummvm_reg.rsc"
+
+; Config/log files: 'empty' will automagically be removed on uninstall
+""-"c:\private\A0000657\scummvm.ini",FILENULL
+""-"c:\private\A0000657\scummvm.stdout.txt",FILENULL
+""-"c:\private\A0000657\scummvm.stderr.txt",FILENULL
+""-"c:\private\A0000657\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
diff --git a/backends/platform/symbian/UIQ3/scummvm_loc.rss b/backends/platform/symbian/UIQ3/scummvm_loc.rss
new file mode 100644
index 0000000000..1b068a1c2c
--- /dev/null
+++ b/backends/platform/symbian/UIQ3/scummvm_loc.rss
@@ -0,0 +1,59 @@
+#include <AppInfo.rh>
+#include <Qikon.hrh>
+
+// This file localise the applications icons and caption
+RESOURCE LOCALISABLE_APP_INFO
+ {
+ caption_and_icon =
+ {
+ CAPTION_AND_ICON_INFO
+ {
+ // The caption text is defined in the rls file
+ caption = "ScummVM";
+ // Icons are used to represent applications in the
+ // application launcher and application title bar.
+ // The number_of_icons value identifies how many icons
+ // that exist in the icon_file.
+ number_of_icons = 3;
+ // Using the application icons.
+ icon_file = "\\Resource\\Apps\\ScummVM.mbm";
+ }
+ };
+
+ view_list =
+ {
+ VIEW_DATA
+ {
+ uid = 0x10000001;
+ screen_mode = 0;
+ caption_and_icon = CAPTION_AND_ICON_INFO
+ {
+ };
+ },
+ VIEW_DATA
+ {
+ uid = 0x10000001;
+ screen_mode = EQikScreenModeLandscape;
+ caption_and_icon = CAPTION_AND_ICON_INFO
+ {
+ };
+ },
+ VIEW_DATA
+ {
+ uid = 0x10000001;
+ screen_mode = EQikScreenModeSmallPortrait;
+ caption_and_icon = CAPTION_AND_ICON_INFO
+ {
+ };
+ },
+ VIEW_DATA
+ {
+ uid = 0x10000001;
+ screen_mode = EQikScreenModeSmallLandscape;
+ caption_and_icon = CAPTION_AND_ICON_INFO
+ {
+ };
+ }
+ };
+ }
+
diff --git a/backends/platform/symbian/UIQ3/scummvm_reg.rss b/backends/platform/symbian/UIQ3/scummvm_reg.rss
new file mode 100644
index 0000000000..df99094b2e
--- /dev/null
+++ b/backends/platform/symbian/UIQ3/scummvm_reg.rss
@@ -0,0 +1,18 @@
+// All registration files need to #include appinfo.rh.
+#include <AppInfo.rh>
+
+// All registration files must define UID2, which is always
+// KUidAppRegistrationResourceFile, and UID3, which is the application's UID.
+UID2 KUidAppRegistrationResourceFile
+UID3 0xA0000657 // application UID
+
+// Registration file need to containo an APP_REGISTRATION_INFO resource that
+// minimally needs to provide the name of the application binary (using the
+// app_file statement).
+RESOURCE APP_REGISTRATION_INFO
+ {
+ app_file = "ScummVM"; // filename of application binary (minus extension)
+ // Specify the location of the localisable icon/caption definition file
+ localisable_resource_file = "\\Resource\\Apps\\ScummVM_loc";
+ }
+
diff --git a/backends/platform/symbian/mmp/scummvm_agi.mmp.in b/backends/platform/symbian/mmp/scummvm_agi.mmp.in
new file mode 100644
index 0000000000..8dcc52f05d
--- /dev/null
+++ b/backends/platform/symbian/mmp/scummvm_agi.mmp.in
@@ -0,0 +1,55 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// EPOC MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+TARGET scummvm_agi.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
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\engines\agi
+
+//START_AUTO_OBJECTS_AGI_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_AGI_//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\engines
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\src
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
diff --git a/backends/platform/symbian/mmp/scummvm_base.mmp.in b/backends/platform/symbian/mmp/scummvm_base.mmp.in
new file mode 100644
index 0000000000..3535621934
--- /dev/null
+++ b/backends/platform/symbian/mmp/scummvm_base.mmp.in
@@ -0,0 +1,111 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// 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
+
+// Note: the LIB:*.lib statements are used by AdaptAllMMPs.pl, so don't remove them!
+//START_AUTO_MACROS_MASTER//
+
+ // empty base file, will be updated by Perl build scripts
+
+ // list of possible MACROs: (will be replaced when generating scummvm_base.mmp)
+ //MACRO USE_ZLIB // LIB:zlib.lib
+ //MACRO USE_MAD // LIB:libmad.lib
+ //MACRO USE_TREMOR // LIB:libtremor.lib
+ //MACRO USE_UIQ_SE_VIBRA // LIB:vibration.lib
+ //MACRO DISABLE_SCUMM_7_8
+ //MACRO DISABLE_SCUMM_HE
+ //MACRO DISABLE_SCUMM // LIB:scummvm_scumm.lib
+ //MACRO DISABLE_SIMON // LIB:scummvm_simon.lib
+ //MACRO DISABLE_SKY // LIB:scummvm_sky.lib
+ //MACRO DISABLE_QUEEN // LIB:scummvm_queen.lib
+ //MACRO DISABLE_GOB // LIB:scummvm_gob.lib
+ //MACRO DISABLE_SAGA // LIB:scummvm_saga.lib
+ //MACRO DISABLE_KYRA // LIB:scummvm_kyra.lib
+ //MACRO DISABLE_SWORD1 // LIB:scummvm_sword1.lib
+ //MACRO DISABLE_SWORD2 // LIB:scummvm_sword2.lib
+ //MACRO DISABLE_LURE // LIB:scummvm_lure.lib
+ //MACRO DISABLE_CINE // LIB:scummvm_cine.lib
+ //MACRO DISABLE_AGI // LIB:scummvm_cine.lib
+
+//STOP_AUTO_MACROS_MASTER//
+
+// *** Include paths
+
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound
+USERINCLUDE ..\..\..\backends\fs ..\src ..\..\..\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\tremor
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\common
+//START_AUTO_OBJECTS_COMMON_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_COMMON_//
+
+SOURCEPATH ..\..\..\graphics
+//START_AUTO_OBJECTS_GRAPHICS_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_GRAPHICS_//
+
+SOURCEPATH ..\..\..\gui
+//START_AUTO_OBJECTS_GUI_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_GUI_//
+// these next three will go into gui\modules.mk and will end up in START_AUTO_OBJECTS_GUI
+// for now they are in the phone platform specific MMP files because of library dependency probs during linking
+//SOURCE Key.cpp
+//SOURCE KeysDialog.cpp
+//SOURCE Actions.cpp
+
+SOURCEPATH ..\..\..\sound
+//START_AUTO_OBJECTS_SOUND_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_SOUND_//
+
+sourcepath ..\..\..
+// backend specific includes
+SOURCE backends\fs\fs.cpp
+// backend specific includes
diff --git a/backends/platform/symbian/mmp/scummvm_cine.mmp.in b/backends/platform/symbian/mmp/scummvm_cine.mmp.in
new file mode 100644
index 0000000000..8385d93a5a
--- /dev/null
+++ b/backends/platform/symbian/mmp/scummvm_cine.mmp.in
@@ -0,0 +1,54 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// EPOC MMP makefile project for ScummVM CINE
+//
+
+// *** Definitions
+
+TARGET scummvm_CINE.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
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\engines\cine
+
+//START_AUTO_OBJECTS_CINE_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_CINE_//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\engines
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\src
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
diff --git a/backends/platform/symbian/mmp/scummvm_gob.mmp.in b/backends/platform/symbian/mmp/scummvm_gob.mmp.in
new file mode 100644
index 0000000000..a99d900da0
--- /dev/null
+++ b/backends/platform/symbian/mmp/scummvm_gob.mmp.in
@@ -0,0 +1,54 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// 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
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\engines\gob
+
+//START_AUTO_OBJECTS_GOB_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_GOB_//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\engines
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\src
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
diff --git a/backends/platform/symbian/mmp/scummvm_kyra.mmp.in b/backends/platform/symbian/mmp/scummvm_kyra.mmp.in
new file mode 100644
index 0000000000..60703336ca
--- /dev/null
+++ b/backends/platform/symbian/mmp/scummvm_kyra.mmp.in
@@ -0,0 +1,54 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// EPOC MMP makefile project for ScummVM Kyra
+//
+
+// *** Definitions
+
+TARGET scummvm_kyra.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
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\engines\kyra
+
+//START_AUTO_OBJECTS_KYRA_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_KYRA_//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\engines
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\src
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
diff --git a/backends/platform/symbian/mmp/scummvm_lure.mmp.in b/backends/platform/symbian/mmp/scummvm_lure.mmp.in
new file mode 100644
index 0000000000..55445358bb
--- /dev/null
+++ b/backends/platform/symbian/mmp/scummvm_lure.mmp.in
@@ -0,0 +1,54 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// EPOC MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+TARGET scummvm_lure.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
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\engines\lure
+
+//START_AUTO_OBJECTS_LURE_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_LURE_//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\engines
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\src
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
diff --git a/backends/platform/symbian/mmp/scummvm_queen.mmp.in b/backends/platform/symbian/mmp/scummvm_queen.mmp.in
new file mode 100644
index 0000000000..c1b3c03a45
--- /dev/null
+++ b/backends/platform/symbian/mmp/scummvm_queen.mmp.in
@@ -0,0 +1,54 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// 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
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\engines\queen
+
+//START_AUTO_OBJECTS_QUEEN_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_QUEEN_//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\engines
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\src
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
diff --git a/backends/platform/symbian/mmp/scummvm_saga.mmp.in b/backends/platform/symbian/mmp/scummvm_saga.mmp.in
new file mode 100644
index 0000000000..8ee0afd197
--- /dev/null
+++ b/backends/platform/symbian/mmp/scummvm_saga.mmp.in
@@ -0,0 +1,54 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// EPOC MMP makefile project for ScummVM Saga
+//
+
+// *** Definitions
+
+TARGET scummvm_saga.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
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\engines\saga
+
+//START_AUTO_OBJECTS_SAGA_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_SAGA_//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\engines
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\src
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
diff --git a/backends/platform/symbian/mmp/scummvm_scumm.mmp.in b/backends/platform/symbian/mmp/scummvm_scumm.mmp.in
new file mode 100644
index 0000000000..fd9f6ccb6d
--- /dev/null
+++ b/backends/platform/symbian/mmp/scummvm_scumm.mmp.in
@@ -0,0 +1,70 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// 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
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\engines\scumm
+
+//START_AUTO_OBJECTS_SCUMM_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_SCUMM_//
+
+//START_AUTO_OBJECTS_SCUMM_DISABLE_SCUMM_7_8//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_SCUMM_DISABLE_SCUMM_7_8//
+
+//START_AUTO_OBJECTS_SCUMM_DISABLE_HE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_SCUMM_DISABLE_HE//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\engines ..\..\..\engines\scumm\smush ..\..\..\engines\scumm\insane
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\src
+
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include\libc
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE ..\src // for portdefs.h
diff --git a/backends/platform/symbian/mmp/scummvm_simon.mmp.in b/backends/platform/symbian/mmp/scummvm_simon.mmp.in
new file mode 100644
index 0000000000..4587392b20
--- /dev/null
+++ b/backends/platform/symbian/mmp/scummvm_simon.mmp.in
@@ -0,0 +1,55 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// 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
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\engines\simon
+
+//START_AUTO_OBJECTS_SIMON_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_SIMON_//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\engines
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\src
+SYSTEMINCLUDE \epoc32\include\ZLIB // before \epoc32\include because symbian already has older version
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
diff --git a/backends/platform/symbian/mmp/scummvm_sky.mmp.in b/backends/platform/symbian/mmp/scummvm_sky.mmp.in
new file mode 100644
index 0000000000..46097372a3
--- /dev/null
+++ b/backends/platform/symbian/mmp/scummvm_sky.mmp.in
@@ -0,0 +1,54 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// 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
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\engines\sky
+
+//START_AUTO_OBJECTS_SKY_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_SKY_//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\engines ..\..\..\engines\sky\music
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\src
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
diff --git a/backends/platform/symbian/mmp/scummvm_sword1.mmp.in b/backends/platform/symbian/mmp/scummvm_sword1.mmp.in
new file mode 100644
index 0000000000..3d6cf3f501
--- /dev/null
+++ b/backends/platform/symbian/mmp/scummvm_sword1.mmp.in
@@ -0,0 +1,54 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// EPOC MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+TARGET scummvm_sword1.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
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\engines\sword1
+
+//START_AUTO_OBJECTS_SWORD1_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_SWORD1_//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\engines
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\src
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
diff --git a/backends/platform/symbian/mmp/scummvm_sword2.mmp.in b/backends/platform/symbian/mmp/scummvm_sword2.mmp.in
new file mode 100644
index 0000000000..dbb0bce879
--- /dev/null
+++ b/backends/platform/symbian/mmp/scummvm_sword2.mmp.in
@@ -0,0 +1,54 @@
+/* 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-2006 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.
+ *
+ */
+
+//
+// EPOC MMP makefile project for ScummVM
+//
+
+// *** Definitions
+
+TARGET scummvm_sword2.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
+
+//START_AUTO_MACROS_SLAVE//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_MACROS_SLAVE//
+
+// *** SOURCE files
+
+SOURCEPATH ..\..\..\engines\sword2
+
+//START_AUTO_OBJECTS_SWORD2_//
+
+ // empty base file, will be updated by Perl build scripts
+
+//STOP_AUTO_OBJECTS_SWORD2_//
+
+// *** Include paths
+
+USERINCLUDE ..\..\..\engines
+USERINCLUDE ..\..\.. ..\..\..\common ..\..\..\gui ..\..\..\sound ..\src
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\src
diff --git a/backends/platform/symbian/res/ScummS.bmp b/backends/platform/symbian/res/ScummS.bmp
new file mode 100644
index 0000000000..065b0ce74e
--- /dev/null
+++ b/backends/platform/symbian/res/ScummS.bmp
Binary files differ
diff --git a/backends/platform/symbian/res/ScummSmall.bmp b/backends/platform/symbian/res/ScummSmall.bmp
new file mode 100644
index 0000000000..ce8013ad2d
--- /dev/null
+++ b/backends/platform/symbian/res/ScummSmall.bmp
Binary files differ
diff --git a/backends/platform/symbian/res/ScummVmAif.rss b/backends/platform/symbian/res/ScummVmAif.rss
new file mode 100644
index 0000000000..ad222e550b
--- /dev/null
+++ b/backends/platform/symbian/res/ScummVmAif.rss
@@ -0,0 +1,43 @@
+/* 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-2006 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.
+ *
+ */
+
+#include <aiftool.rh>
+
+
+RESOURCE AIF_DATA
+ {
+ app_uid= 0x101f9b57;
+ //
+ hidden=KAppNotHidden;
+ embeddability=KAppNotEmbeddable;
+ caption_list=
+ {
+ CAPTION { code=ELangEnglish; caption="ScummVM"; },
+ CAPTION { code=ELangAmerican; caption="ScummVM"; },
+ CAPTION { code=ELangOther; caption="ScummVM"; }
+ };
+ //
+ num_icons=2;
+ }
+
+
+
diff --git a/backends/platform/symbian/res/scummL.bmp b/backends/platform/symbian/res/scummL.bmp
new file mode 100644
index 0000000000..a47f3c9da4
--- /dev/null
+++ b/backends/platform/symbian/res/scummL.bmp
Binary files differ
diff --git a/backends/platform/symbian/res/scummLarge.bmp b/backends/platform/symbian/res/scummLarge.bmp
new file mode 100644
index 0000000000..400dca6dcb
--- /dev/null
+++ b/backends/platform/symbian/res/scummLarge.bmp
Binary files differ
diff --git a/backends/platform/symbian/res/scummLargeMask.bmp b/backends/platform/symbian/res/scummLargeMask.bmp
new file mode 100644
index 0000000000..c13a546122
--- /dev/null
+++ b/backends/platform/symbian/res/scummLargeMask.bmp
Binary files differ
diff --git a/backends/platform/symbian/res/scummLm.bmp b/backends/platform/symbian/res/scummLm.bmp
new file mode 100644
index 0000000000..2632b9111f
--- /dev/null
+++ b/backends/platform/symbian/res/scummLm.bmp
Binary files differ
diff --git a/backends/platform/symbian/res/scummSm.bmp b/backends/platform/symbian/res/scummSm.bmp
new file mode 100644
index 0000000000..62957a8274
--- /dev/null
+++ b/backends/platform/symbian/res/scummSm.bmp
Binary files differ
diff --git a/backends/platform/symbian/res/scummSmallMask.bmp b/backends/platform/symbian/res/scummSmallMask.bmp
new file mode 100644
index 0000000000..b407894206
--- /dev/null
+++ b/backends/platform/symbian/res/scummSmallMask.bmp
Binary files differ
diff --git a/backends/platform/symbian/res/scummvm.rss b/backends/platform/symbian/res/scummvm.rss
new file mode 100644
index 0000000000..684e42f4e5
--- /dev/null
+++ b/backends/platform/symbian/res/scummvm.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-2006 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.
+ *
+ * $URL$
+ */
+
+// 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/platform/symbian/res/scummxLarge.bmp b/backends/platform/symbian/res/scummxLarge.bmp
new file mode 100644
index 0000000000..cf590d17d4
--- /dev/null
+++ b/backends/platform/symbian/res/scummxLarge.bmp
Binary files differ
diff --git a/backends/platform/symbian/res/scummxLargeMask.bmp b/backends/platform/symbian/res/scummxLargeMask.bmp
new file mode 100644
index 0000000000..1c3de48e3e
--- /dev/null
+++ b/backends/platform/symbian/res/scummxLargeMask.bmp
Binary files differ
diff --git a/backends/platform/symbian/src/ScummApp.cpp b/backends/platform/symbian/src/ScummApp.cpp
new file mode 100644
index 0000000000..4315c15065
--- /dev/null
+++ b/backends/platform/symbian/src/ScummApp.cpp
@@ -0,0 +1,119 @@
+/* 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-2006 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.
+ *
+ * $URL$
+ * $Id$
+ */
+
+#include "backends/symbian/src/ScummApp.h"
+#include "backends/symbian/src/ScummVM.hrh"
+
+#define _PAGESIZE_ 0x1000
+
+#if defined (__WINS__) && !defined (__SERIES60_30__) && !defined (UIQ3)
+extern "C" int _chkstk(int /*a*/) {
+_asm {
+ push ecx
+ cmp eax,_PAGESIZE_
+ lea ecx,[esp] + 8
+ jb short lastpage
+
+ probepages:
+ sub ecx,_PAGESIZE_
+ sub eax,_PAGESIZE_
+
+ test dword ptr [ecx],eax
+
+ cmp eax,_PAGESIZE_
+ jae short probepages
+
+ lastpage:
+ sub ecx,eax
+ mov eax,esp
+
+ test dword ptr [ecx],eax
+
+ mov esp,ecx
+
+ mov ecx,dword ptr [eax]
+ mov eax,dword ptr [eax + 4]
+
+ push eax
+ ret
+ }
+ return 1;
+}
+#endif
+
+#ifdef EPOC_AS_APP
+
+// this function is called automatically by the SymbianOS to deliver the new CApaApplication object
+#if !defined (UIQ3) && !defined (S60V3)
+EXPORT_C
+#endif
+CApaApplication* NewApplication() {
+ // Return pointer to newly created CQMApp
+ return new CScummApp;
+}
+
+#if defined (UIQ3) || defined (S60V3)
+#include <eikstart.h>
+// E32Main() contains the program's start up code, the entry point for an EXE.
+GLDEF_C TInt E32Main() {
+ return EikStart::RunApplication(NewApplication);
+}
+#endif
+
+#endif // EPOC_AS_APP
+
+#if !defined (UIQ3) && !defined (S60V3)
+GLDEF_C TInt E32Dll(TDllReason) {
+ return KErrNone;
+}
+#endif
+
+CScummApp::CScummApp() {
+}
+
+CScummApp::~CScummApp() {
+}
+
+#if defined (UIQ3)
+#include <scummvm.rsg>
+/**
+ * Returns the resource id to be used to declare the views supported by this UIQ3 app
+ * @return TInt, resource id
+ */
+TInt CScummApp::ViewResourceId() {
+ return R_SDL_VIEW_UI_CONFIGURATIONS;
+}
+#endif
+
+/**
+ * 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/platform/symbian/src/ScummApp.h b/backends/platform/symbian/src/ScummApp.h
new file mode 100644
index 0000000000..bd81edaa83
--- /dev/null
+++ b/backends/platform/symbian/src/ScummApp.h
@@ -0,0 +1,54 @@
+/* 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-2006 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.
+ *
+ * $URL$
+ * $Id$
+ */
+
+#ifndef ScummAPPH
+#define ScummAPPH
+
+#include <eikapp.h>
+#include <e32base.h>
+#include <sdlapp.h>
+
+#if defined (EPOC_AS_APP) && !defined (UIQ3) && !defined (S60V3)
+#include "ECompXL.h"
+#endif
+
+class CScummApp : public CSDLApp {
+public:
+ CScummApp();
+ ~CScummApp();
+#if defined (UIQ3)
+ /**
+ * Returns the resource id to be used to declare the views supported by this UIQ3 app
+ * @return TInt, resource id
+ */
+ TInt ViewResourceId();
+#endif
+ TUid AppDllUid() const;
+#if defined (EPOC_AS_APP) && !defined (UIQ3) && !defined (S60V3)
+ TECompXL iECompXL;
+#endif
+};
+#endif
+
+
diff --git a/backends/platform/symbian/src/ScummVMApp.cpp b/backends/platform/symbian/src/ScummVMApp.cpp
new file mode 100644
index 0000000000..e30cb62e87
--- /dev/null
+++ b/backends/platform/symbian/src/ScummVMApp.cpp
@@ -0,0 +1,170 @@
+/* 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-2006 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.
+ *
+ */
+
+#include "ScummVMapp.h"
+#include <scummvm.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/platform/symbian/src/ScummVMApp.h b/backends/platform/symbian/src/ScummVMApp.h
new file mode 100644
index 0000000000..0c422ad178
--- /dev/null
+++ b/backends/platform/symbian/src/ScummVMApp.h
@@ -0,0 +1,82 @@
+/* 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-2006 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.
+ *
+ */
+
+#ifndef ScummVMapph
+#define ScummVMapph
+
+#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/platform/symbian/src/ScummVm.hrh b/backends/platform/symbian/src/ScummVm.hrh
new file mode 100644
index 0000000000..4966b41e0b
--- /dev/null
+++ b/backends/platform/symbian/src/ScummVm.hrh
@@ -0,0 +1,30 @@
+/* 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-2006 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.
+ *
+ */
+
+#ifndef ScummHRH
+#define ScummHRH
+#if defined (UIQ3) || defined (S60V3)
+#define ScummUid 0xA0000657
+#else
+#define ScummUid 0x101f9b57
+#endif
+#endif
diff --git a/backends/platform/symbian/src/SymbianActions.cpp b/backends/platform/symbian/src/SymbianActions.cpp
new file mode 100644
index 0000000000..ff85266af5
--- /dev/null
+++ b/backends/platform/symbian/src/SymbianActions.cpp
@@ -0,0 +1,189 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2001-2006 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.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#include "common/stdafx.h"
+#include "backends/symbian/src/SymbianActions.h"
+
+#include "gui/message.h"
+#include "scumm/scumm.h"
+#include "common/config-manager.h"
+
+#include <sdl.h>
+
+namespace GUI {
+
+// SumthinWicked says: we either split our Actions like WinCE did with Pocket/Smartphone
+// or we put them in this file separated by #ifdefs, this one is up to you, AnotherGuest :)
+
+const Common::String actionNames[] = {
+ "Up",
+ "Down",
+ "Left",
+ "Right",
+ "Left Click",
+ "Right Click",
+ "Save",
+ "Skip",
+ "Zone",
+ "FT Cheat",
+ "Swap character",
+ "Skip text",
+ "Pause",
+ "Quit"
+};
+
+#ifdef UIQ
+static const int ACTIONS_DEFAULT[ACTION_LAST] = { 0, 0, 0, 0, SDLK_F1, SDLK_F2, SDLK_F5, SDLK_PAGEDOWN, 0, 0, 0, SDLK_PAGEUP, 0, 0};
+#elif defined (S60)
+const int ACTIONS_DEFAULT[ACTION_LAST] = { 0, 0, 0, 0, 0, 0, '*', '#', '9',0,0,0,0,0};
+#elif defined (S90)
+const int ACTIONS_DEFAULT[ACTION_LAST] = { SDLK_UP, SDLK_DOWN, SDLK_LEFT, SDLK_RIGHT, 0, 0, SDLK_MENU, SDLK_ESCAPE, 0, 0,0,0,0,0};
+#else
+const int ACTIONS_DEFAULT[ACTION_LAST] = { SDLK_UP, SDLK_DOWN, SDLK_LEFT, SDLK_RIGHT, SDLK_F1, SDLK_F2, SDLK_MENU, SDLK_ESCAPE, 0, 0, 0, 0, 0, 0};
+#endif
+
+// creator function according to Factory Pattern
+void SymbianActions::init() {
+ _instance = new SymbianActions();
+}
+
+
+Common::String SymbianActions::actionName(ActionType action) {
+ return actionNames[action];
+}
+
+int SymbianActions::size() {
+ return ACTION_LAST;
+}
+
+Common::String SymbianActions::domain() {
+ return Common::ConfigManager::kApplicationDomain;
+}
+
+int SymbianActions::version() {
+ return ACTION_VERSION;
+}
+
+SymbianActions::SymbianActions()
+ : Actions() {
+ int i;
+
+ for (i = 0; i < ACTION_LAST; i++) {
+ _action_mapping[i] = ACTIONS_DEFAULT[i];
+ _action_enabled[i] = false;
+ }
+
+}
+
+void SymbianActions::initInstanceMain(OSystem *mainSystem) {
+ Actions::initInstanceMain(mainSystem);
+
+ // Mouse Up
+ _action_enabled[ACTION_UP] = true;
+
+ // Mouse Down
+ _action_enabled[ACTION_DOWN] = true;
+
+ // Mouse Left
+ _action_enabled[ACTION_LEFT] = true;
+
+ // Mouse Right
+ _action_enabled[ACTION_RIGHT] = true;
+
+ // Left Click
+ _action_enabled[ACTION_LEFTCLICK] = true;
+
+ // Right Click
+ _action_enabled[ACTION_RIGHTCLICK] = true;
+
+ // Skip
+ _action_enabled[ACTION_SKIP] = true;
+ _key_action[ACTION_SKIP].setAscii(SDLK_ESCAPE);
+}
+
+void SymbianActions::initInstanceGame() {
+ Common::String gameid(ConfMan.get("gameid"));
+ bool is_simon = (strncmp(gameid.c_str(), "simon", 5) == 0);
+ bool is_sky = (strncmp(gameid.c_str(), "sky", 3) == 0);
+ bool is_queen = (strncmp(gameid.c_str(), "queen", 5) == 0);
+ bool is_gob = (strncmp(gameid.c_str(), "gob", 3) == 0);
+ bool is_ite = ((strncmp(gameid.c_str(), "ite", 3) == 0) ||
+ (strncmp(gameid.c_str(), "ihnm", 4) == 0));
+
+ Actions::initInstanceGame();
+
+ // See if a right click mapping could be needed
+ if (is_sky || gameid == "samnmax" || is_gob)
+ _right_click_needed = true;
+
+ // Initialize keys for different actions
+ // Save
+ if (is_simon || is_gob)
+ _action_enabled[ACTION_SAVE] = false;
+ else if (is_queen || is_ite) {
+ _action_enabled[ACTION_SAVE] = true;
+ _key_action[ACTION_SAVE].setAscii(SDLK_F1); // F1 key for FOTAQ and ITE
+ } else if (is_sky) {
+ _action_enabled[ACTION_SAVE] = true;
+ _key_action[ACTION_SAVE].setAscii(63);
+ } else {
+ _action_enabled[ACTION_SAVE] = true;
+ _key_action[ACTION_SAVE].setAscii(SDLK_F5); // F5 key
+ }
+
+ // Swap character
+ _action_enabled[ACTION_SWAPCHAR] = true;
+ _key_action[ACTION_SWAPCHAR].setAscii('b'); // b
+
+ // Zone
+ _action_enabled[ACTION_ZONE] = true;
+
+ // FT Cheat
+ _action_enabled[ACTION_FT_CHEAT] = true;
+ _key_action[ACTION_FT_CHEAT].setAscii(86); // shift-V
+
+ // Skip text
+ _action_enabled[ACTION_SKIP_TEXT] = true;
+ if (is_queen) {
+ _key_action[ACTION_SKIP_TEXT].setAscii(SDLK_SPACE);
+ } else {
+ _key_action[ACTION_SKIP_TEXT].setAscii(SDLK_PERIOD);
+ }
+
+ // Pause
+ _key_action[ACTION_PAUSE].setAscii(' ');
+ _action_enabled[ACTION_PAUSE] = true;
+
+ // Quit
+ _action_enabled[ACTION_QUIT] = true;
+}
+
+
+SymbianActions::~SymbianActions() {
+}
+
+bool SymbianActions::perform(ActionType /*action*/, bool /*pushed*/) {
+
+ return false;
+}
+
+} // namespace GUI
diff --git a/backends/platform/symbian/src/SymbianActions.h b/backends/platform/symbian/src/SymbianActions.h
new file mode 100644
index 0000000000..5f435d5912
--- /dev/null
+++ b/backends/platform/symbian/src/SymbianActions.h
@@ -0,0 +1,77 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2001-2006 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.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#ifndef SYMBIANACTIONS_H
+#define SYMBIANACTIONS_H
+
+#include "common/stdafx.h"
+#include "common/scummsys.h"
+#include "common/system.h"
+#include "gui/Key.h"
+#include "gui/Actions.h"
+
+namespace GUI {
+
+#define ACTION_VERSION 6
+
+enum actionType {
+ ACTION_UP = 0,
+ ACTION_DOWN,
+ ACTION_LEFT,
+ ACTION_RIGHT,
+ ACTION_LEFTCLICK,
+ ACTION_RIGHTCLICK,
+ ACTION_SAVE,
+ ACTION_SKIP,
+ ACTION_ZONE,
+ ACTION_FT_CHEAT,
+ ACTION_SWAPCHAR,
+ ACTION_SKIP_TEXT,
+ ACTION_PAUSE,
+ ACTION_QUIT,
+ ACTION_LAST
+};
+
+class SymbianActions : public Actions {
+public:
+ // Actions
+ bool perform(ActionType action, bool pushed = true);
+ Common::String actionName(ActionType action);
+ int size();
+ static void init();
+ void initInstanceMain(OSystem *mainSystem);
+ void initInstanceGame();
+
+ // Action domain
+ Common::String domain();
+ int version();
+
+ ~SymbianActions();
+
+private:
+ SymbianActions();
+ bool _right_click_needed;
+};
+
+} // namespace GUI
+
+#endif
diff --git a/backends/platform/symbian/src/SymbianOS.cpp b/backends/platform/symbian/src/SymbianOS.cpp
new file mode 100644
index 0000000000..b0b4486418
--- /dev/null
+++ b/backends/platform/symbian/src/SymbianOS.cpp
@@ -0,0 +1,419 @@
+/* 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-2006 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.
+ *
+ * $URL$
+ * $Id$
+ */
+
+#include "backends/symbian/src/SymbianOS.h"
+#include "backends/symbian/src/SymbianActions.h"
+#include "common/config-manager.h"
+#include "gui/Actions.h"
+#include "gui/Key.h"
+#include "gui/message.h"
+
+#include <eikenv.h> // for CEikonEnv::Static() @ Symbian::FatalError()
+#include "ESDL/sdlapp.h" // for CSDLApp::GetExecutablePathCStr() @ Symbian::GetExecutablePath()
+
+////////// extern "C" ///////////////////////////////////////////////////
+
+extern Common::ConfigManager *g_config;
+
+namespace Symbian {
+
+// Show a simple Symbian Info win with Msg & exit
+void FatalError(const char *msg) {
+ TPtrC8 msgPtr((const TUint8 *)msg);
+ TBuf<512> msg16Bit;
+ msg16Bit.Copy(msgPtr);
+ CEikonEnv::Static()->InfoWinL(_L("ScummVM Fatal Error"), msg16Bit);
+
+ if (g_system)
+ g_system->quit();
+}
+
+// make this easily available everywhere
+char* GetExecutablePath()
+{
+ return CSDLApp::GetExecutablePathCStr();
+}
+
+} // namespace Symbian {
+
+////////// OSystem_SDL_Symbian //////////////////////////////////////////
+
+static const OSystem::GraphicsMode s_supportedGraphicsModes[] = {
+ {"1x", "Fullscreen", GFX_NORMAL},
+ {0, 0, 0}
+};
+
+bool OSystem_SDL_Symbian::hasFeature(Feature f) {
+ switch(f) {
+ case kFeatureFullscreenMode:
+ case kFeatureAspectRatioCorrection:
+ case kFeatureAutoComputeDirtyRects:
+ case kFeatureCursorHasPalette:
+#ifdef USE_VIBRA_SE_PXXX
+ case kFeatureVibration:
+#endif
+ return true;
+
+ default:
+ return false;
+ }
+}
+
+OSystem_SDL_Symbian::zoneDesc OSystem_SDL_Symbian::_zones[TOTAL_ZONES] = {
+ { 0, 0, 320, 145 },
+ { 0, 145, 150, 55 },
+ { 150, 145, 170, 55 }
+};
+OSystem_SDL_Symbian::OSystem_SDL_Symbian() :_channels(0),_stereo_mix_buffer(0) {
+}
+
+void OSystem_SDL_Symbian::initBackend() {
+ ConfMan.setBool("FM_high_quality", false);
+#if !defined(S60) || defined(S60V3) // S60 has low quality as default
+ ConfMan.setBool("FM_medium_quality", true);
+#else
+ ConfMan.setBool("FM_medium_quality", false);
+#endif
+ ConfMan.setInt("joystick_num", 0); // Symbian OS should have joystick_num set to 0 in the ini file , but uiq devices might refuse opening the joystick
+ ConfMan.flushToDisk();
+
+ GUI::Actions::init();
+
+ OSystem_SDL::initBackend();
+
+ // Initialize global key mapping for Smartphones
+ GUI::Actions* actions = GUI::Actions::Instance();
+
+ actions->initInstanceMain(this);
+ actions->loadMapping();
+ initZones();
+}
+
+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());
+}
+
+void OSystem_SDL_Symbian::quitWithErrorMsg(const char *msg) {
+
+ CEikonEnv::Static()->AlertWin(_L("quitWithErrorMsg()")) ;
+
+ if (g_system)
+ g_system->quit();
+}
+
+/*
+ * 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);
+}
+
+/**
+ * This is an implementation by the remapKey function
+ * @param SDL_Event to remap
+ * @param ScumVM event to modify if special result is requested
+ * @return true if Event has a valid return status
+ */
+bool OSystem_SDL_Symbian::remapKey(SDL_Event &ev, Event &event) {
+ if (GUI::Actions::Instance()->mappingActive() || ev.key.keysym.sym <= SDLK_UNKNOWN)
+ return false;
+
+ for (TInt loop = 0; loop < GUI::ACTION_LAST; loop++) {
+ if (GUI::Actions::Instance()->getMapping(loop) == ev.key.keysym.sym &&
+ GUI::Actions::Instance()->isEnabled(loop)) {
+ // Create proper event instead
+ switch(loop) {
+ case GUI::ACTION_UP:
+ if (ev.type == SDL_KEYDOWN) {
+ _km.y_vel = -1;
+ _km.y_down_count = 1;
+ } else {
+ _km.y_vel = 0;
+ _km.y_down_count = 0;
+ }
+ event.type = EVENT_MOUSEMOVE;
+ fillMouseEvent(event, _km.x, _km.y);
+
+ return true;
+
+ case GUI::ACTION_DOWN:
+ if(ev.type == SDL_KEYDOWN) {
+ _km.y_vel = 1;
+ _km.y_down_count = 1;
+ } else {
+ _km.y_vel = 0;
+ _km.y_down_count = 0;
+ }
+ event.type = EVENT_MOUSEMOVE;
+ fillMouseEvent(event, _km.x, _km.y);
+
+ return true;
+
+ case GUI::ACTION_LEFT:
+ if(ev.type == SDL_KEYDOWN) {
+ _km.x_vel = -1;
+ _km.x_down_count = 1;
+ } else {
+ _km.x_vel = 0;
+ _km.x_down_count = 0;
+ }
+ event.type = EVENT_MOUSEMOVE;
+ fillMouseEvent(event, _km.x, _km.y);
+
+ return true;
+
+ case GUI::ACTION_RIGHT:
+ if(ev.type == SDL_KEYDOWN) {
+ _km.x_vel = 1;
+ _km.x_down_count = 1;
+ } else {
+ _km.x_vel = 0;
+ _km.x_down_count = 0;
+ }
+ event.type = EVENT_MOUSEMOVE;
+ fillMouseEvent(event, _km.x, _km.y);
+
+ return true;
+
+ case GUI::ACTION_LEFTCLICK:
+ event.type = (ev.type == SDL_KEYDOWN ? EVENT_LBUTTONDOWN : EVENT_LBUTTONUP);
+ fillMouseEvent(event, _km.x, _km.y);
+
+ return true;
+
+ case GUI::ACTION_RIGHTCLICK:
+ event.type = (ev.type == SDL_KEYDOWN ? EVENT_RBUTTONDOWN : EVENT_RBUTTONUP);
+ fillMouseEvent(event, _km.x, _km.y);
+
+ return true;
+
+ case GUI::ACTION_ZONE:
+ if(ev.type == SDL_KEYDOWN) {
+ int i;
+
+ for (i=0; i < TOTAL_ZONES; i++)
+ if (_km.x >= _zones[i].x && _km.y >= _zones[i].y &&
+ _km.x <= _zones[i].x + _zones[i].width && _km.y <= _zones[i].y + _zones[i].height
+ ) {
+ _mouseXZone[i] = _km.x;
+ _mouseYZone[i] = _km.y;
+ break;
+ }
+ _currentZone++;
+ if (_currentZone >= TOTAL_ZONES)
+ _currentZone = 0;
+ event.type = EVENT_MOUSEMOVE;
+ fillMouseEvent(event, _mouseXZone[_currentZone], _mouseYZone[_currentZone]);
+ SDL_WarpMouse(event.mouse.x, event.mouse.y);
+ }
+
+ return true;
+
+ case GUI::ACTION_SAVE:
+ case GUI::ACTION_SKIP:
+ case GUI::ACTION_FT_CHEAT:
+ case GUI::ACTION_SKIP_TEXT:
+ case GUI::ACTION_PAUSE:
+ {
+ GUI::Key &key = GUI::Actions::Instance()->getKeyAction(loop);
+ ev.key.keysym.sym = (SDLKey)key.ascii();
+ ev.key.keysym.scancode= key.keycode();
+ ev.key.keysym.mod = (SDLMod)key.flags();
+
+ return false;
+ }
+
+ case GUI::ACTION_QUIT:
+ {
+ GUI::MessageDialog alert("Do you want to quit ?", "Yes", "No");
+ if (alert.runModal() == GUI::kMessageOK)
+ quit();
+
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
+}
+
+void OSystem_SDL_Symbian::setWindowCaption(const char *caption) {
+ OSystem_SDL::setWindowCaption(caption);
+ check_mappings();
+}
+
+void OSystem_SDL_Symbian::check_mappings() {
+ if (ConfMan.get("gameid").empty() || GUI::Actions::Instance()->initialized())
+ return;
+
+ GUI::Actions::Instance()->initInstanceGame();
+}
+
+void OSystem_SDL_Symbian::initZones() {
+ int i;
+
+ _currentZone = 0;
+
+ for (i = 0; i < TOTAL_ZONES; i++) {
+ _mouseXZone[i] = (_zones[i].x + (_zones[i].width / 2));
+ _mouseYZone[i] = (_zones[i].y + (_zones[i].height / 2));
+ }
+}
+
+
+/** Vibration support */
+#ifdef USE_VIBRA_SE_PXXX
+void OSystem_SDL_Symbian::initializeVibration() {
+ _vibrationApi = SonyEricsson::CVibration::NewL();
+}
+
+void OSystem_SDL_Symbian::vibrationOn(int vibraLength) {
+ // initialize?
+ if (!_vibrationApi) _vibrationApi = SonyEricsson::CVibration::NewL();
+ // do it!
+ _vibrationApi->VibrationOn(1, 1, vibraLength);
+}
+
+void OSystem_SDL_Symbian::vibrationOff() {
+ _vibrationApi->VibrationOff();
+}
+#endif // USE_SE_PXX_VIBRA
+
diff --git a/backends/platform/symbian/src/SymbianOS.h b/backends/platform/symbian/src/SymbianOS.h
new file mode 100644
index 0000000000..955f59c59c
--- /dev/null
+++ b/backends/platform/symbian/src/SymbianOS.h
@@ -0,0 +1,139 @@
+/* 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-2006 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.
+ *
+ * $URL$
+ * $Id$
+ */
+
+#ifndef SDLSYMBIANH
+#define SDLSYMBIANH
+
+#include "backends/platform/sdl/sdl-common.h"
+
+/** Vibration support */
+#ifdef USE_VIBRA_SE_PXXX
+#include <vibration.h>
+#endif
+
+#define TOTAL_ZONES 3
+
+class OSystem_SDL_Symbian : public OSystem_SDL {
+public:
+ OSystem_SDL_Symbian();
+ virtual ~OSystem_SDL_Symbian();
+
+public:
+ /**
+ * The following method is called once, from main.cpp, after all
+ * config data (including command line params etc.) are fully loaded.
+ */
+ virtual void initBackend();
+
+ int getDefaultGraphicsMode() const;
+ const OSystem::GraphicsMode *getSupportedGraphicsModes() const;
+ bool setGraphicsMode(const char *name);
+ void quitWithErrorMsg(const char *msg);
+ virtual bool hasFeature(Feature f);
+
+ // 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);
+
+public:
+ // vibration support
+#ifdef USE_VIBRA_SE_PXXX
+ //
+ // Intialize the vibration api used if present and supported
+ //
+ void initializeVibration();
+
+ //
+ // Turn vibration on, repeat no time
+ // @param vibraLength number of repetitions
+ //
+ void vibrationOn(int vibraLength);
+
+ //
+ // Turns the vibration off
+ //
+ void vibrationOff();
+
+protected:
+ SonyEricsson::CVibration* _vibrationApi;
+#endif // USE_VIBRA_SE_PXXX
+
+protected:
+
+ //
+ // This is an implementation by the remapKey function
+ // @param SDL_Event to remap
+ // @param ScumVM event to modify if special result is requested
+ // @return true if Event has a valid return status
+ //
+ bool remapKey(SDL_Event &ev, Event &event);
+
+ void setWindowCaption(const char *caption);
+
+ //
+ // Used to intialized special game mappings
+ //
+ void check_mappings();
+
+ void initZones();
+
+ // Audio
+ int _channels;
+
+ SoundProc _sound_proc;
+ void *_sound_proc_param;
+ byte *_stereo_mix_buffer;
+
+ // Used to handle joystick navi zones
+ int _mouseXZone[TOTAL_ZONES];
+ int _mouseYZone[TOTAL_ZONES];
+ int _currentZone;
+
+ typedef struct zoneDesc {
+ int x;
+ int y;
+ int width;
+ int height;
+ } zoneDesc;
+
+ static zoneDesc _zones[TOTAL_ZONES];
+};
+
+#endif
diff --git a/backends/platform/symbian/src/main_features.inl b/backends/platform/symbian/src/main_features.inl
new file mode 100644
index 0000000000..2e0b008e68
--- /dev/null
+++ b/backends/platform/symbian/src/main_features.inl
@@ -0,0 +1,66 @@
+/* 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-2006 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.
+ *
+ */
+
+#ifdef USE_VIBRA_SE_PXXX
+ "Vibra "
+#endif
+ "\n"
+
+// we want a list of supported engines visible in the program,
+// because we also release special builds with only one engine
+#ifndef DISABLE_SCUMM
+ "SCUMM "
+#endif
+#ifndef DISABLE_SIMON
+ "Simon "
+#endif
+#ifndef DISABLE_SKY
+ "Sky "
+#endif
+#ifndef DISABLE_QUEEN
+ "Queen "
+#endif
+#ifndef DISABLE_GOB
+ "Gob "
+#endif
+#ifndef DISABLE_SAGA
+ "Saga "
+#endif
+#ifndef DISABLE_KYRA
+ "Kyra "
+#endif
+#ifndef DISABLE_SWORD1
+ "Sword1 "
+#endif
+#ifndef DISABLE_SWORD2
+ "Sword2 "
+#endif
+#ifndef DISABLE_CINE
+ "Cine "
+#endif
+#ifndef DISABLE_LURE
+ "Lure "
+#endif
+#ifndef DISABLE_AGI
+ "AGI "
+#endif
+
diff --git a/backends/platform/symbian/src/portdefs.h b/backends/platform/symbian/src/portdefs.h
new file mode 100644
index 0000000000..303fde726d
--- /dev/null
+++ b/backends/platform/symbian/src/portdefs.h
@@ -0,0 +1,148 @@
+/* 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-2006 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.
+ *
+ * $URL$
+ * $Id$
+ */
+
+#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>
+
+#define DISABLE_SCALERS // we only need 1x
+
+#if defined(USE_TREMOR) && !defined(USE_VORBIS)
+#define USE_VORBIS // make sure this one is defined together with USE_TREMOR!
+#endif
+
+// 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!
+#if defined(__GCC32__)
+
+ #define snprintf(buf,len,args...) sprintf(buf,args)
+ #define vsnprintf(buf,len,format,valist) vsprintf(buf,format,valist)
+
+ // taken from public domain http://www.opensource.apple.com/darwinsource/WWDC2004/gcc_legacy-939/gcc/floatlib.c
+ #define SIGNBIT 0x80000000
+ #define HIDDEN (1 << 23)
+ #define EXCESSD 1022
+ #define EXPD(fp) (((fp.l.upper) >> 20) & 0x7FF)
+ #define SIGND(fp) ((fp.l.upper) & SIGNBIT)
+ #define HIDDEND_LL ((long long)1 << 52)
+ #define MANTD_LL(fp) ((fp.ll & (HIDDEND_LL-1)) | HIDDEND_LL)
+
+ union double_long {
+ double d;
+ struct {
+ long upper;
+ unsigned long lower;
+ } l;
+ long long ll;
+ };
+
+ /* convert double float to double int (dfdi) */
+ long long inline
+ scumm_fixdfdi (double a1) { // __fixdfdi (double a1)
+ register union double_long dl1;
+ register int exp;
+ register long long l;
+
+ dl1.d = a1;
+
+ if (!dl1.l.upper && !dl1.l.lower)
+ return (0);
+
+ exp = EXPD (dl1) - EXCESSD - 64;
+ l = MANTD_LL(dl1);
+
+ if (exp > 0) {
+ l = (long long)1<<63;
+ if (!SIGND(dl1))
+ l--;
+ return l;
+ }
+
+ /* shift down until exp = 0 or l = 0 */
+ if (exp < 0 && exp > -64 && l)
+ l >>= -exp;
+ else
+ return (0);
+
+ return (SIGND (dl1) ? -l : l);
+ }
+
+ /* okay, okay: I admit it: I absolutely have _NO_ idea why __fixdfdi does not get linked in by gcc from libgcc.a
+ because I know it's in there: I checked with `ar x _fixdfdi.o libgcc.a` and the symbol is in there, so I'm lost
+ and had to fix it this way. I tried all gcc and ld options I could find: no hope :( If someone can enlighten me:
+ feel free to let me know at sumthinwicked@users.sf.net! Much obliged.
+ PS1. I think for __fixunsdfdi they have made a circumvention by having to add STATICLIBRARY EGCC.LIB
+ PS2. http://gcc.gnu.org/ml/gcc-bugs/2004-01/msg01596.html might have found out the same problem there
+ */
+
+#elif defined (__WINS__) // 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);
+ }
+
+ int inline scumm_vsnprintf (char *str, unsigned long /*n*/, char const *fmt, va_list valist) {
+ vsprintf(str, fmt, valist);
+ return strlen(str);
+ }
+
+ #define snprintf scumm_snprintf
+ #define vsnprintf scumm_vsnprintf
+#else // GCCE and the rest
+ #define snprintf(buf,len,args...) sprintf(buf,args)
+ #define vsnprintf(buf,len,format,valist) vsprintf(buf,format,valist)
+#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
+
+// we cannot include SymbianOS.h everywhere, but this works too (functions code is in SymbianOS.cpp)
+namespace Symbian {
+extern void FatalError(const char *msg);
+extern char* GetExecutablePath();
+}