[Scummvm-cvs-logs] SF.net SVN: scummvm: [33051] scummvm/branches/gsoc2008-rtl

cpage88 at users.sourceforge.net cpage88 at users.sourceforge.net
Mon Jul 14 02:10:09 CEST 2008


Revision: 33051
          http://scummvm.svn.sourceforge.net/scummvm/?rev=33051&view=rev
Author:   cpage88
Date:     2008-07-13 17:10:09 -0700 (Sun, 13 Jul 2008)

Log Message:
-----------
Merged revisions 32744-32745,32747,32750-32759,32762-32764,32769,32777,32783,32785-32786,32789-32791,32798-32799,32801-32807,32809-32812,32816-32817,32819-32821,32823-32830,32832-32836,32838-32844,32846-32850,32852-32854,32858-32859,32865-32868,32873-32874,32879,32883,32895,32899,32902-32904,32910-32912,32923-32924,32930-32931,32938,32940,32948-32949,32951,32960-32964,32966-32970,32972-32974,32976,32978,32983,32986-32990,32992,32994,33002-33004,33006-33007,33009-33010,33014,33017,33021-33023,33030,33033 via svnmerge from 
https://scummvm.svn.sourceforge.net/svnroot/scummvm/scummvm/trunk

Modified Paths:
--------------
    scummvm/branches/gsoc2008-rtl/NEWS
    scummvm/branches/gsoc2008-rtl/backends/platform/dc/Makefile
    scummvm/branches/gsoc2008-rtl/backends/platform/dc/audio.cpp
    scummvm/branches/gsoc2008-rtl/backends/platform/dc/dc.h
    scummvm/branches/gsoc2008-rtl/backends/platform/dc/dcmain.cpp
    scummvm/branches/gsoc2008-rtl/backends/platform/dc/selector.cpp
    scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/dsmain.cpp
    scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/dsmain.h
    scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/osystem_ds.cpp
    scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/osystem_ds.h
    scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/wordcompletion.cpp
    scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/README-GP2X
    scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/README-GP2X.html
    scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/config.sh
    scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/gp2x-common.h
    scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/gp2x.cpp
    scummvm/branches/gsoc2008-rtl/backends/platform/iphone/osys_iphone.cpp
    scummvm/branches/gsoc2008-rtl/backends/platform/iphone/osys_iphone.h
    scummvm/branches/gsoc2008-rtl/backends/platform/null/null.cpp
    scummvm/branches/gsoc2008-rtl/backends/platform/ps2/systemps2.cpp
    scummvm/branches/gsoc2008-rtl/backends/platform/psp/Makefile
    scummvm/branches/gsoc2008-rtl/backends/platform/psp/osys_psp.cpp
    scummvm/branches/gsoc2008-rtl/backends/platform/psp/osys_psp.h
    scummvm/branches/gsoc2008-rtl/backends/platform/sdl/sdl.cpp
    scummvm/branches/gsoc2008-rtl/backends/platform/sdl/sdl.h
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/AdaptAllMMPs.pl
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/BuildPackageUpload_AllVersions.pl
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/BuildPackageUpload_LocalSettings.pl
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/README
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/S60v3/ScummVM_S60v3.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/UIQ3/ScummVM_UIQ3.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_agi.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_agos.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_base.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_cine.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_cruise.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_drascula.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_gob.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_kyra.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_lure.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_m4.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_made.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_parallaction.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_queen.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_saga.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_scumm.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_sky.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_sword1.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_sword2.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/mmp/scummvm_touche.mmp.in
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/src/SymbianOS.cpp
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/src/SymbianOS.h
    scummvm/branches/gsoc2008-rtl/backends/platform/symbian/src/portdefs.h
    scummvm/branches/gsoc2008-rtl/backends/platform/wii/osystem.cpp
    scummvm/branches/gsoc2008-rtl/backends/platform/wii/osystem.h
    scummvm/branches/gsoc2008-rtl/backends/platform/wii/osystem_sfx.cpp
    scummvm/branches/gsoc2008-rtl/backends/platform/wince/Makefile
    scummvm/branches/gsoc2008-rtl/backends/platform/wince/wince-sdl.cpp
    scummvm/branches/gsoc2008-rtl/backends/platform/wince/wince-sdl.h
    scummvm/branches/gsoc2008-rtl/backends/saves/default/default-saves.cpp
    scummvm/branches/gsoc2008-rtl/backends/timer/default/default-timer.h
    scummvm/branches/gsoc2008-rtl/base/main.cpp
    scummvm/branches/gsoc2008-rtl/common/scummsys.h
    scummvm/branches/gsoc2008-rtl/common/system.cpp
    scummvm/branches/gsoc2008-rtl/common/system.h
    scummvm/branches/gsoc2008-rtl/configure
    scummvm/branches/gsoc2008-rtl/dists/engine-data/lure.dat
    scummvm/branches/gsoc2008-rtl/dists/msvc7/parallaction.vcproj
    scummvm/branches/gsoc2008-rtl/dists/msvc7/scummvm.vcproj
    scummvm/branches/gsoc2008-rtl/dists/msvc71/parallaction.vcproj
    scummvm/branches/gsoc2008-rtl/dists/msvc71/scummvm.vcproj
    scummvm/branches/gsoc2008-rtl/dists/msvc8/parallaction.vcproj
    scummvm/branches/gsoc2008-rtl/dists/msvc8/scummvm.vcproj
    scummvm/branches/gsoc2008-rtl/dists/msvc9/parallaction.vcproj
    scummvm/branches/gsoc2008-rtl/dists/msvc9/scummvm.vcproj
    scummvm/branches/gsoc2008-rtl/engines/cine/bg_list.cpp
    scummvm/branches/gsoc2008-rtl/engines/cine/gfx.cpp
    scummvm/branches/gsoc2008-rtl/engines/cine/main_loop.cpp
    scummvm/branches/gsoc2008-rtl/engines/cine/object.cpp
    scummvm/branches/gsoc2008-rtl/engines/cine/object.h
    scummvm/branches/gsoc2008-rtl/engines/cine/script.h
    scummvm/branches/gsoc2008-rtl/engines/cine/script_fw.cpp
    scummvm/branches/gsoc2008-rtl/engines/cine/script_os.cpp
    scummvm/branches/gsoc2008-rtl/engines/cine/various.cpp
    scummvm/branches/gsoc2008-rtl/engines/cine/various.h
    scummvm/branches/gsoc2008-rtl/engines/cruise/cruise_main.h
    scummvm/branches/gsoc2008-rtl/engines/drascula/animation.cpp
    scummvm/branches/gsoc2008-rtl/engines/drascula/drascula.h
    scummvm/branches/gsoc2008-rtl/engines/drascula/rooms.cpp
    scummvm/branches/gsoc2008-rtl/engines/drascula/talk.cpp
    scummvm/branches/gsoc2008-rtl/engines/gob/detection.cpp
    scummvm/branches/gsoc2008-rtl/engines/gob/driver_vga.cpp
    scummvm/branches/gsoc2008-rtl/engines/gob/goblin.cpp
    scummvm/branches/gsoc2008-rtl/engines/gob/goblin.h
    scummvm/branches/gsoc2008-rtl/engines/gob/goblin_v2.cpp
    scummvm/branches/gsoc2008-rtl/engines/gob/inter.cpp
    scummvm/branches/gsoc2008-rtl/engines/gob/inter.h
    scummvm/branches/gsoc2008-rtl/engines/gob/inter_v1.cpp
    scummvm/branches/gsoc2008-rtl/engines/gob/inter_v2.cpp
    scummvm/branches/gsoc2008-rtl/engines/gob/mult.cpp
    scummvm/branches/gsoc2008-rtl/engines/gob/mult.h
    scummvm/branches/gsoc2008-rtl/engines/gob/mult_v1.cpp
    scummvm/branches/gsoc2008-rtl/engines/gob/mult_v2.cpp
    scummvm/branches/gsoc2008-rtl/engines/gob/sound/sound.h
    scummvm/branches/gsoc2008-rtl/engines/gob/sound/soundmixer.h
    scummvm/branches/gsoc2008-rtl/engines/gob/variables.cpp
    scummvm/branches/gsoc2008-rtl/engines/gob/variables.h
    scummvm/branches/gsoc2008-rtl/engines/igor/igor.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/animator_lok.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/detection.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/gui_hof.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/gui_lok.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/gui_lok.h
    scummvm/branches/gsoc2008-rtl/engines/kyra/items_lok.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/kyra_hof.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/kyra_mr.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/kyra_mr.h
    scummvm/branches/gsoc2008-rtl/engines/kyra/kyra_v1.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/kyra_v1.h
    scummvm/branches/gsoc2008-rtl/engines/kyra/kyra_v2.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/kyra_v2.h
    scummvm/branches/gsoc2008-rtl/engines/kyra/scene_hof.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/scene_lok.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/screen.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/script.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/script.h
    scummvm/branches/gsoc2008-rtl/engines/kyra/script_hof.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/script_tim.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/script_tim.h
    scummvm/branches/gsoc2008-rtl/engines/kyra/seqplayer.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/sequences_lok.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/sound.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/sound.h
    scummvm/branches/gsoc2008-rtl/engines/kyra/sound_lok.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/sound_towns.cpp
    scummvm/branches/gsoc2008-rtl/engines/kyra/staticres.cpp
    scummvm/branches/gsoc2008-rtl/engines/m4/assets.cpp
    scummvm/branches/gsoc2008-rtl/engines/m4/converse.cpp
    scummvm/branches/gsoc2008-rtl/engines/m4/globals.cpp
    scummvm/branches/gsoc2008-rtl/engines/m4/globals.h
    scummvm/branches/gsoc2008-rtl/engines/m4/resource.cpp
    scummvm/branches/gsoc2008-rtl/engines/made/pmvplayer.cpp
    scummvm/branches/gsoc2008-rtl/engines/made/screen.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/callables_ns.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/debug.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/dialogue.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/disk.h
    scummvm/branches/gsoc2008-rtl/engines/parallaction/disk_br.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/disk_ns.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/exec_br.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/exec_ns.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/gfxbase.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/graphics.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/graphics.h
    scummvm/branches/gsoc2008-rtl/engines/parallaction/gui_br.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/gui_ns.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/input.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/input.h
    scummvm/branches/gsoc2008-rtl/engines/parallaction/module.mk
    scummvm/branches/gsoc2008-rtl/engines/parallaction/objects.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/objects.h
    scummvm/branches/gsoc2008-rtl/engines/parallaction/parallaction.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/parallaction.h
    scummvm/branches/gsoc2008-rtl/engines/parallaction/parallaction_br.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/parallaction_ns.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/parser_br.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/parser_ns.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/sound.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/walk.cpp
    scummvm/branches/gsoc2008-rtl/engines/queen/resource.cpp
    scummvm/branches/gsoc2008-rtl/engines/scumm/detection.cpp
    scummvm/branches/gsoc2008-rtl/engines/scumm/gfxARM.s
    scummvm/branches/gsoc2008-rtl/engines/scumm/he/resource_he.cpp
    scummvm/branches/gsoc2008-rtl/engines/scumm/imuse_digi/dimuse_track.h
    scummvm/branches/gsoc2008-rtl/engines/scumm/saveload.cpp
    scummvm/branches/gsoc2008-rtl/engines/scumm/smush/codec47ARM.s
    scummvm/branches/gsoc2008-rtl/engines/touche/midi.cpp
    scummvm/branches/gsoc2008-rtl/engines/touche/midi.h
    scummvm/branches/gsoc2008-rtl/engines/touche/saveload.cpp
    scummvm/branches/gsoc2008-rtl/engines/touche/touche.cpp
    scummvm/branches/gsoc2008-rtl/sound/midiparser_smf.cpp
    scummvm/branches/gsoc2008-rtl/sound/midiparser_xmidi.cpp
    scummvm/branches/gsoc2008-rtl/sound/mixer.cpp
    scummvm/branches/gsoc2008-rtl/sound/mixer.h
    scummvm/branches/gsoc2008-rtl/sound/mp3.cpp
    scummvm/branches/gsoc2008-rtl/tools/create_lure/create_lure_dat.cpp

Added Paths:
-----------
    scummvm/branches/gsoc2008-rtl/engines/parallaction/balloons.cpp
    scummvm/branches/gsoc2008-rtl/engines/parallaction/exec.h
    scummvm/branches/gsoc2008-rtl/sound/mixer_intern.h
    scummvm/branches/gsoc2008-rtl/tools/svnpropset.sh

Removed Paths:
-------------
    scummvm/branches/gsoc2008-rtl/backends/platform/x11/

Property Changed:
----------------
    scummvm/branches/gsoc2008-rtl/
    scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/build.sh
    scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/bundle.sh
    scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/clean.sh
    scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/config.sh
    scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/scummvm.gpe


Property changes on: scummvm/branches/gsoc2008-rtl
___________________________________________________________________
Name: svnmerge-integrated
   - /scummvm/branches/gsoc2008-gui:1-31703 /scummvm/branches/gsoc2008-tfmx:1-31765 /scummvm/trunk:1-32739
   + /scummvm/branches/gsoc2008-gui:1-31703 /scummvm/branches/gsoc2008-tfmx:1-31765 /scummvm/trunk:1-33050

Modified: scummvm/branches/gsoc2008-rtl/NEWS
===================================================================
--- scummvm/branches/gsoc2008-rtl/NEWS	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/NEWS	2008-07-14 00:10:09 UTC (rev 33051)
@@ -10,11 +10,13 @@
    - Added support for the PC version of Waxworks
    - Added support for the Macintosh version of I Have no Mouth, and I
      must Scream
+   - Added support for Drascula: The Vampire Strikes Back
    
  General:
    - Added CAMD MIDI driver for AmigaOS4.
    - Revived the PS2 port (was already in 0.11.1 but was forgotten in the
      release notes).
+   - Plugged numerous memory leaks in all engines (part of GSoC'08 task)
 
  AGOS:
    - Fixed palette issues in Amiga versions of Simon the Sorcerer 1.

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/dc/Makefile
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/dc/Makefile	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/dc/Makefile	2008-07-14 00:10:09 UTC (rev 33051)
@@ -16,6 +16,7 @@
 INCLUDES= -I./ -I$(srcdir) -I$(ronindir)/include/ -I$(srcdir)/engines
 LIBS	= -L$(ronindir)/lib -lmad -lronin -lz -lm
 EXECUTABLE = scummvm.elf
+DEPDIR = .deps
 PLUGIN_PREFIX =
 PLUGIN_SUFFIX = .plg
 PLUGIN_EXTRA_DEPS = plugin.x plugin.syms scummvm.elf
@@ -32,12 +33,37 @@
 DEFINES += -DDYNAMIC_MODULES
 PRE_OBJS_FLAGS = -Wl,--whole-archive
 POST_OBJS_FLAGS = -Wl,--no-whole-archive
+ENABLED=DYNAMIC_PLUGIN
+else
+ENABLED=STATIC_PLUGIN
 endif
 
+ENABLE_SCUMM = $(ENABLED)
+ENABLE_SCUMM_7_8 = $(ENABLED)
+ENABLE_HE = $(ENABLED)
+ENABLE_AGI = $(ENABLED)
+ENABLE_AGOS = $(ENABLED)
+ENABLE_CINE = $(ENABLED)
+ENABLE_CRUISE = $(ENABLED)
+ENABLE_DRASCULA = $(ENABLED)
+ENABLE_GOB = $(ENABLED)
+ENABLE_IGOR = $(ENABLED)
+ENABLE_KYRA = $(ENABLED)
+ENABLE_LURE = $(ENABLED)
+ENABLE_M4 = $(ENABLED)
+ENABLE_MADE = $(ENABLED)
+ENABLE_PARALLACTION = $(ENABLED)
+ENABLE_QUEEN = $(ENABLED)
+ENABLE_SAGA = $(ENABLED)
+ENABLE_SKY = $(ENABLED)
+ENABLE_SWORD1 = $(ENABLED)
+ENABLE_SWORD2 = $(ENABLED)
+ENABLE_TOUCHE = $(ENABLED)
+
 OBJS :=	dcmain.o time.o display.o audio.o input.o selector.o icon.o \
 	label.o vmsave.o softkbd.o dcloader.o cache.o dc-fs.o
 
-MODULE_DIRS += .
+MODULE_DIRS += ./
 
 include $(srcdir)/Makefile.common
 

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/dc/audio.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/dc/audio.cpp	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/dc/audio.cpp	2008-07-14 00:10:09 UTC (rev 33051)
@@ -25,17 +25,18 @@
 
 #include <common/scummsys.h>
 #include "engines/engine.h"
-#include "sound/mixer.h"
+#include "sound/mixer_intern.h"
 #include "dc.h"
 
 EXTERN_C void *memcpy4s(void *s1, const void *s2, unsigned int n);
 
-void initSound()
+uint OSystem_Dreamcast::initSound()
 {
   stop_sound();
   do_sound_command(CMD_SET_FREQ_EXP(FREQ_22050_EXP));
   do_sound_command(CMD_SET_STEREO(1));
   do_sound_command(CMD_SET_BUFFER(SOUND_BUFFER_SHIFT));
+  return read_sound_int(&SOUNDSTATUS->freq);
 }
 
 void OSystem_Dreamcast::checkSound()
@@ -61,8 +62,8 @@
   if (n<100)
     return;
 
-  Audio::Mixer::mixCallback(_mixer, (byte*)temp_sound_buffer,
-			    2*SAMPLES_TO_BYTES(n));
+  _mixer->mixCallback((byte*)temp_sound_buffer,
+		      2*SAMPLES_TO_BYTES(n));
 
   if (fillpos+n > curr_ring_buffer_samples) {
     int r = curr_ring_buffer_samples - fillpos;
@@ -77,8 +78,4 @@
     fillpos = 0;
 }
 
-int OSystem_Dreamcast::getOutputSampleRate() const
-{
-  return read_sound_int(&SOUNDSTATUS->freq);
-}
 

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/dc/dc.h
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/dc/dc.h	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/dc/dc.h	2008-07-14 00:10:09 UTC (rev 33051)
@@ -28,6 +28,7 @@
 #include <ronin/soundcommon.h>
 #include "backends/timer/default/default-timer.h"
 #include "backends/fs/fs-factory.h"
+#include "sound/mixer_intern.h"
 
 #define NUM_BUFFERS 4
 #define SOUND_BUFFER_SHIFT 3
@@ -195,7 +196,7 @@
  private:
 
   Common::SaveFileManager *_savefile;
-  Audio::Mixer *_mixer;
+  Audio::MixerImpl *_mixer;
   DefaultTimerManager *_timer;
   SoftKeyboard _softkbd;
 
@@ -223,6 +224,7 @@
 
   int temp_sound_buffer[RING_BUFFER_SAMPLES>>SOUND_BUFFER_SHIFT];
 
+  uint initSound();
   void checkSound();
 
   void drawMouse(int xdraw, int ydraw, int w, int h,
@@ -237,6 +239,5 @@
 extern int handleInput(struct mapledev *pad,
 		       int &mouse_x, int &mouse_y,
 		       byte &shiftFlags, Interactive *inter = NULL);
-extern void initSound();
 extern bool selectGame(char *&, char *&, class Icon &);
 

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/dc/dcmain.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/dc/dcmain.cpp	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/dc/dcmain.cpp	2008-07-14 00:10:09 UTC (rev 33051)
@@ -33,7 +33,7 @@
 #include <common/config-manager.h>
 
 #include "backends/plugins/dc/dc-provider.h"
-#include "sound/mixer.h"
+#include "sound/mixer_intern.h"
 
 
 Icon icon;
@@ -54,8 +54,10 @@
 void OSystem_Dreamcast::initBackend()
 {
   _savefile = createSavefileManager();
-  _mixer = new Audio::Mixer();
+  _mixer = new Audio::MixerImpl(this);
   _timer = new DefaultTimerManager();
+  _mixer->setOutputRate(initSound());
+  _mixer->setReady(true);
 }
 
 
@@ -216,7 +218,6 @@
   static int argc = 1;
 
   dc_init_hardware();
-  initSound();
 
   g_system = new OSystem_Dreamcast();
   assert(g_system);

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/dc/selector.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/dc/selector.cpp	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/dc/selector.cpp	2008-07-14 00:10:09 UTC (rev 33051)
@@ -25,7 +25,9 @@
 
 #include <common/scummsys.h>
 #include <engines/engine.h>
+#include <engines/metaengine.h>
 #include <base/plugins.h>
+#include <base/game.h>
 #include <common/fs.h>
 #include <common/events.h>
 #include "dc.h"
@@ -149,15 +151,6 @@
 
 static Game the_game;
 
-static void detectGames(FSList &files, GameList &candidates)
-{
-  const EnginePluginList &plugins = EngineMan.getPlugins();
-  EnginePluginList::const_iterator iter = plugins.begin();
-  for (iter = plugins.begin(); iter != plugins.end(); ++iter) {
-    candidates.push_back((*iter)->detectGames(files));
-  }
-}
-
 static bool isIcon(const FilesystemNode &entry)
 {
   int l = entry.getDisplayName().size();
@@ -227,8 +220,7 @@
 	  files.push_back(*entry);
     }
 
-    GameList candidates;
-    detectGames(files, candidates);
+    GameList candidates = EngineMan.detectGames(files);
 
     for (GameList::const_iterator ge = candidates.begin();
 	ge != candidates.end(); ++ge)

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/dsmain.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/dsmain.cpp	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/dsmain.cpp	2008-07-14 00:10:09 UTC (rev 33051)
@@ -168,7 +168,7 @@
 u8 gameID;
 
 bool snapToBorder = false;
-bool consoleEnable = false;
+bool consoleEnable = true;
 bool gameScreenSwap = false;
 bool isCpuScalerEnabled();
 //#define HEAVY_LOGGING
@@ -899,12 +899,6 @@
 		return BG_GFX + 0x10000;		// 16bit qty!
 }
 
-void setSoundProc(OSystem_DS::SoundProc proc, void* param) {
-//	consolePrintf("Set sound callback");
-	soundCallback = proc;
-	soundParam = param;
-}
-
 // The sound system in ScummVM seems to always return stereo interleaved samples.
 // Here, I'm treating an 11Khz stereo stream as a 22Khz mono stream, which works sorta ok, but is
 // a horrible bodge.  Any advice on how to change the engine to output mono would be greatly
@@ -914,7 +908,8 @@
 	consolePrintf("doSoundCallback...");
 	#endif
 
-	if (soundCallback) {
+	if (OSystem_DS::instance())
+	if (OSystem_DS::instance()->getMixerImpl()) {
 		lastCallbackFrame = frameCount;
 		
 		for (int r = IPC->playingSection; r < IPC->playingSection + 4; r++) {
@@ -923,7 +918,7 @@
 			if (IPC->fillNeeded[chunk]) {
 				IPC->fillNeeded[chunk] = false;
 				DC_FlushAll();
-				soundCallback(soundParam, (byte *) (soundBuffer + ((bufferSamples >> 2) * chunk)), bufferSamples >> 1);
+				OSystem_DS::instance()->getMixerImpl()->mixCallback((byte *) (soundBuffer + ((bufferSamples >> 2) * chunk)), bufferSamples >> 1);
 				IPC->fillNeeded[chunk] = false;
 				DC_FlushAll();
 			}

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/dsmain.h
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/dsmain.h	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/dsmain.h	2008-07-14 00:10:09 UTC (rev 33051)
@@ -88,7 +88,6 @@
 void 	doTimerCallback();												// Call callback function if required
 
 // Sound
-void 	setSoundProc(OSystem_DS::SoundProc proc, void* param);			// Setup a callback function for sound
 void 	doSoundCallback();												// Call function if sound buffers need more data
 void 	playSound(const void* data, u32 length, bool loop, bool adpcm = false, int rate = 22050);		// Start a sound
 void 	stopSound(int channel);

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/osystem_ds.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/osystem_ds.cpp	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/osystem_ds.cpp	2008-07-14 00:10:09 UTC (rev 33051)
@@ -67,10 +67,12 @@
 	ConfMan.setInt("autosave_period", 0);
 	ConfMan.setBool("FM_medium_quality", true);
 
-	_mixer = new DSAudioMixer;
-	_timer = new DSTimerManager;
-	DS::setSoundProc(Audio::Mixer::mixCallback, _mixer);
-    DS::setTimerCallback(&OSystem_DS::timerHandler, 10);
+	_mixer = new DSAudioMixer(this);
+	_timer = new DSTimerManager();
+    	DS::setTimerCallback(&OSystem_DS::timerHandler, 10);
+
+	_mixer->setOutputRate(11025 /*DS::getSoundFrequency()*/);
+	_mixer->setReady(true);
     
 	OSystem::initBackend();
 }
@@ -139,7 +141,7 @@
 		green >>= 3;
 		blue >>= 3;
 		
-//		if (r != 255)
+		if (r != 255)
 		{		
 			BG_PALETTE[r] = red | (green << 5) | (blue << 10);
 			if (!DS::getKeyboardEnable()) {
@@ -158,13 +160,13 @@
 	// Ensure we copy using 16 bit quantities due to limitation of VRAM addressing
 	
 
-	u16* image = (u16 *) DS::get8BitBackBuffer();
+	const u16* image = (const u16 *) DS::get8BitBackBuffer();
 	for (int y = 0; y <  DS::getGameHeight(); y++)
 	{
 		DC_FlushRange(image + (y << 8), DS::getGameWidth());
 		for (int x = 0; x < DS::getGameWidth() >> 1; x++)
 		{
-			*(((u16 *) (surf->pixels)) + y * (DS::getGameWidth() >> 1) + x) = image[y << 8 + x];
+			*(((u16 *) (surf->pixels)) + y * (DS::getGameWidth() >> 1) + x) = image[(y << 8) + x];
 		}
 	}
 
@@ -277,7 +279,7 @@
 
 void OSystem_DS::copyRectToOverlay (const OverlayColor *buf, int pitch, int x, int y, int w, int h) {
 	u16* bg = (u16 *) DS::get16BitBackBuffer();
-	u16* src = (u16 *) buf;
+	const u16* src = (const u16 *) buf;
 		
 //	if (x + w > 256) w = 256 - x;
 	//if (x + h > 256) h = 256 - y;
@@ -433,13 +435,7 @@
 void OSystem_DS::deleteMutex(MutexRef mutex) {
 }
 
-void OSystem_DS::clearSoundCallback() {
-//	consolePrintf("Clearing sound callback");
-//	DS::setSoundProc(NULL, NULL);
-}
-
-int OSystem_DS::getOutputSampleRate() const
-{
+int OSystem_DS::getOutputSampleRate() const {
 	return DS::getSoundFrequency();
 }
 

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/osystem_ds.h
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/osystem_ds.h	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/osystem_ds.h	2008-07-14 00:10:09 UTC (rev 33051)
@@ -30,10 +30,13 @@
 #include "gbampsave.h"
 #include "backends/saves/default/default-saves.h"
 #include "backends/timer/default/default-timer.h"
-#include "sound/mixer.h"
+#include "sound/mixer_intern.h"
 #include "graphics/surface.h"
 
-class DSAudioMixer : public Audio::Mixer {	
+class DSAudioMixer : public Audio::MixerImpl {	
+
+public:
+	DSAudioMixer(OSystem* system) : Audio::MixerImpl(system) { }
 };
 
 class DSTimerManager : public DefaultTimerManager {	
@@ -62,7 +65,7 @@
 	Graphics::Surface* createTempFrameBuffer();
 
 public:
-	typedef void (*SoundProc)(void *param, byte *buf, int len);
+	typedef void (*SoundProc)(byte *buf, int len);
 	typedef int  (*TimerProc)(int interval);
 
 	OSystem_DS();
@@ -114,7 +117,6 @@
 	virtual void unlockMutex(MutexRef mutex);
 	virtual void deleteMutex(MutexRef mutex);
 
-	virtual void clearSoundCallback();
 	virtual int getOutputSampleRate() const;
 
 	virtual bool openCD(int drive);
@@ -147,6 +149,8 @@
 	virtual void unlockScreen();
 	
 	virtual Audio::Mixer* getMixer() { return _mixer; }
+	Audio::MixerImpl* getMixerImpl() { return _mixer; }
+
 	virtual Common::TimerManager* getTimerManager() { return _timer; }
 	static int timerHandler(int t);
 

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/wordcompletion.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/wordcompletion.cpp	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/ds/arm9/source/wordcompletion.cpp	2008-07-14 00:10:09 UTC (rev 33051)
@@ -1,6 +1,6 @@
 #include "wordcompletion.h"
-#include "engines/agi/agi.h"
 #include "osystem_ds.h"
+#include "engines/agi/agi.h"	// Caution for #define for NUM_CHANNELS, causes problems in mixer_intern.h
 
 #ifdef ENABLE_AGI
 

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/README-GP2X
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/README-GP2X	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/README-GP2X	2008-07-14 00:10:09 UTC (rev 33051)
@@ -1,4 +1,4 @@
-ScummVM - GP2X SPECIFIC README - 0.10.0 SVN
+ScummVM - GP2X SPECIFIC README - HEAD SVN
 ------------------------------------------------------------------------
 
 Contents:

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/README-GP2X.html
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/README-GP2X.html	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/README-GP2X.html	2008-07-14 00:10:09 UTC (rev 33051)
@@ -2,12 +2,15 @@
 <html>
 <head>
   <title>ScummVM - GP2X SPECIFIC README</title>
+
+
 </head>
 
 
 <body>
 
-<span style="font-weight: bold;">ScummVM - GP2X SPECIFIC README - 0.10.0 SVN<br>
+<span style="font-weight: bold;">ScummVM -
+GP2X SPECIFIC README - HEAD SVN<br>
 
 </span>
 <hr style="width: 100%; height: 2px;"><br>
@@ -16,52 +19,65 @@
 
 <ul>
 
-  <li><a href="#About_the_backendport">About the backend/port</a></li>
+  <li><a href="#About_the_backendport">About the
+backend/port</a></li>
 
-  <li><a href="#Game_compatibility">Game compatability</a></li>
+  <li><a href="#Game_compatibility">Game
+compatability</a></li>
 
   <li><a href="#Included_engines">Included engines</a></li>
 
-  <li><a href="#Supported_audio_options">Supported audio options</a></li>
+  <li><a href="#Supported_audio_options">Supported
+audio options</a></li>
 
-  <li><a href="#Supported_cut-scene_options">Supported cut-scene options</a></li>
+  <li><a href="#Supported_cut-scene_options">Supported
+cut-scene options</a></li>
 
   <li><a href="#Recent_changes">Recent changes</a></li>
 
   <li><a href="#How_to_save">How to save</a></li>
 
-  <li><a href="#Controller_mappings">Controller mappings</a></li>
+  <li><a href="#Controller_mappings">Controller
+mappings</a></li>
 
   <li><a href="#Know_issues">Know issues</a></li>
 
   <li><a href="#Major_TODOs">Major TODO's</a></li>
 
-  <li><a href="#Additional_resourceslinks">Additional resources/links</a></li>
+  <li><a href="#Additional_resourceslinks">Additional
+resources/links</a></li>
 
   <li><a href="#Credits">Credits</a></li>
 
 </ul>
+
 <br>
+
 <hr style="width: 100%; height: 2px;"><a style="font-weight: bold;" name="About_the_backendport"></a><span style="font-weight: bold;">About the backend/port</span><br>
 
 <br>
 
-This is the readme for the offficial GP2X ScummVM backend (also known as the GP2X port).<br>
+This is the readme for the offficial GP2X ScummVM backend (also known
+as the GP2X port).<br>
 
 <br>
 
-This is an SVN test release of ScummVM for the GP2X, it would be appreciated
+This is an SVN test release of ScummVM for the GP2X, it would be
+appreciated
 if this SVN test distribution was not mirrored and that people be
-directed to <a href="http://www.distant-earth.com/scummvm">http://www.distant-earth.com/scummvm</a> instead for updated SVN builds.<br>
+directed to <a href="http://www.distant-earth.com/scummvm">http://www.distant-earth.com/scummvm</a>
+instead for updated SVN builds.<br>
 
 <br>
 
 Full supported official releases of the GP2X ScummVM backend are made
-in line with main official releases and are avalalble from the <a href="http://www.scummvm.org/downloads.php">ScummVM downloads page</a>.<br>
+in line with main official releases and are avalalble from the <a href="http://www.scummvm.org/downloads.php">ScummVM
+downloads page</a>.<br>
 
 <br>
 
-This build is in an active state of development and as such no ‘expected’ behavior can be guaranteed ;).<br>
+This build is in an active state of development and as such no
+‘expected’ behavior can be guaranteed ;).<br>
 
 <br>
 
@@ -69,48 +85,60 @@
 
 <br>
 
-Please refer to the <a href="http://forums.scummvm.org/viewforum.php?f=14">GP2X ScummVM forum</a> and <a href="http://wiki.scummvm.org/index.php/GP2X">WiKi</a> for the latest information on the port.<br>
+Please refer to the <a href="http://forums.scummvm.org/viewforum.php?f=14">GP2X
+ScummVM forum</a> and <a href="http://wiki.scummvm.org/index.php/GP2X">WiKi</a>
+for the latest information on the port.<br>
+
 <br>
 
 <hr style="width: 100%; height: 2px;"><a style="font-weight: bold;" name="Game_compatibility"></a><span style="font-weight: bold;">Game compatibility</span><br>
 
 <br>
 
-For information on the compatability of a specific game please refer to the <a href="http://wiki.scummvm.org/index.php/GP2X#Compatibility_List">GP2X compatability section of the ScummVM WiKi</a>.<br>
+For information on the compatability of a specific game please refer to
+the <a href="http://wiki.scummvm.org/index.php/GP2X#Compatibility_List">GP2X
+compatability section of the ScummVM WiKi</a>.<br>
 
 <br>
 
-Please note the version and date of the ScummVM build you are running when reviewing the above list.<br>
+Please note the version and date of the ScummVM build you are running
+when reviewing the above list.<br>
 
 <br>
 
 <hr style="width: 100%; height: 2px;"><a style="font-weight: bold;" name="Included_engines"></a><span style="font-weight: bold;">Included engines</span><br>
 
 <br>
+
 Just because an engine is included does not mean any/all of its games
 are supported. Please check game compatability for more infomation.<br>
+
 <ul>
-  <li>
-Scumm - (All games supported by ScummVM should work to some extent, using the hardware scalar if needed)</li>
+
+  <li>Scumm - (All games supported by ScummVM should work to some
+extent, using the hardware scalar if needed)</li>
+
   <li>AGOS (AKA Simon) - (Simon the Sorcerer one and two).</li>
+
   <li>Sky - (Beneath a Steel Sky)</li>
-  <li>
-Sword - (Broken Sword 1) - This engine uses the hardware scalar to
+
+  <li>Sword - (Broken Sword 1) - This engine uses the hardware
+scalar to
 downsize the graphics to fix on the GP2X. It is NOT very nice to look
 at.</li>
-  <li>
-Sword2 - (Broken Sword 2) - This engine uses the hardware
+
+  <li>Sword2 - (Broken Sword 2) - This engine uses the hardware
 scalar to downsize the graphics to fix on the GP2X. It is NOT very nice
 to look at.</li>
-  <li>
-Gob - (Goblins one)</li>
-  <li>
-Queen - (Flight of the Amazon Queen)</li>
-  <li>
-Kyra - (The Legend of Kyrandia)</li>
+
+  <li>Gob - (Goblins one)</li>
+
+  <li>Queen - (Flight of the Amazon Queen)</li>
+
+  <li>Kyra - (The Legend of Kyrandia)</li>
+
 </ul>
 
-
 All other game engines are disabled in this release.<br>
 
 <br style="font-weight: bold;">
@@ -155,13 +183,18 @@
 
 Enabled hardware scalar code.<br>
 
-Now built using SDL 1.2.9 for the parts of the port that use SDL (some parts now hit the hardware directly).<br>
+Now built using SDL 1.2.9 for the parts of the port that use SDL (some
+parts now hit the hardware directly).<br>
 
-Enabled new launcher - (Ensure defaulttheme.zip is in the same folder as the executable).<br>
+Enabled new launcher - (Ensure defaulttheme.zip is in the same folder
+as the executable).<br>
 
-Aspect Ratio Correction can now be disabled ‘per game’. When adding a game you can find this option on the GFX tab. <br>
+Aspect Ratio Correction can now be disabled ‘per
+game’. When adding a game you can find this option on the GFX
+tab. <br>
 
-Note: This will cause the game to run with a black border at the bottom as it will be rendered to a 320*200 frame.<br>
+Note: This will cause the game to run with a black border at the bottom
+as it will be rendered to a 320*200 frame.<br>
 
 <br>
 
@@ -169,7 +202,9 @@
 
 <br>
 
-<span style="font-weight: bold;">NOTE:</span> Everything is saved to the SD card, saves are stored in the <span style="font-weight: bold;">saves</span> folder under your main ScummVM executable unless you set another save location.<br>
+<span style="font-weight: bold;">NOTE:</span>
+Everything is saved to the SD card, saves are stored in the <span style="font-weight: bold;">saves</span> folder under
+your main ScummVM executable unless you set another save location.<br>
 
 <br>
 
@@ -178,7 +213,8 @@
 
 <br>
 
-The save process below is for Scumm engine games but the principle is the same for all.<br>
+The save process below is for Scumm engine games but the
+principle is the same for all.<br>
 
 <br>
 
@@ -198,11 +234,13 @@
 
 <br>
 
-Basically the emulated keys you can use are equivelent to the values buttons are mapped to, <br>
+Basically the emulated keys you can use are equivelent to the values
+buttons are mapped to, <br>
 
 <br>
 
-I have a virtual keyboard like the GP32 one (left/right on the stick to pick chars) to add in at some point ;-)<br>
+I have a virtual keyboard like the GP32 one (left/right on the stick to
+pick chars) to add in at some point ;-)<br>
 
 <br>
 
@@ -262,9 +300,11 @@
 
 <br>
 
-Possible random crash (well SegFault). I have had this happen twice and have not tracked down the cause. <br>
+Possible random crash (well SegFault). I have had this happen twice and
+have not tracked down the cause. <br>
 
-It happens very infrequently, both times it was in the DOTT CD intro. Saving often is never a bad idea anyhow.<br>
+It happens very infrequently, both times it was in the DOTT CD intro.
+Saving often is never a bad idea anyhow.<br>
 
 <br>
 
@@ -272,11 +312,14 @@
 
 <br>
 
-Fix save support when using the Sky engine (Beneath a Steel Sky) - You CAN'T save at the moment but auto save works.<br>
+Fix save support when using the Sky engine (Beneath a Steel Sky) - You
+CAN'T save at the moment but auto save works.<br>
 
-Look into inconsistencies with AGOS engine and map Y key to a button combination to allow clean quitting (Simon 1/2).<br>
+Look into inconsistencies with AGOS engine and map Y key to a button
+combination to allow clean quitting (Simon 1/2).<br>
 
-Add splash-screen and pre-ScummVM config menu (CPU speed, LCD timings etc.) - Partly done.<br>
+Add splash-screen and pre-ScummVM config menu (CPU speed, LCD timings
+etc.) - Partly done.<br>
 
 Fix TV out, maybe make it an option in the pre-ScummVM config menu.<br>
 
@@ -284,17 +327,29 @@
 
 <br style="font-weight: bold;">
 
-<hr style="width: 100%; height: 2px;"><a style="font-weight: bold;" name="Additional_resourceslinks"></a><span style="font-weight: bold;">Additional resources/links</span><br>
+<hr style="width: 100%; height: 2px;"><a style="font-weight: bold;" name="Additional_resourceslinks"></a><span style="font-weight: bold;">Additional resources/links<br>
 
+<br>
+
+</span><span style="font-weight: bold;">Note:</span>
+When providing feedback,
+requests, forum posts, bug reports or anything like that always include
+a mention of the version of ScummVM you are using (the build version,
+date and time can be seen in the main game launcher window).<br>
+
 <ul>
 
-  <li><a href="http://wiki.scummvm.org/index.php/GP2X">ScummVM WiKi GP2X page</a></li>
+  <li><a href="http://wiki.scummvm.org/index.php/GP2X">ScummVM
+WiKi GP2X page</a></li>
 
-  <li><a href="http://forums.scummvm.org/viewforum.php?f=14">ScummVM forums GP2X forum</a></li>
+  <li><a href="http://forums.scummvm.org/viewforum.php?f=14">ScummVM
+forums GP2X forum</a></li>
 
-  <li><a href="http://www.distant-earth.com/scummvm">My own ScummVM page</a> (for SVN/test builds)</li>
+  <li><a href="http://www.distant-earth.com/scummvm">My
+own ScummVM page</a> (for SVN/test builds)</li>
 
-  <li><a href="http://www.scummvm.org">Main ScummVM site</a> (for official supported release builds)</li>
+  <li><a href="http://www.scummvm.org">Main ScummVM
+site</a> (for official supported release builds)</li>
 
 </ul>
 


Property changes on: scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/build.sh
___________________________________________________________________
Name: svn:executable
   + *


Property changes on: scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/bundle.sh
___________________________________________________________________
Name: svn:executable
   + *


Property changes on: scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/clean.sh
___________________________________________________________________
Name: svn:executable
   + *

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/config.sh
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/config.sh	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/config.sh	2008-07-14 00:10:09 UTC (rev 33051)
@@ -17,7 +17,7 @@
 
 # Edit the configure line to suit.
 cd ../../../..
-./configure --backend=gp2x --disable-mt32emu --host=gp2x --disable-flac --disable-nasm --disable-hq-scalers --with-sdl-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6/bin --with-mpeg2-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6 --enable-tremor --with-tremor-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6 --enable-zlib --with-zlib-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6 --enable-mad --with-mad-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6
-#--enable-plugins
+./configure --backend=gp2x --disable-mt32emu --host=gp2x --disable-flac --disable-nasm --disable-hq-scalers --with-sdl-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6/bin --with-mpeg2-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6 --enable-tremor --with-tremor-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6 --enable-zlib --with-zlib-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6 --enable-mad --with-mad-prefix=/opt/open2x/gcc-4.1.1-glibc-2.3.6 --enable-made --enable-m4 
+#--enable-plugins --default-dynamic
 
 echo Generating config for GP2X complete. Check for errors.


Property changes on: scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/config.sh
___________________________________________________________________
Name: svn:executable
   + *


Property changes on: scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/build/scummvm.gpe
___________________________________________________________________
Name: svn:executable
   + *

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/gp2x-common.h
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/gp2x-common.h	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/gp2x-common.h	2008-07-14 00:10:09 UTC (rev 33051)
@@ -37,7 +37,7 @@
 #include <SDL_gp2x.h>
 
 namespace Audio {
-	class Mixer;
+	class MixerImpl;
 }
 
 namespace Common {
@@ -128,12 +128,10 @@
 	virtual bool pollEvent(Common::Event &event); // overloaded by CE backend
 
 	// Set function that generates samples
-	typedef void (*SoundProc)(void *param, byte *buf, int len);
-	virtual bool setSoundCallback(SoundProc proc, void *param); // overloaded by CE backend
+	void setupMixer();
+	static void mixCallback(void *s, byte *samples, int len);
 	virtual Audio::Mixer *getMixer();
 
-	void clearSoundCallback();
-
 	// Poll CD status
 	// Returns true if cd audio is playing
 	bool pollCD();
@@ -181,7 +179,6 @@
 	int getGraphicsMode() const;
 
 	bool openCD(int drive);
-	int getOutputSampleRate() const;
 
 	bool hasFeature(Feature f);
 	void setFeatureState(Feature f, bool enable);
@@ -369,7 +366,7 @@
 	Common::SaveFileManager *_savefile;
 	FilesystemFactory *getFilesystemFactory();
 
-	Audio::Mixer *_mixer;
+	Audio::MixerImpl *_mixer;
 
 	SDL_TimerID _timerID;
 	Common::TimerManager *_timer;

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/gp2x.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/gp2x.cpp	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/gp2x/gp2x.cpp	2008-07-14 00:10:09 UTC (rev 33051)
@@ -40,7 +40,7 @@
 #include "backends/timer/default/default-timer.h"
 #include "backends/plugins/posix/posix-provider.h"
 #include "backends/fs/posix/posix-fs-factory.h" // for getFilesystemFactory()
-#include "sound/mixer.h"
+#include "sound/mixer_intern.h"
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -225,8 +225,7 @@
 	// Create and hook up the mixer, if none exists yet (we check for this to
 	// allow subclasses to provide their own).
 	if (_mixer == 0) {
-		_mixer = new Audio::Mixer();
-		setSoundCallback(Audio::Mixer::mixCallback, _mixer);
+		setupMixer();
 	}
 
 	// Create and hook up the timer manager, if none exists yet (we check for
@@ -445,47 +444,71 @@
 #pragma mark --- Audio ---
 #pragma mark -
 
-bool OSystem_GP2X::setSoundCallback(SoundProc proc, void *param) {
+void OSystem_GP2X::mixCallback(void *sys, byte *samples, int len) {
+	OSystem_GP2X *this_ = (OSystem_GP2X *)sys;
+	assert(this_);
+
+	if (this_->_mixer)
+		this_->_mixer->mixCallback(samples, len);
+}
+
+void OSystem_GP2X::setupMixer() {
 	SDL_AudioSpec desired;
 	SDL_AudioSpec obtained;
 
-	memset(&desired, 0, sizeof(desired));
+	//memset(&desired, 0, sizeof(desired));
 
+	// Determine the desired output sampling frequency.
 	_samplesPerSec = 0;
-
 	if (ConfMan.hasKey("output_rate"))
 		_samplesPerSec = ConfMan.getInt("output_rate");
-
 	if (_samplesPerSec <= 0)
 		_samplesPerSec = SAMPLES_PER_SEC;
 
+
 	//Quick EVIL Hack - DJWillis
 	_samplesPerSec = 11025;
 
+	// Determine the sample buffer size. We want it to store enough data for
+	// about 1/16th of a second. Note that it must be a power of two.
+	// So e.g. at 22050 Hz, we request a sample buffer size of 2048.
+	int samples = 8192;
+	while (16 * samples >= _samplesPerSec) {
+		samples >>= 1;
+	}
+
+	memset(&desired, 0, sizeof(desired));
 	desired.freq = _samplesPerSec;
 	desired.format = AUDIO_S16SYS;
 	desired.channels = 2;
 	//desired.samples = (uint16)samples;
 	desired.samples = 128; // Samples hack
-	desired.callback = proc;
-	desired.userdata = param;
+	desired.callback = mixCallback;
+	desired.userdata = this;
+
+	// Create the mixer instance
+	assert(!_mixer);
+	_mixer = new Audio::MixerImpl(this);
+	assert(_mixer);
+
 	if (SDL_OpenAudio(&desired, &obtained) != 0) {
 		warning("Could not open audio device: %s", SDL_GetError());
-		return false;
+		_samplesPerSec = 0;
+		_mixer->setReady(false);
+	} else {
+		// 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;
+		debug(1, "Output sample rate: %d Hz", _samplesPerSec);
+
+		// Tell the mixer that we are ready and start the sound processing
+		_mixer->setOutputRate(_samplesPerSec);
+		_mixer->setReady(true);
+		SDL_PauseAudio(0);
 	}
-	_samplesPerSec = obtained.freq;
-	SDL_PauseAudio(0);
-	return true;
 }
 
-void OSystem_GP2X::clearSoundCallback() {
-	SDL_CloseAudio();
-}
-
-int OSystem_GP2X::getOutputSampleRate() const {
-	return _samplesPerSec;
-}
-
 Audio::Mixer *OSystem_GP2X::getMixer() {
 	assert(_mixer);
 	return _mixer;

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/iphone/osys_iphone.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/iphone/osys_iphone.cpp	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/iphone/osys_iphone.cpp	2008-07-14 00:10:09 UTC (rev 33051)
@@ -1128,10 +1128,6 @@
 	return true;
 }
 
-void OSystem_IPHONE::clearSoundCallback() {
-	debug("clearSoundCallback()\n");
-}
-
 int OSystem_IPHONE::getOutputSampleRate() const {
 	return AUDIO_SAMPLE_RATE;
 }

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/iphone/osys_iphone.h
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/iphone/osys_iphone.h	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/iphone/osys_iphone.h	2008-07-14 00:10:09 UTC (rev 33051)
@@ -153,7 +153,6 @@
 	virtual void deleteMutex(MutexRef mutex);
 
 	virtual bool setSoundCallback(SoundProc proc, void *param);
-	virtual void clearSoundCallback();
 	virtual int getOutputSampleRate() const;
 	virtual void setTimerCallback(TimerProc callback, int interval);
 

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/null/null.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/null/null.cpp	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/null/null.cpp	2008-07-14 00:10:09 UTC (rev 33051)
@@ -28,18 +28,37 @@
 
 #if defined(USE_NULL_DRIVER)
 
+#ifdef UNIX
+#include <unistd.h>
+#include <sys/time.h>
+#endif
+
 #include "common/rect.h"
 
 #include "backends/saves/default/default-saves.h"
 #include "backends/timer/default/default-timer.h"
-#include "sound/mixer.h"
+#include "sound/mixer_intern.h"
 
+/*
+ * Include header files needed for the getFilesystemFactory() method.
+ */
+#if defined(__amigaos4__)
+	#include "backends/fs/amigaos4/amigaos4-fs-factory.h"
+#elif defined(UNIX)
+	#include "backends/fs/posix/posix-fs-factory.h"
+#elif defined(WIN32)
+	#include "backends/fs/windows/windows-fs-factory.h"
+#endif
+
+
+
 class OSystem_NULL : public OSystem {
 protected:
 	Common::SaveFileManager *_savefile;
-	Audio::Mixer *_mixer;
+	Audio::MixerImpl *_mixer;
 	Common::TimerManager *_timer;
 
+	timeval _startTime;
 public:
 
 	OSystem_NULL();
@@ -93,8 +112,6 @@
 
 	typedef void (*SoundProc)(void *param, byte *buf, int len);
 	virtual bool setSoundCallback(SoundProc proc, void *param);
-	virtual void clearSoundCallback();
-	virtual int getOutputSampleRate() const;
 
 	virtual void quit();
 
@@ -104,6 +121,8 @@
 	virtual Audio::Mixer *getMixer();
 	virtual void getTimeAndDate(struct tm &t) const;
 	virtual Common::TimerManager *getTimerManager();
+	FilesystemFactory *getFilesystemFactory();
+
 };
 
 static const OSystem::GraphicsMode s_supportedGraphicsModes[] = {
@@ -124,9 +143,14 @@
 
 void OSystem_NULL::initBackend() {
 	_savefile = new DefaultSaveFileManager();
-	_mixer = new Audio::Mixer();
+	_mixer = new Audio::MixerImpl(this);
 	_timer = new DefaultTimerManager();
 
+	_mixer->setOutputRate(22050);
+	_mixer->setReady(false);
+
+	gettimeofday(&_startTime, NULL);
+
 	// Note that both the mixer and the timer manager are useless
 	// this way; they need to be hooked into the system somehow to
 	// be functional. Of course, can't do that in a NULL backend :).
@@ -245,10 +269,20 @@
 }
 
 uint32 OSystem_NULL::getMillis() {
+#ifdef UNIX
+	timeval curTime;
+	gettimeofday(&curTime, NULL);
+	return (uint32)(((curTime.tv_sec - _startTime.tv_sec) * 1000) + \
+			((curTime.tv_usec - _startTime.tv_usec) / 1000));
+#else
 	return 0;
+#endif
 }
 
 void OSystem_NULL::delayMillis(uint msecs) {
+#ifdef UNIX
+	usleep(msecs * 1000);
+#endif
 }
 
 OSystem::MutexRef OSystem_NULL::createMutex(void) {
@@ -268,13 +302,6 @@
 	return true;
 }
 
-void OSystem_NULL::clearSoundCallback() {
-}
-
-int OSystem_NULL::getOutputSampleRate() const {
-	return 22050;
-}
-
 void OSystem_NULL::quit() {
 }
 
@@ -299,6 +326,19 @@
 void OSystem_NULL::getTimeAndDate(struct tm &t) const {
 }
 
+FilesystemFactory *OSystem_NULL::getFilesystemFactory() {
+	#if defined(__amigaos4__)
+		return &AmigaOSFilesystemFactory::instance();
+	#elif defined(UNIX)
+		return &POSIXFilesystemFactory::instance();
+	#elif defined(WIN32)
+		return &WindowsFilesystemFactory::instance();
+	#else
+		#error Unknown and unsupported backend in OSystem_NULL::getFilesystemFactory
+	#endif
+}
+
+
 OSystem *OSystem_NULL_create() {
 	return new OSystem_NULL();
 }

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/ps2/systemps2.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/ps2/systemps2.cpp	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/ps2/systemps2.cpp	2008-07-14 00:10:09 UTC (rev 33051)
@@ -727,7 +727,6 @@
 			driveStandby();
 			fio.umount("pfs0:");
 		}
-		//clearSoundCallback();
 		//setTimerCallback(NULL, 0);
 		_screen->wantAnim(false);
 		_systemQuit = true;

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/psp/Makefile
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/psp/Makefile	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/psp/Makefile	2008-07-14 00:10:09 UTC (rev 33051)
@@ -2,10 +2,36 @@
 # $URL$
 # $Id$
 
+ENABLED=STATIC_PLUGIN
+
 #control build
 DISABLE_SCALERS = true
 DISABLE_HQ_SCALERS = true
 
+ENABLE_SCUMM = $(ENABLED)
+ENABLE_SCUMM_7_8 = $(ENABLED)
+#ENABLE_HE = $(ENABLED)
+ENABLE_AGI = $(ENABLED)
+ENABLE_AGOS = $(ENABLED)
+#ENABLE_CINE = $(ENABLED)
+#ENABLE_CRUISE = $(ENABLED)
+ENABLE_DRASCULA = $(ENABLED)
+ENABLE_GOB = $(ENABLED)
+#ENABLE_IGOR = $(ENABLED)
+ENABLE_KYRA = $(ENABLED)
+ENABLE_LURE = $(ENABLED)
+#ENABLE_M4 = $(ENABLED)
+#ENABLE_MADE = $(ENABLED)
+#ENABLE_PARALLACTION = $(ENABLED)
+#ENABLE_QUEEN = $(ENABLED)
+#ENABLE_SAGA = $(ENABLED)
+ENABLE_SKY = $(ENABLED)
+ENABLE_SWORD1 = $(ENABLED)
+ENABLE_SWORD2 = $(ENABLED)
+#ENABLE_TINSEL = $(ENABLED)
+#ENABLE_TOUCHE = $(ENABLED)
+
+
 srcdir = ../../..
 VPATH = $(srcdir)
 HAVE_GCC3 = false
@@ -63,6 +89,8 @@
 	kbd_l_c.o \
 	trace.o
 
+DEPDIR = .deps
+
 include $(srcdir)/Makefile.common
 
 PSP_EBOOT_SFO = param.sfo

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/psp/osys_psp.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/psp/osys_psp.cpp	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/psp/osys_psp.cpp	2008-07-14 00:10:09 UTC (rev 33051)
@@ -34,7 +34,7 @@
 #include "backends/timer/default/default-timer.h"
 #include "graphics/surface.h"
 #include "graphics/scaler.h"
-#include "sound/mixer.h"
+#include "sound/mixer_intern.h"
 
 #include <pspgu.h>
 
@@ -72,7 +72,7 @@
 };
 
 
-OSystem_PSP::OSystem_PSP() : _screenWidth(0), _screenHeight(0), _overlayWidth(0), _overlayHeight(0), _offscreen(0), _overlayBuffer(0), _overlayVisible(false), _shakePos(0), _mouseBuf(0), _prevButtons(0), _lastPadCheck(0), _padAccel(0) {
+OSystem_PSP::OSystem_PSP() : _screenWidth(0), _screenHeight(0), _overlayWidth(0), _overlayHeight(0), _offscreen(0), _overlayBuffer(0), _overlayVisible(false), _shakePos(0), _mouseBuf(0), _prevButtons(0), _lastPadCheck(0), _padAccel(0), _mixer(0) {
 
 	memset(_palette, 0, sizeof(_palette));
 
@@ -99,11 +99,11 @@
 
 void OSystem_PSP::initBackend() {
 	_savefile = new DefaultSaveFileManager();
-	_mixer = new Audio::Mixer();
 	_timer = new DefaultTimerManager();
-	setSoundCallback(Audio::Mixer::mixCallback, _mixer);
 	setTimerCallback(&timer_handler, 10);
 
+	setupMixer();
+
 	OSystem::initBackend();
 }
 
@@ -586,7 +586,15 @@
 	SDL_DestroyMutex((SDL_mutex *)mutex);
 }
 
-bool OSystem_PSP::setSoundCallback(SoundProc proc, void *param) {
+void OSystem_PSP::mixCallback(void *sys, byte *samples, int len) {
+	OSystem_PSP *this_ = (OSystem_PSP *)sys;
+	assert(this_);
+
+	if (this_->_mixer)
+		this_->_mixer->mixCallback(samples, len);
+}
+
+void OSystem_PSP::setupMixer(void) {
 	SDL_AudioSpec desired;
 	SDL_AudioSpec obtained;
 
@@ -613,29 +621,33 @@
 	desired.format = AUDIO_S16SYS;
 	desired.channels = 2;
 	desired.samples = samples;
-	desired.callback = proc;
-	desired.userdata = param;
+	desired.callback = mixCallback;
+	desired.userdata = this;
+
+	assert(!_mixer);
+	_mixer = new Audio::MixerImpl(this);
+	assert(_mixer);
+
 	if (SDL_OpenAudio(&desired, &obtained) != 0) {
-		return false;
+		warning("Could not open audio: %s", SDL_GetError());
+		_samplesPerSec = 0;
+		_mixer->setReady(false);
+	} else {
+		// 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;
+		
+		// Tell the mixer that we are ready and start the sound processing
+		_mixer->setOutputRate(_samplesPerSec);
+		_mixer->setReady(true);
+
+		SDL_PauseAudio(0);
 	}
-	// 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;
-	SDL_PauseAudio(0);
-	return true;
 }
 
-void OSystem_PSP::clearSoundCallback() {
+void OSystem_PSP::quit() {
 	SDL_CloseAudio();
-}
-
-int OSystem_PSP::getOutputSampleRate() const {
-	return _samplesPerSec;
-}
-
-void OSystem_PSP::quit() {
-	clearSoundCallback();
 	SDL_Quit();
 	sceGuTerm();
 	sceKernelExitGame();

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/psp/osys_psp.h
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/psp/osys_psp.h	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/psp/osys_psp.h	2008-07-14 00:10:09 UTC (rev 33051)
@@ -26,6 +26,7 @@
 #include "common/scummsys.h"
 #include "common/system.h"
 #include "graphics/surface.h"
+#include "sound/mixer_intern.h"
 #include "backends/fs/psp/psp-fs-factory.h"
 
 
@@ -71,7 +72,7 @@
 	SceCtrlData pad;
 
 	Common::SaveFileManager *_savefile;
-	Audio::Mixer *_mixer;
+	Audio::MixerImpl *_mixer;
 	Common::TimerManager *_timer;
 
 public:
@@ -129,10 +130,8 @@
 	virtual void unlockMutex(MutexRef mutex);
 	virtual void deleteMutex(MutexRef mutex);
 
-	typedef void (*SoundProc)(void *param, byte *buf, int len);
-	virtual bool setSoundCallback(SoundProc proc, void *param);
-	virtual void clearSoundCallback();
-	virtual int getOutputSampleRate() const;
+	static void mixCallback(void *sys, byte *samples, int len);
+	virtual void setupMixer(void);
 
 	Common::SaveFileManager *getSavefileManager() { return _savefile; }
 	Audio::Mixer *getMixer() { return _mixer; }

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/sdl/sdl.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/sdl/sdl.cpp	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/sdl/sdl.cpp	2008-07-14 00:10:09 UTC (rev 33051)
@@ -30,7 +30,7 @@
 
 #include "backends/saves/default/default-saves.h"
 #include "backends/timer/default/default-timer.h"
-#include "sound/mixer.h"
+#include "sound/mixer_intern.h"
 
 #include "icons/scummvm.xpm"
 
@@ -131,9 +131,7 @@
 	// Create and hook up the mixer, if none exists yet (we check for this to
 	// allow subclasses to provide their own).
 	if (_mixer == 0) {
-		_mixer = new Audio::Mixer();
-		bool result = setSoundCallback(Audio::Mixer::mixCallback, _mixer);
-		_mixer->setReady(result);
+		setupMixer();
 	}
 
 	// Create and hook up the timer manager, if none exists yet (we check for
@@ -391,7 +389,15 @@
 #pragma mark --- Audio ---
 #pragma mark -
 
-bool OSystem_SDL::setSoundCallback(SoundProc proc, void *param) {
+void OSystem_SDL::mixCallback(void *sys, byte *samples, int len) {
+	OSystem_SDL *this_ = (OSystem_SDL *)sys;
+	assert(this_);
+
+	if (this_->_mixer)
+		this_->_mixer->mixCallback(samples, len);
+}
+
+void OSystem_SDL::setupMixer() {
 	SDL_AudioSpec desired;
 	SDL_AudioSpec obtained;
 
@@ -403,7 +409,7 @@
 		_samplesPerSec = SAMPLES_PER_SEC;
 
 	// Determine the sample buffer size. We want it to store enough data for
-	// about 1/32th of a second. Note that it must be a power of two.
+	// about 1/16th of a second. Note that it must be a power of two.
 	// So e.g. at 22050 Hz, we request a sample buffer size of 2048.
 	int samples = 8192;
 	while (16 * samples >= _samplesPerSec) {
@@ -415,25 +421,32 @@
 	desired.format = AUDIO_S16SYS;
 	desired.channels = 2;
 	desired.samples = (uint16)samples;
-	desired.callback = proc;
-	desired.userdata = param;
+	desired.callback = mixCallback;
+	desired.userdata = this;
+
+	// Create the mixer instance
+	assert(!_mixer);
+	_mixer = new Audio::MixerImpl(this);
+	assert(_mixer);
+
 	if (SDL_OpenAudio(&desired, &obtained) != 0) {
 		warning("Could not open audio device: %s", SDL_GetError());
-		return false;
+		_samplesPerSec = 0;
+		_mixer->setReady(false);
+	} else {
+		// 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;
+		debug(1, "Output sample rate: %d Hz", _samplesPerSec);
+	
+		// Tell the mixer that we are ready and start the sound processing
+		_mixer->setOutputRate(_samplesPerSec);
+		_mixer->setReady(true);
+		SDL_PauseAudio(0);
 	}
-	// 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;
-	debug(1, "Output sample rate: %d Hz", _samplesPerSec);
-	SDL_PauseAudio(0);
-	return true;
 }
 
-int OSystem_SDL::getOutputSampleRate() const {
-	return _samplesPerSec;
-}
-
 Audio::Mixer *OSystem_SDL::getMixer() {
 	assert(_mixer);
 	return _mixer;

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/sdl/sdl.h
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/sdl/sdl.h	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/sdl/sdl.h	2008-07-14 00:10:09 UTC (rev 33051)
@@ -38,7 +38,7 @@
 
 
 namespace Audio {
-	class Mixer;
+	class MixerImpl;
 }
 
 namespace Common {
@@ -134,8 +134,9 @@
 	virtual bool pollEvent(Common::Event &event); // overloaded by CE backend
 
 	// Set function that generates samples
-	typedef void (*SoundProc)(void *param, byte *buf, int len);
-	virtual bool setSoundCallback(SoundProc proc, void *param); // overloaded by CE backend
+	virtual void setupMixer();
+	static void mixCallback(void *s, byte *samples, int len);
+
 	virtual Audio::Mixer *getMixer();
 
 	// Poll CD status
@@ -186,7 +187,6 @@
 
 	virtual void setWindowCaption(const char *caption);
 	virtual bool openCD(int drive);
-	virtual int getOutputSampleRate() const;
 
 	virtual bool hasFeature(Feature f);
 	virtual void setFeatureState(Feature f, bool enable);
@@ -371,7 +371,7 @@
 
 
 	Common::SaveFileManager *_savefile;
-	Audio::Mixer *_mixer;
+	Audio::MixerImpl *_mixer;
 
 	SDL_TimerID _timerID;
 	Common::TimerManager *_timer;

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/symbian/AdaptAllMMPs.pl
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/symbian/AdaptAllMMPs.pl	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/symbian/AdaptAllMMPs.pl	2008-07-14 00:10:09 UTC (rev 33051)
@@ -6,31 +6,37 @@
 
 # list of project files to process
 @mmp_files = (
-	"mmp/scummvm_scumm.mmp",
-	"mmp/scummvm_queen.mmp",
-	"mmp/scummvm_agos.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",
-	"mmp/scummvm_touche.mmp",
-	"mmp/scummvm_parallaction.mmp",
-	"mmp/scummvm_cruise.mmp",
-	"mmp/scummvm_drascula.mmp",
-	"mmp/scummvm_igor.mmp",
+
+	# Engine Project files
+	"mmp/scummvm_agi.mmp", 
+	"mmp/scummvm_agos.mmp", 
+	"mmp/scummvm_cine.mmp", 
+	"mmp/scummvm_cruise.mmp", 
+	"mmp/scummvm_drascula.mmp", 
+	"mmp/scummvm_gob.mmp", 
+	"mmp/scummvm_igor.mmp", 
+	"mmp/scummvm_kyra.mmp", 
+	"mmp/scummvm_lure.mmp", 
+	"mmp/scummvm_m4.mmp",
 	"mmp/scummvm_made.mmp",
-	"mmp/scummvm_m4.mmp",
-	"S60/ScummVM_S60.mmp",
-	"S60v3/ScummVM_S60v3.mmp",
-	"S80/ScummVM_S80.mmp",
+	"mmp/scummvm_parallaction.mmp", 
+	"mmp/scummvm_queen.mmp", 
+	"mmp/scummvm_saga.mmp", 
+	"mmp/scummvm_scumm.mmp", 
+	"mmp/scummvm_sky.mmp", 
+	"mmp/scummvm_sword1.mmp", 
+	"mmp/scummvm_sword2.mmp", 
+	"mmp/scummvm_touche.mmp", 
+
+
+	# Target Platform Project Files
+	"S60/ScummVM_S60.mmp",  
+	"S60v3/ScummVM_S60v3.mmp", 
+	"S80/ScummVM_S80.mmp", 
 	"S90/ScummVM_S90.mmp",
-	"UIQ2/ScummVM_UIQ2.mmp",
-	"UIQ3/ScummVM_UIQ3.mmp"
+	"UIQ2/ScummVM_UIQ2.mmp", 
+	"UIQ3/ScummVM_UIQ3.mmp" 
+
 );
 
 # do this first to set all *.mmp & *.inf files to *.*.in states
@@ -43,7 +49,7 @@
 
 ";
 
-# do this first so we have @DisableDefines for correct inclusion of SOURCE files later
+# do this first so we have @EnabledDefines and @DisabledDefines for correct inclusion of SOURCE files later
 UpdateSlaveMacros();
 
 print "
@@ -53,33 +59,40 @@
 
 ";
 
+
+# some modules.mk files have #ifndef ENABLE_XXXX blocks:
 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
+my @sections_scumm = ("", "ENABLE_SCUMM_7_8", "ENABLE_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",
+my @excludes_snd = ( 
+	"mt32.*",
+	"fluidsynth.cpp",
+	"i386.cpp",
+	"part.*",
 	"synth.cpp",
 	"tables.cpp",
-	"freeverb.cpp"
-);
+	"freeverb.cpp",
+	"rate.*"			# not really needed, USE_ARM_SOUND_ASM currently not parsed correctly,
+						# "rate[_arm|_arm_asm].(cpp|s)" will be added later based on WINS/ARM build!
+						# These #defines for compile time are set in portdefs.h
+); 
 
-my @excludes_graphics = (
-"iff.cpp"
-);
+my @excludes_graphics = ( 
+	"iff.cpp"
+); 
 
+# the USE_ARM_* defines not parsed correctly, exclude manually:
 my @excludes_scumm = (
-	"codec47ARM.cpp",
-	"gfxARM.cpp",
-	"proc3arm.cpp"
+	".*ARM.*",		# the *ARM.s files are added in .mpp files based on WINS/ARM build!
+	# USE_ARM_SMUSH_ASM		codec47ARM.s
+	# USE_ARM_GFX_ASM		gfxARM.s
+	# USE_ARM_COSTUME_ASM	proc3ARM.s			compiled, linked?, but *not* used :P (portdefs.h)
 );
 
-#arseModule(mmpStr,		dirStr,		ifdefArray,		[exclusionsArray])
+
+#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);
@@ -98,14 +111,14 @@
 ParseModule("_sword2",	"sword2",	\@section_empty);
 ParseModule("_lure",	"lure",		\@section_empty);
 ParseModule("_cine",	"cine",		\@section_empty);
-ParseModule("_agi",	"agi",		\@section_empty);
+ParseModule("_agi",		"agi",		\@section_empty);
 ParseModule("_touche",	"touche",	\@section_empty);
 ParseModule("_parallaction","parallaction",\@section_empty);
 ParseModule("_cruise",	"cruise",	\@section_empty);
 ParseModule("_drascula","drascula",	\@section_empty);
 ParseModule("_igor",	"igor",		\@section_empty);
 ParseModule("_made",	"made",		\@section_empty);
-ParseModule("_m4",	"m4",		\@section_empty);
+ParseModule("_m4",		"m4",		\@section_empty);
 print "
 =======================================================================================
 Done. Enjoy :P
@@ -115,7 +128,7 @@
 ##################################################################################################################
 ##################################################################################################################
 
-# parses multiple sections per mmp/module
+# parses multiple sections per mmp/module 
 sub ParseModule
 {
 	my ($mmp,$module,$sections,$exclusions) = @_;
@@ -140,7 +153,7 @@
 	if (-d $item)
 	{
 		#print "$item\n";
-
+		
 		opendir DIR, $item;
 		#my @Files = readdir DIR;
 		my @Files = grep s/^([^\.].*)$/$1/, readdir DIR;
@@ -156,9 +169,10 @@
 	if (-f $item and $item =~ /.*\/module.mk$/)
 	{
 		my $sec = "";
+		my $isenable;
 		my $ObjectsSelected = 0;
 		my $ObjectsTotal = 0;
-
+		
 		print "$item for section '$section' ... ";
 
 		open FILE, $item;
@@ -167,14 +181,24 @@
 
 		my $count = @lines;
 		print "$count lines";
-
+		
 		A: foreach $line (@lines)
 		{
-			# found a section? reset
+			# all things we need are inside #ifdef sections,
+			# there is nothing we need in #ifndef sections: so ignore these for now
+			
+			# found a section? reset 
+			if ($line =~ /^ifdef (.*)/)
+			{
+				$sec = $1;
+				$isenable = 1;
+			}
 			if ($line =~ /^ifndef (.*)/)
 			{
 				$sec = $1;
+				$isenable = 0;
 			}
+
 			# found an object? Not uncommented!
 			if (!($line =~ /^#/) && $line =~ s/\.o/.cpp/)
 			{
@@ -187,27 +211,47 @@
 					$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])";
+							my $reason = "excluded, \@exclusions[$exclusion]";
+							print "\n      ! $line ($reason)";
+							$output .= "//SOURCE $line ($reason)\n";
 							next A;
 						}
 					}
-
-					# do we need to skip this file? According to MACROs in .MMPs
-					foreach $DisableDefine (@DisableDefines)
+					
+					# do we need to do this file? According to MACROs in .MMPs
+					my $found = 0;
+					foreach $EnableDefine (@EnabledDefines)
 					{
-						if ($DisableDefine eq $section && $section ne '')
+						if (($EnableDefine eq $section) && ($section ne ''))
 						{
-							print "\n         !$line (excluded, MACRO $DisableDefine)";
-							next A;
+							$found = 1;
+							last;
 						}
 					}
-
+					foreach $DisableDefine (@DisabledDefines)
+					{
+						if (($DisableDefine eq $section) && ($section ne ''))
+						{
+							$found = 0;
+							last;
+						}
+					}
+					# always allow non-sections
+					$found = 1 if ($section eq '');
+					if (!$found)
+					{
+						my $reason = "excluded, MACRO $section";
+						print "\n         !$line ($reason)";
+						$output .= "//SOURCE $line ($reason)\n";
+						next A;
+					}
+										
 					$ObjectsSelected++;
 					#print "\n         $line";
 					$output .= "SOURCE $line\n";
@@ -230,7 +274,7 @@
 	my $updated = " Updated @ ".localtime();
 	my $name;
 	my @mmp_files_plus_one = @mmp_files;
-	unshift @mmp_files_plus_one, "mmp/scummvm_base.mmp";
+	unshift @mmp_files_plus_one, "mmp/scummvm_base.mmp";	
 
 	foreach $name (@mmp_files_plus_one)
 	{
@@ -239,23 +283,23 @@
 		open FILE, "$file";
 		my @lines = <FILE>;
 		close FILE;
-
+		
 		my $onestr = join("", at 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 = "";
 }
 
@@ -265,7 +309,7 @@
 {
 	my $updated = " Updated @ ".localtime();
 
-	my $name = "mmp/scummvm_base.mmp";
+	my $name = "mmp/scummvm_base.mmp";	
 	my $file = "$buildDir/$name";
 	print "Reading master MACROS from backends/symbian/$name ... ";
 
@@ -279,7 +323,7 @@
 	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;
@@ -292,32 +336,45 @@
 		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
+				# add an USE_ lib? (these need to be added @ the beginning, before _base)
 				$libs_second .= "STATICLIBRARY	$lib\n" if ($macro =~ /^USE_/);
+
+				# add an ENABLE_ lib? (these need to be added @ the end, after _base)
+				if ($macro =~ /^ENABLE_/)
+				{
+					$libs_first .= "STATICLIBRARY	$lib\n";
+					
+					# add projects for BLD.INF's
+					my $projectname = substr("$lib",0,-4);
+					$projects .= "..\\mmp\\$projectname.mmp\n";
+				}
 			}
 			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_/);
+				# skip lines not beginning with "MACRO" (like "//MACRO")
 			}
 			$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()!!
+			if ($macro =~ /^ENABLE_/)
+			{
+				push @EnabledDefines, $macro; # used in CheckForModuleMK()!!
+			}
+			elsif ($macro =~ /^DISABLE_/)
+			{
+				push @DisabledDefines, $macro; # used in CheckForModuleMK()!!
+			}
 		}
-	}
+	}		
 
 	print "$macro_counter macro lines.\n";
 
@@ -328,23 +385,23 @@
 	$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("", at 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;
@@ -358,13 +415,13 @@
 
 			open FILE, "$fileBLDINF";	@lines = <FILE>; close FILE;
 			$onestr = join("", at lines);
-
+		
 			$onestr =~ s/$p.*$q/$p$updated$projects$q/s;
-
+			
 			open FILE, ">$fileBLDINF"; print FILE $onestr; close FILE;
 		}
 	}
-}
+}		
 
 ##################################################################################################################
 
@@ -372,10 +429,10 @@
 {
 	my $onestr, @lines;
 	my @mmp_files_plus_one = @mmp_files;
-#	unshift @mmp_files_plus_one, "mmp/scummvm_base.mmp";
-
+#	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)
 	{
@@ -395,7 +452,7 @@
 			$onestr = join("", at lines);
 			open FILE, ">$fileBLDINF"; print FILE $onestr; close FILE;
 		}
-	}
+	}	
 
 	print "... done.\n";
 }

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/symbian/BuildPackageUpload_AllVersions.pl
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/symbian/BuildPackageUpload_AllVersions.pl	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/symbian/BuildPackageUpload_AllVersions.pl	2008-07-14 00:10:09 UTC (rev 33051)
@@ -8,6 +8,7 @@
 ##################################################################################################################
 # prep some vars
 
+# the dir containing the build files: '.\backends\platforms\symbian\$SDK_BuildDir\'
 $SDK_BuildDirs{'UIQ2'}	= "UIQ2";
 $SDK_BuildDirs{'UIQ3'}	= "UIQ3";
 $SDK_BuildDirs{'S60v1'}	= "S60";
@@ -16,6 +17,7 @@
 $SDK_BuildDirs{'S80'}	= "S80";
 $SDK_BuildDirs{'S90'}	= "S90";
 
+# the target name inserted here: 'abld BUILD $SDK_TargetName UREL' 
 $SDK_TargetName{'UIQ2'}	= "armi";
 $SDK_TargetName{'UIQ3'}	= "gcce";
 $SDK_TargetName{'S60v1'}= "armi";
@@ -24,6 +26,7 @@
 $SDK_TargetName{'S80'}	= "armi";
 $SDK_TargetName{'S90'}	= "armi";
 
+# Binaries are installed here: '$SDK_RootDirs\epoc32\release\$SDK_TargetDir\urel\'
 $SDK_TargetDir{'UIQ2'}	= "armi";
 $SDK_TargetDir{'UIQ3'}	= "armv5";
 $SDK_TargetDir{'S60v1'}	= "armi";
@@ -34,11 +37,11 @@
 
 $build_dir = getcwd();
 $output_dir = "$build_dir/Packages";
-chdir("../../");
+chdir("../../../");
 $base_dir = getcwd();
 chdir($build_dir);
-$build_log_out = "$build_dir/Build.out.log";
-$build_log_err = "$build_dir/Build.err.log";
+$build_log_out = "$build_dir/out.build.out.log"; # don't start these files with "Build"
+$build_log_err = "$build_dir/out.build.err.log"; # so "B"+TAB completion works in 1 go :P
 
 $initial_path = $ENV{'PATH'}; # so we can start with a fresh PATH for each Build
 
@@ -54,14 +57,27 @@
 @ErrorMessages = ();
 $ftp_url = "FTP://$FTP_User\@$FTP_Host/$FTP_Dir/";
 
-$ExtraMacros =  "MACRO			NONSTANDARD_PORT\n";
-$ExtraMacros .= "MACRO			DISABLE_FANCY_THEMES\n";
+# these macros are always defined:
+$ExtraMacros =  "MACRO		NONSTANDARD_PORT\n";
+$ExtraMacros .= "MACRO		DISABLE_FANCY_THEMES\n";
+$ExtraMacros .= "MACRO		DISABLE_SCALERS\n";
+$ExtraMacros .= "MACRO		DISABLE_HQ_SCALERS\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";
+	# see if it exists!
+	if (-d $SDK_RootDirs{$SDK})
+	{
+		$SDKs .= "$SDK\t$SDK_RootDirs{$SDK}\n\t\t\t";
+	}
+	else # missing?
+	{
+		$SDKs .= "$SDK\t$SDK_RootDirs{$SDK}\t[MISSING: Skipping!]\n\t\t\t";
+		# remove it from array, to prevent building!
+		delete $SDK_RootDirs{$SDK};
+	}
 }
 
 # prep nice list of Libraries
@@ -69,7 +85,16 @@
 {
 	while( ($Library, $Path) = each(%{$SDK_LibraryDirs{$SDK}}) )
 	{
-		$PresentLibs{$Library} = $Path;
+		# maybe it's already been built?
+		if (-e $SDK_RootDirs{$SDK}."\\epoc32\\release\\$SDK_TargetDir{$SDK}\\urel\\$Library")
+		{
+			$PresentLibs{$Library} = "$Path  [EXISTS: Skipping!]";
+			delete $SDK_LibraryDirs{$SDK}{$Library};
+		}
+		else # make it!
+		{
+			$PresentLibs{$Library} = "$Path";
+		}
 	}
 }
 foreach $Library (sort keys(%PresentLibs))
@@ -78,10 +103,37 @@
 }
 
 # prep nice list of Variations
-while( ($SDK, $Value) = each(%SDK_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++;
+#			}
+#		}
+#	}
+#}
+while( ($SDK, $Value) = each(%VariationSets) )
 {
-	while( ($Variation, $Value2) = each(%{$SDK_Variations{$SDK}}) )
+	while( ($Variation, $FeaturesBlock) = each(%{$VariationSets{$SDK}}) )
 	{
+#my $MacroBlock = &MakeMppMacroDefs($FeaturesBlock);
 		$Extra = ($Variation ne '' ? "_$Variation" : "");
 		if ($SDK eq "ALL")
 		{
@@ -92,7 +144,7 @@
 					push @Packages, sprintf($file_tpl_sis, $version_tpl_sis, $SDK2, $Extra);
 					$PackagesQueued++;
 				}
-			}
+			}	
 		}
 		else
 		{
@@ -118,7 +170,7 @@
 
 	SDKs inst'd  \t$SDKs	".(	%SDK_LibraryDirs ? "
 	LIBs inst'd  \t$LIBs	" : "" )."
-	$PackagesQueued Variations \t$PackagesStr
+	$PackagesQueued Variations \t$PackagesStr	
 	DIR base     \t$base_dir
 	    build    \t$build_dir
 	    output   \t$output_dir
@@ -126,7 +178,7 @@
 	FTP host     \t$FTP_Host
 	    user     \t$FTP_User
 	    pass     \t"."*" x length($FTP_Pass)."
-	    dir      \t$FTP_Dir
+	    dir      \t$FTP_Dir	
 " : "" )."
 =======================================================================================
 Press Ctrl-C to abort or enter to continue Build, Package & Upload $PackagesQueued Variations...
@@ -142,7 +194,7 @@
 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 $name = "mmp/scummvm_base.mmp";	
 my $file  = "$build_dir/$name";
 open FILE, "$file.in";	@lines = <FILE>; close FILE;
 my $onestr = join("", at lines);
@@ -161,15 +213,21 @@
 			{
 				if ($SDK_RootDirs{$SDK2} ne '') # is this SDK listed as installed? (fails silently)
 				{
+					# do we already have this one?
+					next if (-e $SDK_RootDirs{$SDK2}."\\epoc32\\release\\$SDK_TargetDir{$SDK2}\\urel\\$Library");
+
 					$LibrariesQueued++;
 					DoLibrary($SDK2, $Library, $Path);
 				}
-			}
+			}	
 		}
 		else
 		{
 			if ($SDK_RootDirs{$SDK} ne '') # is this SDK listed as installed? (fails silently)
 			{
+				# do we already have this one?
+				next if (-e $SDK_RootDirs{$SDK}."\\epoc32\\release\\$SDK_TargetDir{$SDK}\\urel\\$Library");
+
 				$LibrariesQueued++;
 				DoLibrary($SDK, $Library, $Path);
 			}
@@ -194,8 +252,33 @@
 				{
 					DoVariation($SDK2, $Variation, $MacroBlock);
 				}
+			}	
+		}
+		else
+		{
+			if ($SDK_RootDirs{$SDK} ne '')
+			{
+				DoVariation($SDK, $Variation, $MacroBlock);
 			}
 		}
+	}
+}
+
+while( ($SDK, $VariationsHash) = each(%VariationSets) )
+{
+	while( ($Variation, $FeaturesBlock) = each(%{$VariationSets{$SDK}}) )
+	{
+		my $MacroBlock = &MakeMppMacroDefs($FeaturesBlock);
+		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 '')
@@ -248,7 +331,81 @@
 ##################################################################################################################
 ##################################################################################################################
 
-# Build, Package & Upload a single Variation
+# create a set of "MACRO xxx" definitions for use in the scummvm_base.mpp file
+sub MakeMppMacroDefs
+{
+	my ($features) = @_;
+	
+	my %EnabledFeatures = ();
+	foreach (split(/\W|\r|\n/, $features))
+	{
+		if ($_ ne "")
+		{
+			#print "FEATURE: $_\n";
+			$EnabledFeatures{$_} = 1;
+		}
+	}
+
+	my $MacroDefs = "";
+
+	$MacroDefs .= "	// Features //\n";
+	foreach my $e (sort keys %UseableFeatures)
+	{
+		my $E = uc($e);
+		if ($EnabledFeatures{$e})
+		{
+			$MacroDefs .= "MACRO		USE_$E			// LIB:$UseableFeatures{$e}\n";
+			# this one is used: remove it now
+			delete $EnabledFeatures{$e};
+			# this will leave us with a list of unparsed options!
+		}
+		else
+		{
+			$MacroDefs .= "//MACRO		USE_$E\n";
+		}
+	}
+
+	$MacroDefs .= "	// Engines //\n";
+	foreach my $e (sort @EnablableEngines)
+	{
+		my $E = uc($e);
+		if ($EnabledFeatures{$e})
+		{
+			$MacroDefs .= "MACRO		ENABLE_$E		// LIB:scummvm_$e.lib\n";
+			# this one is used: remove it now
+			delete $EnabledFeatures{$e};
+			# this will leave us with a list of unparsed options!
+		}
+		else
+		{
+			$MacroDefs .= "//MACRO		ENABLE_$E\n";
+		}
+	}
+
+	$MacroDefs .= "	// SubEngines //\n";
+	foreach my $e (sort @EnablableSubEngines)
+	{
+		my $E = uc($e);
+		if ($EnabledFeatures{$e})
+		{
+			$MacroDefs .= "MACRO		ENABLE_$E\n";
+			# this one is used: remove it now
+			delete $EnabledFeatures{$e};
+			# this will leave us with a list of unparsed options!
+		}
+		else
+		{
+			$MacroDefs .= "//MACRO		ENABLE_$E\n";
+		}
+	}
+	
+#print "\n\n'$features' ==> $MacroDefs\n\n\n";
+	return $MacroDefs;
+}
+
+##################################################################################################################
+
+# Build, Package & Upload a single Variation 
 sub DoLibrary
 {
 	my ($SDK, $Library, $Path) = @_;
@@ -278,19 +435,19 @@
 	my $OK = 1;
 
 	PrepSdkPaths($SDK);
-
+	
 	chdir($Path) or $OK=0;
 	PrintErrorMessage("Changing to $Path failed!") if (!$OK);
-	return 0 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);
+	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);
@@ -298,18 +455,18 @@
 
 	my $OldSize = (-s $build_log_err);
 	$Redirection = ($RedirectSTDERR ? "2>> $build_log_err" : "");
-	system("abld build $TargetName urel $Redirection >> $build_log_out");
+	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
+	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");
@@ -318,9 +475,9 @@
 	}
 	else
 	{
-		PrintErrorMessage("'abld build $TargetName urel' apparently failed.");
+		PrintErrorMessage("'abld BUILD $TargetName UREL' apparently failed.");
 		if ($HaltOnError)
-		{
+ 		{
 			PrintErrorMessage("Halting on error as requested!");
 			exit 1;
 		}
@@ -330,12 +487,12 @@
 
 ##################################################################################################################
 
-# Build, Package & Upload a single Variation
+# 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);
+	my $Package = sprintf($file_tpl_sis, $version_tpl_sis, $SDK, $Extra);	
 
 	if ($SkipExistingPackages && -f "$output_dir/$Package")
 	{
@@ -366,7 +523,7 @@
 	if ($OK)
 	{
 		$OK = BuildVariation($SDK, $Variation, $Package, $MacroBlock);
-
+	
 		if ($OK && $FTP_Host ne '')
 		{
 			UploadVariation($SDK, $Variation, $Package);
@@ -382,17 +539,17 @@
 	my $OK = 1;
 
 	PrepSdkPaths($SDK);
-
+	
 	chdir($build_dir) or $OK=0;
 	PrintErrorMessage("Changing to $build_dir failed!") if (!$OK);
-	return 0 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 $name = "scummvm_base.mmp";	
 	my $file = "$build_dir/mmp/$name";
 	my $updated = " Updated @ ".localtime();
 
@@ -401,11 +558,11 @@
 	return 0 if (!$OK);
 	my @lines = <FILE>;
 	close FILE;
-
+	
 	my $onestr = join("", at 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);
@@ -418,7 +575,7 @@
 	$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;
 }
@@ -431,7 +588,7 @@
 	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);
@@ -449,13 +606,15 @@
 	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"); }
+	# remove all libs here, note they are in another dir!
+	system("del ".$SDK_RootDirs{$SDK}."/epoc32/release/$TargetName/urel/scummvm_*.lib");
 
 	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);
-
+	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);
@@ -463,11 +622,11 @@
 
 	my $OldSize = (-s $build_log_err);
 	$Redirection = ($RedirectSTDERR ? "2>> $build_log_err" : "");
-	system("abld build $TargetName urel $Redirection >> $build_log_out");
+	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
+	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?
@@ -491,7 +650,7 @@
 	if (-e "$output_dir/$Package")
 	{
 		$PackagesCreated++;
-
+		
 		if ($TargetIntermediatePath ne '' && $TargetIntermediatePath =~ /\\EPOC32\\BUILD\\/i) # make really sure it's a valid path!
 		{
 			#PrintMessage("Cleaning $TargetIntermediatePath");
@@ -514,7 +673,7 @@
 
 	use Net::FTP;
 	my $newerr;
-
+	
 	PrintMessage("Connecting to FTP $FTP_Host") if (!$ReallyQuiet);
 
 	$ftp = Net::FTP->new($FTP_Host,Timeout=>240) or $newerr=1;
@@ -529,7 +688,7 @@
 			{
 				PrintMessage("Changing to dir $FTP_Dir");
 				$ftp->cwd($FTP_Dir) or $newerr=1;
-
+				
 				if ($newerr)
 				{
 					PrintErrorMessage("Changing to dir $FTP_Dir! Aborting!");
@@ -541,20 +700,20 @@
 # 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";
+#			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;
+		$ftp->quit;	
 	}
 }
 
@@ -574,6 +733,7 @@
 
 	# set env stuff
 	PrintMessage("Prepending $SDK specific paths to %PATH%") if (!$ReallyQuiet);
+	$AdditionalPathEntries .= "$SDK_ToolchainDirs{$SDK};" if ($SDK_ToolchainDirs{$SDK} ne '');
 	$AdditionalPathEntries .= "$ECompXL_BinDir;" if ($ECompXL_BinDir ne '' && $SDK eq 'UIQ2');
 	$AdditionalPathEntries .= "$EPOC32RT\\include;";
 	$AdditionalPathEntries .= "$EPOC32RT\\tools;";
@@ -594,7 +754,7 @@
 	{
 		$path =~ s/\"\Q$ECompXL_BinDir\E\";//g;
 	}
-
+	
 	while( ($SDK, $RootDir) = each(%SDK_RootDirs) )
 	{
 		if ($SDK_RootDirs{$SDK} ne '')
@@ -602,8 +762,8 @@
 			my $path_component = "\"".$SDK_RootDirs{$SDK}."\\epoc32\\";
 			$path =~ s/\Q$path_component\E.*?\";//g;
 		}
-	}
-
+	}	
+	
 	return $path;
 }
 
@@ -634,4 +794,5 @@
 }
 
 ##################################################################################################################
+ 
 

Modified: scummvm/branches/gsoc2008-rtl/backends/platform/symbian/BuildPackageUpload_LocalSettings.pl
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/platform/symbian/BuildPackageUpload_LocalSettings.pl	2008-07-13 22:49:05 UTC (rev 33050)
+++ scummvm/branches/gsoc2008-rtl/backends/platform/symbian/BuildPackageUpload_LocalSettings.pl	2008-07-14 00:10:09 UTC (rev 33051)
@@ -1,75 +1,119 @@
 
 ##################################################################################################################
 
-	# 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
-	";
+	@WorkingEngines = qw(
+		scumm agos sky queen gob saga 
+		kyra lure agi 
+	);
+	@TestingEngines = qw(
+		cine cruise touche parallaction 
+		drascula igor made m4
+	);
+	@BrokenEngines = qw(
+		sword1
+		sword2
+	);
 
-	$DefaultBottomMacros = "
-		MACRO			DISABLE_SWORD1		// LIB:scummvm_sword1.lib
-		MACRO			DISABLE_SWORD2		// LIB:scummvm_sword2.lib
-	";
+	@EnablableEngines = (@WorkingEngines, @TestingEngines);
 
+	@EnablableSubEngines = qw(
+		scumm_7_8
+		he
+	);
+
+	%UseableFeatures = (
+		'zlib'		=> 'zlib.lib', 
+		'mad'		=> 'libmad.lib', 
+		'tremor'	=> 'libtremor.lib',
+		'mpeg2'		=> 'libmpeg2.lib'
+	);
+	
+	# these are normally enabled for each variation
+	$DefaultFeatures = qw(zlib tremor);
+	#$DefaultFeatures = qw(zlib mad tremor);
+
+	
+														# 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
+														";
+													
+##################################################################################################################
 	##
-	## General system information:
+	## General system information, based on $COMPUTERNAME, so this way
+	## you can use the same LocalSettings.pl file on multiple machines!
 	##
+##################################################################################################################
 
-	# this way you can use the same LocalSettings.pl file on multiple machines!
-	if ($ENV{'COMPUTERNAME'} eq "BRAAMBOOK")
+	if ($ENV{'COMPUTERNAME'} eq "PC-21") #########################################################################
 	{
 		# might use this string for file/dir naming in the future :)
 		$Producer = "SumthinWicked";
 		$RedirectSTDERR = 0;
-		$HaltOnError = 1;
+		$HaltOnError = 0;
 		$SkipExistingPackages = 0;
 		$ReallyQuiet = 0;
-
+		$DevBase = "C:\\S";
+		
 		# specify an optional FTP server to upload to after each Build+Package (can leave empty)
-		#$FTP_Host = "host.domain";
-		#$FTP_User = "test";
-		#$FTP_Pass = "test";
-		#$FTP_Dir  = "test";
-
 		#$FTP_Host = "host.com";
 		$FTP_User = "something";
 		$FTP_Pass = "password";
 		$FTP_Dir  = "cvsbuilds";
-
+	
+		# What Platform SDKs are installed on this machine?
 		# 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!
+	#	$SDK_RootDirs{'UIQ2'}	= "$DevBase\\UIQ_21";
+		$SDK_RootDirs{'UIQ3'}	= "$DevBase\\UIQ3";
+	#	$SDK_RootDirs{'S60v1'}	= "$DevBase\\S60v1";
+	#	$SDK_RootDirs{'S60v2'}	= "$DevBase\\S60v2";
+		$SDK_RootDirs{'S60v3'}	= "$DevBase\\S60v3";
+	#	$SDK_RootDirs{'S80'}	= "$DevBase\\S80";
+	#	$SDK_RootDirs{'S90'}	= "$DevBase\\S90";
 
+		$SDK_ToolchainDirs{'S60v3'} = "$DevBase\\arm-symbianelf\\bin";
+		$SDK_ToolchainDirs{'UIQ2'}	= "$DevBase\\ECompXL\\bin"; # only needed for UIQ2/UIQ3
+		$SDK_ToolchainDirs{'UIQ3'}	= "$DevBase\\ECompXL\\bin"; # only needed for UIQ2/UIQ3
+
 		# 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";
+			## Standard libraries
+			$SDK_LibraryDirs{'ALL'}{'zlib.lib'}		= "$DevBase\\zlib-1.2.2\\epoc";
+			#$SDK_LibraryDirs{'ALL'}{'libmad.lib'}	= "$DevBase\\libmad-0.15.1b\\group";
+			$SDK_LibraryDirs{'ALL'}{'libtremor.lib'}= "$DevBase\\tremor\\epoc";
+			
+			## SDL 1.2.12 / AnotherGuest / Symbian version
+			my $SdlBase = "$DevBase\\SDL-1.2.12-ag\\Symbian";
+			#$SDK_LibraryDirs{'S60v1'}{'esdl.lib'}	= "$SdlBase\\S60"; // unsupported? 
+			#$SDK_LibraryDirs{'S60v2'}{'esdl.lib'}	= "$SdlBase\\S60v2";
+			$SDK_LibraryDirs{'S60v3'}{'esdl.lib'}	= "$SdlBase\\S60v3";
+			#$SDK_LibraryDirs{'S80'}{'esdl.lib'}	= "$SdlBase\\S80";
+			#$SDK_LibraryDirs{'S90'}{'esdl.lib'}	= "$SdlBase\\S90";
+			#$SDK_LibraryDirs{'UIQ2'}{'esdl.lib'}	= "$SdlBase\\UIQ2"
+			#$SDK_LibraryDirs{'UIQ3'}{'esdl.lib'}	= "$SdlBase\\UIQ3";
+
+			## HardlySupported(TM) :P
+			#$SDK_LibraryDirs{'ALL'}{'libmpeg2.lib'} = "$DevBase\\mpeg2dec-0.4.0\\epoc";
 		}
+		
+		# now you can add $VariationSets only built on this PC below this line :)
 
-		# 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"
+		#$VariationSets{'ALL'}{'scumm'} = "$DefaultFeatures scumm scumm_7_8 he";
+		#$VariationSets{'ALL'}{'all'} = "$DefaultFeatures @WorkingEngines @EnablableSubEngines";
+
 	}
-	elsif ($ENV{'COMPUTERNAME'} eq "TSSLND0106")
+	elsif ($ENV{'COMPUTERNAME'} eq "TSSLND0106") #################################################################
 	{
 		$Producer = "AnotherGuest";
 		$RedirectSTDERR = 1;
@@ -90,7 +134,7 @@
 		#$SDK_RootDirs{'S80'}= "C:\\S80";
 		#$SDK_RootDirs{'S90'}= "C:\\S90";
 		$ECompXL_BinDir= "C:\\ECompXL\\";
-if (0) # so we can turn them on/off easily
+		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";
@@ -101,9 +145,11 @@
 #			$SDK_LibraryDirs{'S90'}{'esdl.lib'}		= "C:\\S\\ESDL\\epoc\\S90";
 			#$SDK_LibraryDirs{'ALL'}{'libmpeg2.lib'} = "C:\\S\\mpeg2dec-0.4.0\\epoc";
 		}
-		# now you can add $SDK_Variations only built on this PC here :)
+
+		# now you can add $VariationSets only built on this PC below this line :)
+
 	}
-elsif ($ENV{'COMPUTERNAME'} eq "BIGMACHINE")
+	elsif ($ENV{'COMPUTERNAME'} eq "BIGMACHINE") #################################################################
 	{
 		$Producer = "AnotherGuest";
 		$RedirectSTDERR = 1;
@@ -116,15 +162,15 @@
 		#$FTP_Pass = "password";
 		#$FTP_Dir  = "cvsbuilds";
 
-		#$SDK_RootDirs{'UIQ2'}= "E:\\UIQ2";
-		$SDK_RootDirs{'UIQ3'}= "E:\\UIQ3";
-		#$SDK_RootDirs{'S60v1'}= "E:\\S60v1";
-		#$SDK_RootDirs{'S60v2'}= "E:\\S60v2";
-		$SDK_RootDirs{'S60v3'}= "E:\\S60v3";
-		#$SDK_RootDirs{'S80'}= "E:\\S80";
-		#$SDK_RootDirs{'S90'}= "E:\\S90";
-		$ECompXL_BinDir= "E:\\ECompXL\\";
-if (0) # so we can turn them on/off easily
+		#$SDK_RootDirs{'UIQ2'}= "D:\\UIQ2";
+		$SDK_RootDirs{'UIQ3'}= "D:\\UIQ3";
+		#$SDK_RootDirs{'S60v1'}= "D:\\S60v1";
+		#$SDK_RootDirs{'S60v2'}= "D:\\S60v2";
+		$SDK_RootDirs{'S60v3'}= "D:\\S60v3";
+		#$SDK_RootDirs{'S80'}= "D:\\S80";
+		#$SDK_RootDirs{'S90'}= "D:\\S90";
+		$ECompXL_BinDir= "D:\\ECompXL\\";
+		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";
@@ -137,28 +183,32 @@
 			$SDK_LibraryDirs{'UIQ3'}{'esdl.lib'}		= "E:\\WICKED\\ESDL\\epoc\\UIQ\\UIQ3";
 			#$SDK_LibraryDirs{'ALL'}{'libmpeg2.lib'} = "C:\\S\\mpeg2dec-0.4.0\\epoc";
 		}
-		# now you can add $SDK_Variations only built on this PC here :)
+
+		# now you can add $VariationSets only built on this PC below this line :)
+
 	}
-	else
+	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:
+	# $VariationSets{'UIQ2'}{''} would produce:
 	#   scummvm-051101-SymbianUIQ2.sis
 
-	# $SDK_Variations{'S60v2'}{'agos'} would produce:
+	# $VariationSets{'S60v2'}{'agos'} would produce:
 	#   scummvm-051101-SymbianS60v2_agos.sis
 
-	# $SDK_Variations{'ALL'}{'queen'} with all $SDK_RootDirs defined would produce:
+	# $VariationSets{'ALL'}{'queen'} with all $SDK_RootDirs defined would produce:
 	#   scummvm-051101-SymbianUIQ2_queen.sis
 	#   scummvm-051101-SymbianUIQ3_queen.sis
 	#   scummvm-051101-SymbianS60v1_queen.sis
@@ -167,362 +217,48 @@
 	#   scummvm-051101-SymbianS80_queen.sis
 	#   scummvm-051101-SymbianS90_queen.sis
 
-	#$SDK_Variations{'ALL'}{'test'} = "$DefaultTopMacro
-	#	//MACRO			USE_TREMOR			// LIB:libtremor.lib
-	#	//MACRO			DISABLE_SCUMM		// LIB:scummvm_scumm.lib
-	#	//MACRO			DISABLE_AGOS		// LIB:scummvm_agos.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 (1) # all regular combo's
-{
-	# the first one includes all SDKs & release-ready engines
-
-	$SDK_Variations{'ALL'}{'all'} = "$DefaultTopMacros
-		//MACRO			DISABLE_SCUMM		// LIB:scummvm_scumm.lib
-		//MACRO			DISABLE_AGOS		// LIB:scummvm_agos.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_AGI		// LIB:scummvm_agi.lib
-		//MACRO			DISABLE_TOUCHE		// LIB:scummvm_touche.lib
-		//MACRO			DISABLE_CINE		// LIB:scummvm_cine.lib
-		//MACRO			DISABLE_PARALLACTION	// LIB:scummvm_parallaction.lib
-		//MACRO			DISABLE_DRASCULA	// LIB:scummvm_drascula.lib
+	# NOTE: empty $VariationSets{''} string instead of 'ALL' = easy way to disable pkg!
 	
-		//MACRO			DISABLE_LURE		// LIB:scummvm_lure.lib
-		//MACRO			DISABLE_CRUISE		// LIB:scummvm_cruise.lib
-		//MACRO			DISABLE_IGOR		// LIB:scummvm_igor.lib
-		//MACRO			DISABLE_MADE		// LIB:scummvm_made.lib
-		//MACRO			DISABLE_M4		// LIB:scummvm_m4.lib
-	$DefaultBottomMacros";
+	if (1) # all regular combo's
+	{
+		# the first one includes all SDKs & release-ready engines
+	
+			$VariationSets{'ALL'}{'all'} = "$DefaultFeatures @WorkingEngines @EnablableSubEngines";
+	
+		# now one for each ready-for-release engine
+	
+			foreach (@WorkingEngines)
+			{
+				$VariationSets{'ALL'}{$_} = "$DefaultFeatures $_";
+			}
+			# for scumm, we need to add 2 features:
+			$VariationSets{'ALL'}{'scumm'} .= " scumm_7_8 he";
+	
+		# now one for each not-ready-for-release-or-testing engine
+	
+			foreach (@TestingEngines)
+			{
+				$VariationSets{'ALL'}{"test_$_"} = "$DefaultFeatures $_";
+			}
+	
+		# below here you could specify weird & experimental combinations, non-ready engines
+	
+			# a small version of the saga engine, because it is so big (no tremor,mad,zlib)
+			$VariationSets{'ALL'}{'saga_mini'} = "saga";
+		
+			# a smaller version of scumm without support for v7, v8 and HE games
+			$VariationSets{'ALL'}{'scumm_no78he'} = "$DefaultFeatures scumm";
+	
+			# maybe you feel lucky and want to test the sword engines? :P
+			#$VariationSets{'S60v2'}{'test_sword'} = "$DefaultFeatures mpeg2 sword1 sword2";
+			#$VariationSets{'UIQ2'}{'test_sword'}  = "$DefaultFeatures mpeg2 sword1 sword2";
+	
+			# for mega-fast-testing only plz! Warning: contains to engines!
+			#$VariationSets{'ALL'}{'fast_empty'} = "";
+	
+	} # end quick-n-fast if (1|0)
 
-	# now one for each ready-for-release engine
 
-	$SDK_Variations{'ALL'}{'scumm'} = "$DefaultTopMacros
-		//MACRO			DISABLE_SCUMM		// LIB:scummvm_scumm.lib
-		MACRO			DISABLE_AGOS		// LIB:scummvm_agos.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_LURE		// LIB:scummvm_lure.lib
-		MACRO			DISABLE_CINE		// LIB:scummvm_cine.lib
-		MACRO			DISABLE_TOUCHE		// LIB:scummvm_touche.lib
-		MACRO			DISABLE_PARALLACTION	// LIB:scummvm_parallaction.lib
-		MACRO			DISABLE_DRASCULA	// LIB:scummvm_drascula.lib	
-		MACRO			DISABLE_AGI		// LIB:scummvm_agi.lib
-		MACRO			DISABLE_CRUISE		// LIB:scummvm_cruise.lib
-		MACRO			DISABLE_IGOR		// LIB:scummvm_igor.lib
-		MACRO			DISABLE_MADE		// LIB:scummvm_made.lib
-		MACRO			DISABLE_M4		// LIB:scummvm_m4.lib
-	$DefaultBottomMacros";
-
-	$SDK_Variations{'ALL'}{'agos'} = "$DefaultTopMacros
-		MACRO			DISABLE_SCUMM		// LIB:scummvm_scumm.lib
-		//MACRO			DISABLE_AGOS		// LIB:scummvm_agos.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_LURE		// LIB:scummvm_lure.lib
-		MACRO			DISABLE_CINE		// LIB:scummvm_cine.lib
-		MACRO			DISABLE_TOUCHE		// LIB:scummvm_touche.lib
-		MACRO			DISABLE_PARALLACTION	// LIB:scummvm_parallaction.lib
-		MACRO			DISABLE_DRASCULA	// LIB:scummvm_drascula.lib	
-		MACRO			DISABLE_AGI		// LIB:scummvm_agi.lib
-		MACRO			DISABLE_CRUISE		// LIB:scummvm_cruise.lib
-		MACRO			DISABLE_IGOR		// LIB:scummvm_igor.lib
-		MACRO			DISABLE_MADE		// LIB:scummvm_made.lib
-		MACRO			DISABLE_M4		// LIB:scummvm_m4.lib
-	$DefaultBottomMacros";
-
-	$SDK_Variations{'ALL'}{'sky'} = "$DefaultTopMacros
-		MACRO			DISABLE_SCUMM		// LIB:scummvm_scumm.lib
-		MACRO			DISABLE_AGOS		// LIB:scummvm_agos.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_LURE		// LIB:scummvm_lure.lib
-		MACRO			DISABLE_CINE		// LIB:scummvm_cine.lib
-		MACRO			DISABLE_TOUCHE		// LIB:scummvm_touche.lib
-		MACRO			DISABLE_PARALLACTION	// LIB:scummvm_parallaction.lib
-		MACRO			DISABLE_DRASCULA	// LIB:scummvm_drascula.lib	
-		MACRO			DISABLE_AGI		// LIB:scummvm_agi.lib
-		MACRO			DISABLE_CRUISE		// LIB:scummvm_cruise.lib
-		MACRO			DISABLE_IGOR		// LIB:scummvm_igor.lib
-		MACRO			DISABLE_MADE		// LIB:scummvm_made.lib
-		MACRO			DISABLE_M4		// LIB:scummvm_m4.lib
-	$DefaultBottomMacros";
-
-	$SDK_Variations{'ALL'}{'queen'} = "$DefaultTopMacros
-		MACRO			DISABLE_SCUMM		// LIB:scummvm_scumm.lib
-		MACRO			DISABLE_AGOS		// LIB:scummvm_agos.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_AGI		// LIB:scummvm_agi.lib
-		MACRO			DISABLE_LURE		// LIB:scummvm_lure.lib
-		MACRO			DISABLE_CINE		// LIB:scummvm_cine.lib
-		MACRO			DISABLE_CRUISE		// LIB:scummvm_cruise.lib
-         	MACRO			DISABLE_TOUCHE		// LIB:scummvm_touche.lib
-		MACRO			DISABLE_PARALLACTION	// LIB:scummvm_parallaction.lib
-		MACRO			DISABLE_DRASCULA	// LIB:scummvm_drascula.lib		 
-		MACRO			DISABLE_IGOR		// LIB:scummvm_igor.lib
-		MACRO			DISABLE_MADE		// LIB:scummvm_made.lib
-		MACRO			DISABLE_M4		// LIB:scummvm_m4.lib
-	$DefaultBottomMacros";
-
-	$SDK_Variations{'ALL'}{'gob'} = "$DefaultTopMacros
-		MACRO			DISABLE_SCUMM		// LIB:scummvm_scumm.lib
-		MACRO			DISABLE_AGOS		// LIB:scummvm_agos.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_AGI			// LIB:scummvm_agi.lib
-		MACRO			DISABLE_LURE		// LIB:scummvm_lure.lib
-		MACRO			DISABLE_CINE		// LIB:scummvm_cine.lib
-         	MACRO			DISABLE_TOUCHE		// LIB:scummvm_touche.lib
-		MACRO			DISABLE_PARALLACTION	// LIB:scummvm_parallaction.lib
-		MACRO			DISABLE_DRASCULA	// LIB:scummvm_drascula.lib		  
-		MACRO			DISABLE_CRUISE		// LIB:scummvm_cruise.lib
-		MACRO			DISABLE_IGOR		// LIB:scummvm_igor.lib
-		MACRO			DISABLE_MADE		// LIB:scummvm_made.lib
-		MACRO			DISABLE_M4		// LIB:scummvm_m4.lib
-	$DefaultBottomMacros";
-
-	$SDK_Variations{'ALL'}{'saga'} = "$DefaultTopMacros
-		MACRO			DISABLE_SCUMM		// LIB:scummvm_scumm.lib
-		MACRO			DISABLE_AGOS		// LIB:scummvm_agos.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_LURE		// LIB:scummvm_lure.lib
-		MACRO			DISABLE_CINE		// LIB:scummvm_cine.lib
-         	MACRO			DISABLE_TOUCHE		// LIB:scummvm_touche.lib
-		MACRO			DISABLE_PARALLACTION	// LIB:scummvm_parallaction.lib
-		MACRO			DISABLE_DRASCULA	// LIB:scummvm_drascula.lib		  
-		MACRO			DISABLE_AGI		// LIB:scummvm_agi.lib
-		MACRO			DISABLE_CRUISE		// LIB:scummvm_cruise.lib
-		MACRO			DISABLE_IGOR		// LIB:scummvm_igor.lib
-		MACRO			DISABLE_MADE		// LIB:scummvm_made.lib
-		MACRO			DISABLE_M4		// LIB:scummvm_m4.lib
-	$DefaultBottomMacros";
-
-	$SDK_Variations{'ALL'}{'kyra'} = "$DefaultTopMacros
-		MACRO			DISABLE_SCUMM		// LIB:scummvm_scumm.lib
-		MACRO			DISABLE_AGOS		// LIB:scummvm_agos.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_AGI			// LIB:scummvm_agi.lib
-		MACRO			DISABLE_LURE		// LIB:scummvm_lure.lib
-		MACRO			DISABLE_CINE		// LIB:scummvm_cine.lib
-         	MACRO			DISABLE_TOUCHE		// LIB:scummvm_touche.lib
-		MACRO			DISABLE_PARALLACTION	// LIB:scummvm_parallaction.lib
-		MACRO			DISABLE_DRASCULA	// LIB:scummvm_drascula.lib		  
-		MACRO			DISABLE_CRUISE		// LIB:scummvm_cruise.lib
-		MACRO			DISABLE_IGOR		// LIB:scummvm_igor.lib
-		MACRO			DISABLE_MADE		// LIB:scummvm_made.lib
-		MACRO			DISABLE_M4		// LIB:scummvm_m4.lib
-	$DefaultBottomMacros";
-
-	# below here you could specify weird & experimental combinations, non-ready engines
-
-	$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_AGOS		// LIB:scummvm_agos.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_AGI			// LIB:scummvm_agi.lib
-		MACRO			DISABLE_LURE		// LIB:scummvm_lure.lib
-		MACRO			DISABLE_CINE		// LIB:scummvm_cine.lib
-         	MACRO			DISABLE_TOUCHE		// LIB:scummvm_touche.lib
-		MACRO			DISABLE_PARALLACTION	// LIB:scummvm_parallaction.lib
-		MACRO			DISABLE_DRASCULA	// LIB:scummvm_drascula.lib		  
-		MACRO			DISABLE_CRUISE		// LIB:scummvm_cruise.lib
-		MACRO			DISABLE_IGOR		// LIB:scummvm_igor.lib
-		MACRO			DISABLE_MADE		// LIB:scummvm_made.lib
-		MACRO			DISABLE_M4		// LIB:scummvm_m4.lib
-	$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_7_8
-#		MACRO			DISABLE_SCUMM_HE
-#		//MACRO			DISABLE_SCUMM		// LIB:scummvm_scumm.lib
-#		MACRO			DISABLE_AGOS		// LIB:scummvm_agos.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_AGI			// LIB:scummvm_agi.lib
-#		MACRO			DISABLE_LURE		// LIB:scummvm_lure.lib
-#		MACRO			DISABLE_CINE		// LIB:scummvm_cine.lib
-#		MACRO			DISABLE_CRUISE		// LIB:scummvm_cruise.lib
-#	$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_AGOS		// LIB:scummvm_agos.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'}{'lure'} = "$DefaultTopMacros
-		MACRO			DISABLE_SCUMM		// LIB:scummvm_scumm.lib
-		MACRO			DISABLE_AGOS		// LIB:scummvm_agos.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_LURE		// LIB:scummvm_lure.lib
-		MACRO			DISABLE_CINE		// LIB:scummvm_agi.lib

@@ Diff output truncated at 100000 characters. @@

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list