aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/maemo
diff options
context:
space:
mode:
Diffstat (limited to 'backends/platform/maemo')
-rw-r--r--backends/platform/maemo/Makefile69
-rw-r--r--backends/platform/maemo/hildon.cpp134
-rw-r--r--backends/platform/maemo/maemo-sdl.cpp42
-rw-r--r--backends/platform/maemo/maemo-sdl.h41
-rw-r--r--backends/platform/maemo/main.cpp81
-rw-r--r--backends/platform/maemo/portdefs.h69
6 files changed, 436 insertions, 0 deletions
diff --git a/backends/platform/maemo/Makefile b/backends/platform/maemo/Makefile
new file mode 100644
index 0000000000..ca49a35f9c
--- /dev/null
+++ b/backends/platform/maemo/Makefile
@@ -0,0 +1,69 @@
+# ScummVM Maemo MakeFile
+# $URL$
+# $Id$
+
+#control build
+DISABLE_HQ_SCALERS = true
+
+#DISABLE_SCUMM = 1
+#DISABLE_HE = 1
+DISABLE_SIMON = 1
+DISABLE_SKY = 1
+DISABLE_SWORD1 = 1
+DISABLE_SWORD2 = 1
+DISABLE_QUEEN = 1
+DISABLE_KYRA = 1
+DISABLE_SAGA = 1
+DISABLE_GOB = 1
+DISABLE_LURE = 1
+DISABLE_CINE = 1
+DISABLE_AGI = 1
+
+srcdir = ../..
+VPATH = $(srcdir)
+
+CXX := g++
+EXECUTABLE := scummvm
+
+INCDIR = ../../ . $(srcdir)/engines/
+
+CXXFLAGS := -g -ansi -W -Wno-unused-parameter
+CXXFLAGS += `pkg-config --cflags gconf-2.0 hildon-libs gtk+-2.0 libosso gdk-2.0`
+CXXFLAGS += $(addprefix -I,$(INCDIR)) -I. -Wall $(CXXFLAGS)
+CXXFLAGS += -O -Wuninitialized
+CXXFLAGS += -Wno-long-long -Wno-multichar -Wno-unknown-pragmas
+# Even more warnings...
+CXXFLAGS += -pedantic -Wpointer-arith -Wcast-qual -Wconversion
+CXXFLAGS += -Wshadow -Wimplicit -Wundef -Wnon-virtual-dtor
+CXXFLAGS += -Wno-reorder -Wwrite-strings -fcheck-new
+
+LIBS += -lz -L/usr/lib -lSDL -lpthread -lXsp -losso
+LIBS += `pkg-config --libs gconf-2.0 hildon-libs gtk+-2.0 libosso gdk-2.0`
+INCLUDES += -I/usr/include/SDL -D_REENTRANT -I/usr/X11R6/include
+OBJS +=
+DEFINES += -DUNIX -DNONSTANDARD_PORT -D__MAEMO__
+LDFLAGS +=
+
+RANLIB := ranlib
+INSTALL := install
+AR := ar cru
+MKDIR := mkdir -p
+ECHO := printf
+CAT := cat
+RM := rm -f
+RM_REC := rm -f -r
+CP := cp
+
+OBJS := main.o maemo-sdl.o
+
+MODULE_DIRS += .
+
+
+BACKEND := sdl
+MODULES += backends/platform/sdl base
+MODULE_DIRS += .
+
+HAVE_GCC3 = 1
+
+include $(srcdir)/Makefile.common
+
diff --git a/backends/platform/maemo/hildon.cpp b/backends/platform/maemo/hildon.cpp
new file mode 100644
index 0000000000..1c9bd9162a
--- /dev/null
+++ b/backends/platform/maemo/hildon.cpp
@@ -0,0 +1,134 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2006 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#include <hildon-widgets/hildon-app.h>
+#include <gtk/gtk.h>
+#include <libosso.h>
+
+#define OSSO_APP_NAME "scummvm"
+#define OSSO_APP_VERSION "0.9.0CVS"
+#define OSSO_APP_SERVICE "org.scummvm."OSSO_APP_NAME
+#define OSSO_APP_OBJECT "/org/scummvm/"OSSO_APP_NAME
+#define OSSO_APP_IFACE "org.scummvm."OSSO_APP_NAME
+
+// Application UI data struct
+typedef struct _AppData AppData;
+struct _AppData {
+ HildonApp *app;
+ HildonAppView *appview;
+ osso_context_t *osso_context;
+};
+
+// Callback for exit D-BUS event
+void exit_event_handler(gboolean die_now, gpointer data) {
+ AppData *appdata;
+ appdata = (AppData *)data;
+ g_print("exit_event_handler called\n");
+ /* Do whatever application needs to do before exiting */
+ gtk_infoprint(GTK_WINDOW(appdata->app), "Exiting...");
+}
+
+// Callback for normal D-BUS messages
+gint dbus_req_handler(const gchar *interface, const gchar *method,
+ GArray *arguments, gpointer data,
+ osso_rpc_t *retval) {
+ AppData *appdata;
+ appdata = (AppData *)data;
+ osso_system_note_infoprint(appdata->osso_context, method, retval);
+ return OSSO_OK;
+}
+
+
+// Main application
+int main(int argc, char *argv[]) {
+ // Create needed variables
+ HildonApp *app;
+ HildonAppView *appview;
+ osso_context_t *osso_context;
+ osso_return_t result;
+ GtkWidget *main_vbox;
+ GtkWidget *label;
+
+ // Initialize the GTK.
+ gtk_init(&argc, &argv);
+
+ // Initialize maemo application
+ osso_context = osso_initialize(OSSO_APP_NAME, OSSO_APP_VERSION, TRUE, NULL);
+
+ // Check that initialization was ok
+ if (osso_context == NULL) {
+ return OSSO_ERROR;
+ }
+
+ // Create the hildon application and setup the title
+ app = HILDON_APP(hildon_app_new());
+ hildon_app_set_title(app, "ScummVM");
+ hildon_app_set_two_part_title(app, TRUE);
+
+ // Create HildonAppView and set it to HildonApp
+ appview = HILDON_APPVIEW(hildon_appview_new("AppView Title"));
+ hildon_app_set_appview(app, appview);
+
+ // Create AppData
+ AppData *appdata;
+ appdata = g_new0(AppData, 1);
+ appdata->app = app;
+ appdata->appview = appview;
+ appdata->osso_context = osso_context;
+
+ // Add vbox to appview
+ main_vbox = gtk_vbox_new(FALSE, 0);
+ gtk_container_add(GTK_CONTAINER(appview), main_vbox);
+
+ // Add button to vbox
+ label = gtk_label_new("Waiting for DBUS message...");
+ gtk_box_pack_start(GTK_BOX(main_vbox), label, FALSE, TRUE, 0);
+
+ // Add handler for hello D-BUS messages
+ result = osso_rpc_set_cb_f(appdata->osso_context,
+ OSSO_APP_SERVICE,
+ OSSO_APP_OBJECT,
+ OSSO_APP_IFACE,
+ dbus_req_handler, appdata);
+ if (result != OSSO_OK) {
+ g_print("Error setting D-BUS callback (%d)\n", result);
+ return OSSO_ERROR;
+ }
+
+ // Add handler for Exit D-BUS messages
+ result = osso_application_set_exit_cb(appdata->osso_context,
+ exit_event_handler,
+ (gpointer) appdata);
+ if (result != OSSO_OK) {
+ g_print("Error setting exit callback (%d)\n", result);
+ return OSSO_ERROR;
+ }
+
+ // Begin the main application
+ gtk_widget_show_all(GTK_WIDGET(app));
+ gtk_main();
+
+ // Deinitialize OSSO
+ osso_deinitialize(osso_context);
+
+ return 0;
+}
diff --git a/backends/platform/maemo/maemo-sdl.cpp b/backends/platform/maemo/maemo-sdl.cpp
new file mode 100644
index 0000000000..dfb6cb7048
--- /dev/null
+++ b/backends/platform/maemo/maemo-sdl.cpp
@@ -0,0 +1,42 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2001-2006 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#include "common/stdafx.h"
+#include "backends/maemo/maemo-sdl.h"
+
+
+void OSystem_MAEMO::loadGFXMode() {
+ if (_fullscreen || effectiveScreenHeight() > 400) {
+ _overlayWidth = 800;
+ _overlayHeight = 480;
+
+ _fullscreen = true;
+ } else {
+ _overlayWidth = 720;
+ _overlayHeight = 400;
+ }
+
+ if (_screenHeight != 200)
+ _adjustAspectRatio = false;
+
+ OSystem_SDL::loadGFXMode();
+}
diff --git a/backends/platform/maemo/maemo-sdl.h b/backends/platform/maemo/maemo-sdl.h
new file mode 100644
index 0000000000..e342ead5f9
--- /dev/null
+++ b/backends/platform/maemo/maemo-sdl.h
@@ -0,0 +1,41 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2001-2006 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#ifndef MAEMO_SDL_H
+#define MAEMO_SDL_H
+
+#include "common/stdafx.h"
+#include "backends/platform/sdl/sdl-common.h"
+
+//#include "CEkeys.h"
+
+#include <SDL.h>
+
+
+class OSystem_MAEMO : public OSystem_SDL {
+public:
+ OSystem_MAEMO() {};
+
+ void loadGFXMode();
+};
+
+#endif
diff --git a/backends/platform/maemo/main.cpp b/backends/platform/maemo/main.cpp
new file mode 100644
index 0000000000..2631d35000
--- /dev/null
+++ b/backends/platform/maemo/main.cpp
@@ -0,0 +1,81 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2006 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#include <common/stdafx.h>
+#include <common/scummsys.h>
+#include <X11/Xlib.h>
+#include <X11/extensions/Xsp.h>
+
+#include <SDL/SDL.h>
+#include <SDL/SDL_syswm.h>
+
+#include "backends/maemo/maemo-sdl.h"
+#include "base/main.h"
+#include <hildon-widgets/hildon-app.h>
+#include <gtk/gtk.h>
+#include <libosso.h>
+
+#include <sys/time.h>
+#include <sys/resource.h>
+
+#define OSSO_APP_NAME "scummvm"
+#define OSSO_APP_VERSION "0.9.0CVS"
+
+void set_doubling(unsigned char enable) {
+ return;
+
+ SDL_SysWMinfo wminfo;
+ SDL_VERSION(&wminfo.version);
+ SDL_GetWMInfo(&wminfo);
+ XSPSetPixelDoubling(wminfo.info.x11.display, 0, enable);
+}
+
+int main(int argc, char *argv[]) {
+ osso_context_t *osso_context;
+
+ // Initialize maemo application
+ //osso_context = osso_initialize(OSSO_APP_NAME, OSSO_APP_VERSION, TRUE, NULL);
+
+ // Check that initialization was ok
+ //if (osso_context == NULL) {
+ // return OSSO_ERROR;
+ //}
+
+ // Maemo task navigator priority inheritance fix
+ setpriority(PRIO_PROCESS, 0, 0);
+
+ set_doubling(0);
+
+ g_system = new OSystem_MAEMO();
+ assert(g_system);
+
+ // Invoke the actual ScummVM main entry point:
+ int res = scummvm_main(argc, argv);
+ g_system->quit(); // TODO: Consider removing / replacing this!
+
+ /* Deinitialize OSSO */
+ //osso_deinitialize(osso_context);
+
+ set_doubling(0);
+
+ return res;
+}
diff --git a/backends/platform/maemo/portdefs.h b/backends/platform/maemo/portdefs.h
new file mode 100644
index 0000000000..f825e5c4e2
--- /dev/null
+++ b/backends/platform/maemo/portdefs.h
@@ -0,0 +1,69 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2006 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#ifndef PORTDEFS_H
+#define PORTDEFS_H
+
+#define SCUMM_LITTLE_ENDIAN
+#define SCUMM_NEED_ALIGNMENT
+
+#undef HAVE_X86
+
+#undef LINUPY
+
+/* Data types */
+typedef unsigned char byte;
+typedef unsigned int uint;
+typedef unsigned char uint8;
+typedef unsigned short uint16;
+typedef unsigned int uint32;
+typedef signed char int8;
+typedef signed short int16;
+typedef signed int int32;
+
+/* Libs */
+#undef USE_VORBIS
+#undef USE_TREMOR
+#undef USE_FLAC
+#undef USE_MAD
+#define USE_ZLIB
+#undef USE_MPEG2
+#undef USE_MT32EMU
+
+/* Whether we should use i386 assembly routines */
+#undef USE_NASM
+
+#include <stdio.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <ctype.h>
+#include <time.h>
+#include <math.h>
+
+void set_doubling(unsigned char enable);
+
+#endif /* PORTDEFS_H */
+
+