[Scummvm-cvs-logs] SF.net SVN: scummvm:[41230] scummvm/trunk/backends/platform/gp2x

djwillis at users.sourceforge.net djwillis at users.sourceforge.net
Sat Jun 6 18:52:45 CEST 2009


Revision: 41230
          http://scummvm.svn.sourceforge.net/scummvm/?rev=41230&view=rev
Author:   djwillis
Date:     2009-06-06 16:52:45 +0000 (Sat, 06 Jun 2009)

Log Message:
-----------
GP2X: Small cleanup of control code and start to work on virtual keyboard support for the backend.

Modified Paths:
--------------
    scummvm/trunk/backends/platform/gp2x/build/bundle.sh
    scummvm/trunk/backends/platform/gp2x/build/config.sh
    scummvm/trunk/backends/platform/gp2x/events.cpp
    scummvm/trunk/backends/platform/gp2x/gp2x-hw.h
    scummvm/trunk/backends/platform/gp2x/gp2x.cpp

Added Paths:
-----------
    scummvm/trunk/backends/platform/gp2x/build/config-alleng.sh

Modified: scummvm/trunk/backends/platform/gp2x/build/bundle.sh
===================================================================
--- scummvm/trunk/backends/platform/gp2x/build/bundle.sh	2009-06-06 16:48:29 UTC (rev 41229)
+++ scummvm/trunk/backends/platform/gp2x/build/bundle.sh	2009-06-06 16:52:45 UTC (rev 41230)
@@ -28,6 +28,7 @@
 cp ../../../../COPYRIGHT ./scummvm-gp2x-`date '+%Y-%m-%d'`/
 cp ../../../../NEWS ./scummvm-gp2x-`date '+%Y-%m-%d'`/
 cp ../../../../gui/themes/scummmodern.zip ./scummvm-gp2x-`date '+%Y-%m-%d'`/
+cp ../../../../backends/vkeybd/vkeybd.zip ./scummvm-gp2x-`date '+%Y-%m-%d'`/
 cp ../../../../dists/pred.dic ./scummvm-gp2x-`date '+%Y-%m-%d'`/
 cp ../../../../dists/engine-data/* ./scummvm-gp2x-`date '+%Y-%m-%d'`/engine-data
 

Added: scummvm/trunk/backends/platform/gp2x/build/config-alleng.sh
===================================================================
--- scummvm/trunk/backends/platform/gp2x/build/config-alleng.sh	                        (rev 0)
+++ scummvm/trunk/backends/platform/gp2x/build/config-alleng.sh	2009-06-06 16:52:45 UTC (rev 41230)
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+echo Quick script to make running configure all the time less painful
+echo and let all the build work be done from the backend/build folder.
+
+# Set the paths up here to generate the config.
+
+PATH=/opt/open2x/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/bin:$PATH
+PATH=/opt/open2x/gcc-4.1.1-glibc-2.3.6/bin:$PATH
+
+# Export the tool names for cross-compiling
+export CXX=arm-open2x-linux-g++
+export CXXFLAGS=-march=armv4t
+export CPPFLAGS=-I/opt/open2x/gcc-4.1.1-glibc-2.3.6/include
+export LDFLAGS=-L/opt/open2x/gcc-4.1.1-glibc-2.3.6/lib
+export DEFINES=-DNDEBUG
+
+# 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-all-engines --enable-vkeybd
+# --enable-plugins --default-dynamic
+
+echo Generating config for GP2X complete. Check for errors.


Property changes on: scummvm/trunk/backends/platform/gp2x/build/config-alleng.sh
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author URL Id
Added: svn:eol-style
   + LF

Modified: scummvm/trunk/backends/platform/gp2x/build/config.sh
===================================================================
--- scummvm/trunk/backends/platform/gp2x/build/config.sh	2009-06-06 16:48:29 UTC (rev 41229)
+++ scummvm/trunk/backends/platform/gp2x/build/config.sh	2009-06-06 16:52:45 UTC (rev 41230)
@@ -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-made --enable-m4 
-#--enable-plugins --default-dynamic
+./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-vkeybd
+# --enable-plugins --default-dynamic
 
 echo Generating config for GP2X complete. Check for errors.

Modified: scummvm/trunk/backends/platform/gp2x/events.cpp
===================================================================
--- scummvm/trunk/backends/platform/gp2x/events.cpp	2009-06-06 16:48:29 UTC (rev 41229)
+++ scummvm/trunk/backends/platform/gp2x/events.cpp	2009-06-06 16:52:45 UTC (rev 41230)
@@ -38,33 +38,33 @@
 // we should really allow users to map any key to a joystick button
 #define JOY_DEADZONE 2200
 
-// #define JOY_INVERT_Y
 #define JOY_XAXIS 0
 #define JOY_YAXIS 1
 
-// GP2X Stick Buttons (Note: The Stick is read as a set of buttons not a HAT type of setup).
-#define JOY_BUT_LMOUSE 0x0D
-#define JOY_BUT_RMOUSE 0x0E
+/* GP2X Wiz: Main Joystick Mappings */
+enum {
+	GP2X_BUTTON_UP			= 0,
+	GP2X_BUTTON_UPLEFT		= 1,
+	GP2X_BUTTON_LEFT		= 2,
+	GP2X_BUTTON_DOWNLEFT	= 3,
+	GP2X_BUTTON_DOWN		= 4,
+	GP2X_BUTTON_DOWNRIGHT	= 5,
+	GP2X_BUTTON_RIGHT		= 6,
+	GP2X_BUTTON_UPRIGHT		= 7,
+	GP2X_BUTTON_START		= 8,
+	GP2X_BUTTON_SELECT		= 9,
+	GP2X_BUTTON_L			= 10,
+	GP2X_BUTTON_R			= 11,
+	GP2X_BUTTON_A			= 12,
+	GP2X_BUTTON_B			= 13,
+	GP2X_BUTTON_X			= 14,
+	GP2X_BUTTON_Y			= 15,
+	GP2X_BUTTON_VOLUP		= 16,
+	GP2X_BUTTON_VOLDOWN		= 17,
+	GP2X_BUTTON_CLICK		= 18
+};
 
-#define JOY_BUT_RETURN 0x08
-#define JOY_BUT_ESCAPE 0x09
-#define JOY_BUT_F5 0x0B
-#define JOY_BUT_SPACE 0x0F
-#define JOY_BUT_TALKUP 0x10
-#define JOY_BUT_TALKDN 0x11
-#define JOY_BUT_ZERO 0x12
-
-#define JOY_BUT_COMB 0x0A
-#define JOY_BUT_EXIT 0x12
-#define JOY_BUT_PERIOD 0x0C
-
-
-//TODO: Quick hack 101 ;-) Clean this up,
-#define TRUE 1
-#define FALSE 0
-
-static int mapKey(SDLKey key, SDLMod mod, Uint16 unicode)
-{
+static int mapKey(SDLKey key, SDLMod mod, Uint16 unicode) {
 	if (key >= SDLK_F1 && key <= SDLK_F9) {
 		return key - SDLK_F1 + Common::ASCII_F1;
 	} else if (key >= SDLK_KP0 && key <= SDLK_KP9) {
@@ -197,10 +197,9 @@
 		if (_km.x_down_count!=2){
 			_km.x_vel = 1;
 			_km.x_down_count = 1;
-		}else
+		} else
 			_km.x_vel = 4;
-	}
-	 else{
+	} else {
 		_km.x_vel = 0;
 		_km.x_down_count = 0;
 	}
@@ -216,37 +215,17 @@
 		if (_km.y_down_count!=2){
 			_km.y_vel = 1;
 			_km.y_down_count = 1;
-		}else
+		} else
 			_km.y_vel = 4;
-	}
-	 else{
+	} else {
 		_km.y_vel = 0;
 		_km.y_down_count = 0;
 	}
 }
 
-	//Quick default button states for modifier.
+/* Quick default button states for modifiers. */
+int GP2X_BUTTON_STATE_L					=	false;
 
-	//int GP2X_BUTTON_STATE_UP              =	FALSE;
-	//int GP2X_BUTTON_STATE_DOWN            =	FALSE;
-	//int GP2X_BUTTON_STATE_LEFT            =	FALSE;
-	//int GP2X_BUTTON_STATE_RIGHT           =	FALSE;
-	//int GP2X_BUTTON_STATE_UPLEFT          =	FALSE;
-	//int GP2X_BUTTON_STATE_UPRIGHT         =	FALSE;
-	//int GP2X_BUTTON_STATE_DOWNLEFT        =	FALSE;
-	//int GP2X_BUTTON_STATE_DOWNRIGHT       =	FALSE;
-	//int GP2X_BUTTON_STATE_CLICK           =	FALSE;
-	//int GP2X_BUTTON_STATE_A               =	FALSE;
-	//int GP2X_BUTTON_STATE_B               =	FALSE;
-	//int GP2X_BUTTON_STATE_Y               =	FALSE;
-	//int GP2X_BUTTON_STATE_X               =	FALSE;
-	int GP2X_BUTTON_STATE_L					=	FALSE;
-	//int GP2X_BUTTON_STATE_R               =	FALSE;
-	//int GP2X_BUTTON_STATE_START           =	FALSE;
-	//int GP2X_BUTTON_STATE_SELECT          =	FALSE;
-	//int GP2X_BUTTON_STATE_VOLUP           =	FALSE;
-	//int GP2X_BUTTON_STATE_VOLDOWN         =	FALSE;
-
 bool OSystem_GP2X::pollEvent(Common::Event &event) {
 	SDL_Event ev;
 	int axis;
@@ -273,8 +252,6 @@
 	GP2X_BUTTON_LEFT            Cursor Left
 	GP2X_BUTTON_RIGHT           Cursor Right
 
-	TODO: Add extra directions to cursor mappings.
-
 	GP2X_BUTTON_UPLEFT          Cursor Up Left
 	GP2X_BUTTON_UPRIGHT         Cursor Up Right
 	GP2X_BUTTON_DOWNLEFT        Cursor Down Left
@@ -288,8 +265,8 @@
 	GP2X_BUTTON_Y               Space Bar
 	GP2X_BUTTON_X               Right Mouse Click
 	GP2X_BUTTON_L				Combo Modifier (Left Trigger)
-	GP2X_BUTTON_R               F5 (Right Trigger)
-	GP2X_BUTTON_START           Return
+	GP2X_BUTTON_R               Return (Right Trigger)
+	GP2X_BUTTON_START           F5 (Game Menu)
 	GP2X_BUTTON_SELECT          Escape
 	GP2X_BUTTON_VOLUP           /dev/mixer Global Volume Up
 	GP2X_BUTTON_VOLDOWN         /dev/mixer Global Volume Down
@@ -299,6 +276,7 @@
 	GP2X_BUTTON_VOLUP &	GP2X_BUTTON_VOLDOWN		0 (For Monkey 2 CP)
 	GP2X_BUTTON_L &	GP2X_BUTTON_SELECT			Common::EVENT_QUIT (Calls Sync() to make sure SD is flushed)
 	GP2X_BUTTON_L &	GP2X_BUTTON_Y				Toggles setZoomOnMouse() for larger then 320*240 games to scale to the point + raduis.
+	GP2X_BUTTON_L &	GP2X_BUTTON_START			Common::EVENT_MAINMENU (ScummVM Global Main Menu)
 	GP2X_BUTTON_L &	GP2X_BUTTON_A				Common::EVENT_PREDICTIVE_DIALOG for predictive text entry box (AGI games)
 	*/
 
@@ -357,6 +335,10 @@
 			else if (ev.button.button == SDL_BUTTON_WHEELDOWN)
 				event.type = Common::EVENT_WHEELDOWN;
 #endif
+#if defined(SDL_BUTTON_MIDDLE)
+			else if (ev.button.button == SDL_BUTTON_MIDDLE)
+				event.type = Common::EVENT_MBUTTONDOWN;
+#endif
 			else
 				break;
 
@@ -369,6 +351,10 @@
 				event.type = Common::EVENT_LBUTTONUP;
 			else if (ev.button.button == SDL_BUTTON_RIGHT)
 				event.type = Common::EVENT_RBUTTONUP;
+#if defined(SDL_BUTTON_MIDDLE)
+			else if (ev.button.button == SDL_BUTTON_MIDDLE)
+				event.type = Common::EVENT_MBUTTONUP;
+#endif
 			else
 				break;
 			fillMouseEvent(event, ev.button.x, ev.button.y);
@@ -379,16 +365,16 @@
 
 		case SDL_JOYBUTTONDOWN:
 			_stickBtn[ev.jbutton.button] = 1;
-			if (ev.jbutton.button == JOY_BUT_LMOUSE) {
+			if (ev.jbutton.button == GP2X_BUTTON_B) {
 				event.type = Common::EVENT_LBUTTONDOWN;
 				fillMouseEvent(event, _km.x, _km.y);
 			} else if (ev.jbutton.button == GP2X_BUTTON_CLICK) {
 				event.type = Common::EVENT_LBUTTONDOWN;
 				fillMouseEvent(event, _km.x, _km.y);
-			} else if (ev.jbutton.button == JOY_BUT_RMOUSE) {
+			} else if (ev.jbutton.button == GP2X_BUTTON_X) {
 				event.type = Common::EVENT_RBUTTONDOWN;
 				fillMouseEvent(event, _km.x, _km.y);
-			} else if (_stickBtn[JOY_BUT_COMB] && (ev.jbutton.button == JOY_BUT_EXIT)) {
+			} else if (_stickBtn[GP2X_BUTTON_L] && (ev.jbutton.button == GP2X_BUTTON_SELECT)) {
 				event.type = Common::EVENT_QUIT;
 			} else if (ev.jbutton.button < 8) {
 				moveStick();
@@ -399,19 +385,24 @@
 				event.kbd.flags = 0;
 				switch (ev.jbutton.button) {
 					case GP2X_BUTTON_L:
-						GP2X_BUTTON_STATE_L = TRUE;
+						GP2X_BUTTON_STATE_L = true;
 						break;
 					case GP2X_BUTTON_R:
-						if (GP2X_BUTTON_STATE_L == TRUE) {
+						if (GP2X_BUTTON_STATE_L == true) {
+#ifdef ENABLE_VKEYBD
+							event.kbd.keycode = Common::KEYCODE_F7;
+							event.kbd.ascii = mapKey(SDLK_F7, ev.key.keysym.mod, 0);
+#else
 							event.kbd.keycode = Common::KEYCODE_0;
 							event.kbd.ascii = mapKey(SDLK_0, ev.key.keysym.mod, 0);
+#endif
 						} else {
-							event.kbd.keycode = Common::KEYCODE_F5;
-							event.kbd.ascii = mapKey(SDLK_F5, ev.key.keysym.mod, 0);
+							event.kbd.keycode = Common::KEYCODE_RETURN;
+							event.kbd.ascii = mapKey(SDLK_RETURN, ev.key.keysym.mod, 0);
 						}
 						break;
 					case GP2X_BUTTON_SELECT:
-						if (GP2X_BUTTON_STATE_L == TRUE) {
+						if (GP2X_BUTTON_STATE_L == true) {
 							event.type = Common::EVENT_QUIT;
 						} else {
 							event.kbd.keycode = Common::KEYCODE_ESCAPE;
@@ -419,7 +410,7 @@
 						}
 						break;
 					case GP2X_BUTTON_A:
-						if (GP2X_BUTTON_STATE_L == TRUE) {
+						if (GP2X_BUTTON_STATE_L == true) {
 							event.type = Common::EVENT_PREDICTIVE_DIALOG;
 						} else {
 						event.kbd.keycode = Common::KEYCODE_PERIOD;
@@ -427,39 +418,21 @@
 						}
 						break;
 					case GP2X_BUTTON_Y:
-						if (GP2X_BUTTON_STATE_L == TRUE) {
+						if (GP2X_BUTTON_STATE_L == true) {
 							setZoomOnMouse();
 						} else {
 							event.kbd.keycode = Common::KEYCODE_SPACE;
 							event.kbd.ascii = mapKey(SDLK_SPACE, ev.key.keysym.mod, 0);
 						}
 						break;
-					case JOY_BUT_RETURN:
-						event.kbd.keycode = Common::KEYCODE_RETURN;
-						event.kbd.ascii = mapKey(SDLK_RETURN, ev.key.keysym.mod, 0);
+					case GP2X_BUTTON_START:
+						if (GP2X_BUTTON_STATE_L == true) {
+							event.type = Common::EVENT_MAINMENU;
+						} else {
+							event.kbd.keycode = Common::KEYCODE_F5;
+							event.kbd.ascii = mapKey(SDLK_F5, ev.key.keysym.mod, 0);
+						}
 						break;
-					case JOY_BUT_ZERO:
-						event.kbd.keycode = Common::KEYCODE_0;
-						event.kbd.ascii = mapKey(SDLK_0, ev.key.keysym.mod, 0);
-						break;
-
-					//case GP2X_BUTTON_R:
-					//	if ((ev.jbutton.button == GP2X_BUTTON_L) && (ev.jbutton.button == GP2X_BUTTON_R)) {
-					//		displayMessageOnOSD("Exiting ScummVM");
-					//		//Sync();
-					//		event.type = Common::EVENT_QUIT;
-					//		break;
-					//	} else if ((ev.jbutton.button == GP2X_BUTTON_L) && (ev.jbutton.button != GP2X_BUTTON_R)) {
-					//		displayMessageOnOSD("Left Trigger Pressed");
-					//		break;
-					//	} else if ((ev.jbutton.button == GP2X_BUTTON_R) && (ev.jbutton.button != GP2X_BUTTON_L)) {
-					//		event.kbd.keycode = Common::KEYCODE_F5;
-					//		event.kbd.ascii = mapKey(SDLK_F5, ev.key.keysym.mod, 0);
-					//		break;
-					//	} else {
-					//		break;
-					//	}
-					//	break;
 					case GP2X_BUTTON_VOLUP:
 						//if (GP2X_BUTTON_STATE_L == TRUE) {
 						//	displayMessageOnOSD("Setting CPU Speed at 230MHz");
@@ -490,10 +463,13 @@
 
 		case SDL_JOYBUTTONUP:
 			_stickBtn[ev.jbutton.button] = 0;
-			if (ev.jbutton.button == JOY_BUT_LMOUSE) {
+			if (ev.jbutton.button == GP2X_BUTTON_B) {
 				event.type = Common::EVENT_LBUTTONUP;
 				fillMouseEvent(event, _km.x, _km.y);
-			} else if (ev.jbutton.button == JOY_BUT_RMOUSE) {
+			} else if (ev.jbutton.button == GP2X_BUTTON_CLICK) {
+				event.type = Common::EVENT_LBUTTONUP;
+				fillMouseEvent(event, _km.x, _km.y);
+			} else if (ev.jbutton.button == GP2X_BUTTON_X) {
 				event.type = Common::EVENT_RBUTTONUP;
 				fillMouseEvent(event, _km.x, _km.y);
 			} else if (ev.jbutton.button < 8) {
@@ -517,15 +493,29 @@
 						event.kbd.ascii = mapKey(SDLK_SPACE, ev.key.keysym.mod, 0);
 						break;
 					case GP2X_BUTTON_START:
-						event.kbd.keycode = Common::KEYCODE_RETURN;
-						event.kbd.ascii = mapKey(SDLK_RETURN, ev.key.keysym.mod, 0);
+						if (GP2X_BUTTON_STATE_L == true) {
+							event.type = Common::EVENT_MAINMENU;
+						} else {
+							event.kbd.keycode = Common::KEYCODE_F5;
+							event.kbd.ascii = mapKey(SDLK_F5, ev.key.keysym.mod, 0);
+						}
 						break;
 					case GP2X_BUTTON_L:
-						GP2X_BUTTON_STATE_L = FALSE;
+						GP2X_BUTTON_STATE_L = false;
 						break;
 					case GP2X_BUTTON_R:
-						event.kbd.keycode = Common::KEYCODE_F5;
-						event.kbd.ascii = mapKey(SDLK_F5, ev.key.keysym.mod, 0);
+						if (GP2X_BUTTON_STATE_L == true) {
+#ifdef ENABLE_VKEYBD
+							event.kbd.keycode = Common::KEYCODE_F7;
+							event.kbd.ascii = mapKey(SDLK_F7, ev.key.keysym.mod, 0);
+#else
+							event.kbd.keycode = Common::KEYCODE_0;
+							event.kbd.ascii = mapKey(SDLK_0, ev.key.keysym.mod, 0);
+#endif
+						} else {
+							event.kbd.keycode = Common::KEYCODE_RETURN;
+							event.kbd.ascii = mapKey(SDLK_RETURN, ev.key.keysym.mod, 0);
+						}
 						break;
 					case GP2X_BUTTON_VOLUP:
 						break;

Modified: scummvm/trunk/backends/platform/gp2x/gp2x-hw.h
===================================================================
--- scummvm/trunk/backends/platform/gp2x/gp2x-hw.h	2009-06-06 16:48:29 UTC (rev 41229)
+++ scummvm/trunk/backends/platform/gp2x/gp2x-hw.h	2009-06-06 16:52:45 UTC (rev 41230)
@@ -31,29 +31,6 @@
 #ifndef GP2X_HW_H
 #define GP2X_HW_H
 
-//GP2X Main Joystick Mappings
-//TODO: Use these more standard mappings over the custom ones.
-
-#define GP2X_BUTTON_UP              (0)
-#define GP2X_BUTTON_UPLEFT          (1)
-#define GP2X_BUTTON_LEFT            (2)
-#define GP2X_BUTTON_DOWNLEFT        (3)
-#define GP2X_BUTTON_DOWN            (4)
-#define GP2X_BUTTON_DOWNRIGHT       (5)
-#define GP2X_BUTTON_RIGHT           (6)
-#define GP2X_BUTTON_UPRIGHT         (7)
-#define GP2X_BUTTON_START           (8)
-#define GP2X_BUTTON_SELECT          (9)
-#define GP2X_BUTTON_L               (10)
-#define GP2X_BUTTON_R               (11)
-#define GP2X_BUTTON_A               (12)
-#define GP2X_BUTTON_B               (13)
-#define GP2X_BUTTON_X               (14)
-#define GP2X_BUTTON_Y               (15)
-#define GP2X_BUTTON_VOLUP           (16)
-#define GP2X_BUTTON_VOLDOWN         (17)
-#define GP2X_BUTTON_CLICK           (18)
-
 #define GP2X_MAXVOL 100 // Highest level permitted by GP2X's mixer
 #define SYS_CLK_FREQ 7372800 // Clock Frequency
 

Modified: scummvm/trunk/backends/platform/gp2x/gp2x.cpp
===================================================================
--- scummvm/trunk/backends/platform/gp2x/gp2x.cpp	2009-06-06 16:48:29 UTC (rev 41229)
+++ scummvm/trunk/backends/platform/gp2x/gp2x.cpp	2009-06-06 16:52:45 UTC (rev 41230)
@@ -33,15 +33,14 @@
 #include "backends/platform/gp2x/gp2x-mem.h"
 #include "common/archive.h"
 #include "common/config-manager.h"
-
+#include "common/debug.h"
 #include "common/events.h"
 #include "common/util.h"
 
-#include "common/debug.h"
 #include "common/file.h"
 #include "base/main.h"
 
-#include "backends/saves/posix/posix-saves.h"
+#include "backends/saves/default/default-saves.h"
 
 #include "backends/timer/default/default-timer.h"
 #include "backends/plugins/posix/posix-provider.h"
@@ -72,15 +71,12 @@
 }
 
 int main(int argc, char *argv[]) {
-	//extern OSystem *OSystem_GP2X_create();
-	//g_system = OSystem_GP2X_create();
 	g_system = new OSystem_GP2X();
 	assert(g_system);
 
-	// Check if Plugins are enabled (Using the hacked up GP2X provider)
-	#ifdef DYNAMIC_MODULES
-		PluginManager::instance().addPluginProvider(new GP2XPluginProvider());
-	#endif
+#ifdef DYNAMIC_MODULES
+	PluginManager::instance().addPluginProvider(new POSIXPluginProvider());
+#endif
 
 	// Invoke the actual ScummVM main entry point:
 	int res = scummvm_main(argc, argv);
@@ -115,7 +111,8 @@
 	#endif
 
 	char savePath[PATH_MAX+1];
-	char workDirName[PATH_MAX+1]; /* To be passed to getcwd system call. */
+	char workDirName[PATH_MAX+1];
+
 	if (getcwd(workDirName, PATH_MAX) == NULL) {
 		error("Could not obtain current working directory.");
 	} else {
@@ -133,25 +130,9 @@
 
 	ConfMan.registerDefault("savepath", savePath);
 
-	// Setup default extra data path for engine data files to be workingdir/engine-data
+	_savefile = new DefaultSaveFileManager(savePath);
 
-	char enginedataPath[PATH_MAX+1];
-
-	strcpy(enginedataPath, workDirName);
-	strcat(enginedataPath, "/engine-data");
-	printf("Current engine-data directory: %s\n", enginedataPath);
-	//struct stat sb;
-	if (stat(enginedataPath, &sb) == -1)
-		if (errno == ENOENT) // Create the dir if it does not exist
-			if (mkdir(enginedataPath, 0755) != 0)
-				warning("mkdir for '%s' failed", enginedataPath);
-
-	//FIXME: Do not use File::addDefaultDirectory, rather implement OSystem::addSysArchivesToSearchSet() !
-	Common::File::addDefaultDirectory(enginedataPath);
-
-	// Note: Review and clean this, it's OTT at the moment.
-
-	#if defined(DUMP_STDOUT)
+	#ifdef DUMP_STDOUT
 		// The GP2X has a serial console but most users do not use this so we
 		// output all our STDOUT and STDERR to files for debug purposes.
 		char STDOUT_FILE[PATH_MAX+1];
@@ -168,7 +149,7 @@
 
 		/* Redirect standard input and standard output */
 		FILE *newfp = freopen(STDOUT_FILE, "w", stdout);
-		if (newfp == NULL) {	/* This happens on NT */
+		if (newfp == NULL) {
 		#if !defined(stdout)
 			stdout = fopen(STDOUT_FILE, "w");
 		#else
@@ -178,8 +159,9 @@
 			}
 		#endif
 		}
+
 		newfp = freopen(STDERR_FILE, "w", stderr);
-		if (newfp == NULL) {	/* This happens on NT */
+		if (newfp == NULL) {
 		#if !defined(stderr)
 			stderr = fopen(STDERR_FILE, "w");
 		#else
@@ -189,9 +171,11 @@
 			}
 		#endif
 		}
-		setbuf(stderr, NULL);			/* No buffering */
-	#endif // DUMP_STDOUT
 
+		setbuf(stderr, NULL);
+		printf("%s\n", "Debug: STDOUT and STDERR redirected to text files.");
+	#endif /* DUMP_STDOUT */
+
 	_graphicsMutex = createMutex();
 
 	SDL_ShowCursor(SDL_DISABLE);
@@ -199,7 +183,9 @@
 	// Setup other defaults.
 
 	ConfMan.registerDefault("aspect_ratio", true);
-	ConfMan.registerDefault("music_volume", 220); // Up default volume as we use a seperate volume system anyway.
+
+	/* Up default volume values as we use a seperate system level volume anyway. */
+	ConfMan.registerDefault("music_volume", 220);
 	ConfMan.registerDefault("sfx_volume", 220);
 	ConfMan.registerDefault("speech_volume", 220);
 	ConfMan.registerDefault("autosave_period", 3 * 60);	// Trigger autosave every 3 minutes - On low batts 4 mins is about your warning time.
@@ -223,12 +209,6 @@
 		_joystick = SDL_JoystickOpen(joystick_num);
 	}
 
-	// Create the savefile manager, if none exists yet (we check for this to
-	// allow subclasses to provide their own).
-	if (_savefile == 0) {
-	_savefile = new POSIXSaveFileManager();
-	}
-
 	// Create and hook up the mixer, if none exists yet (we check for this to
 	// allow subclasses to provide their own).
 	if (_mixer == 0) {
@@ -367,32 +347,37 @@
 }
 
 void OSystem_GP2X::addSysArchivesToSearchSet(Common::SearchSet &s, int priority) {
+	/* Setup default extra data paths for engine data files and plugins */
+	char workDirName[PATH_MAX+1];
 
-#ifdef DATA_PATH
-	// Add the global DATA_PATH to the directory search list
-	// FIXME: We use depth = 4 for now, to match the old code. May want to change that
-	Common::FSNode dataNode(DATA_PATH);
-	if (dataNode.exists() && dataNode.isDirectory()) {
-		s.add(DATA_PATH, new Common::FSDirectory(dataNode, 4), priority);
+	if (getcwd(workDirName, PATH_MAX) == NULL) {
+		error("Error: Could not obtain current working directory.");
 	}
-#endif
 
-#if defined(MACOSX) || defined(IPHONE)
-	// Get URL of the Resource directory of the .app bundle
-	CFURLRef fileUrl = CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle());
-	if (fileUrl) {
-		// Try to convert the URL to an absolute path
-		UInt8 buf[MAXPATHLEN];
-		if (CFURLGetFileSystemRepresentation(fileUrl, true, buf, sizeof(buf))) {
-			// Success: Add it to the search path
-			Common::String bundlePath((const char *)buf);
-			s.add("__OSX_BUNDLE__", new Common::FSDirectory(bundlePath), priority);
-		}
-		CFRelease(fileUrl);
+	Common::FSNode workdirNode(workDirName);
+	if (workdirNode.exists() && workdirNode.isDirectory()) {
+		s.add("__GP2X_WORKDIR__", new Common::FSDirectory(workDirName), priority);
 	}
 
-#endif
+	char enginedataPath[PATH_MAX+1];
 
+	strcpy(enginedataPath, workDirName);
+	strcat(enginedataPath, "/engine-data");
+
+	Common::FSNode engineNode(enginedataPath);
+	if (engineNode.exists() && engineNode.isDirectory()) {
+		s.add("__GP2X_ENGDATA__", new Common::FSDirectory(enginedataPath), priority);
+	}
+
+	char pluginsPath[PATH_MAX+1];
+
+	strcpy(pluginsPath, workDirName);
+	strcat(pluginsPath, "/plugins");
+
+	Common::FSNode pluginsNode(pluginsPath);
+	if (pluginsNode.exists() && pluginsNode.isDirectory()) {
+		s.add("__GP2X_PLUGINS__", new Common::FSDirectory(pluginsPath), priority);
+	}
 }
 
 static Common::String getDefaultConfigFileName() {
@@ -479,6 +464,12 @@
 
 	delete getEventManager();
 
+	#ifdef DUMP_STDOUT
+		printf("%s\n", "Debug: STDOUT and STDERR text files closed.");
+		fclose(stdout);
+		fclose(stderr);
+	#endif /* DUMP_STDOUT */
+
 	exit(0);
 }
 


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