[Scummvm-git-logs] scummvm master -> 849d05b5e29f5904e68db1589ea03a08c78b8d0b

sev- sev at scummvm.org
Mon Nov 1 16:39:31 UTC 2021


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
849d05b5e2 OPENDINGUX: Add support for Opendingux Beta


Commit: 849d05b5e29f5904e68db1589ea03a08c78b8d0b
    https://github.com/scummvm/scummvm/commit/849d05b5e29f5904e68db1589ea03a08c78b8d0b
Author: Christophe Branchereau (cbranchereau at gmail.com)
Date: 2021-11-01T17:39:26+01:00

Commit Message:
OPENDINGUX: Add support for Opendingux Beta

OD Beta is a mips linux OS based on buildroot, that runs on ingenic gaming handhelds
like the gcw0, rg350 and many more.

There was a previous GCW0 port, that was running on legacy opendingux, but that
OS is not maintained since 2014 and has an outdated kernel and toolchain.

Od Beta on the other hand, runs with linux 5.15, has a GCC 10 toolchain and
an active developpment community.

This adds support for 3 flavors :

gcw0 that runs on all jz4770 cpus
lepus that runs on all jz4760 cpus
rg99 which is a jz4725 device

Signed-off-by: Christophe Branchereau <cbranchereau at gmail.com>

Changed paths:
  A backends/platform/sdl/opendingux/README.BUILD
  A backends/platform/sdl/opendingux/README.OPENDINGUX
  A backends/platform/sdl/opendingux/build_odbeta.sh
  A backends/platform/sdl/opendingux/opendingux-main.cpp
  A backends/platform/sdl/opendingux/opendingux.cpp
  A backends/platform/sdl/opendingux/opendingux.h
  A backends/platform/sdl/opendingux/opendingux.mk
  A dists/opendingux/fonts_mini.dat
  A dists/opendingux/make-opk.sh
  A dists/opendingux/scummvm.png
  A dists/opendingux/scummvm.sh
  A dists/opendingux/startGame.gcw0.desktop
  A dists/opendingux/startGame.lepus.desktop
  A dists/opendingux/startGame.rg99.desktop
  A dists/opendingux/startUI.gcw0.desktop
  A dists/opendingux/startUI.lepus.desktop
  A dists/opendingux/startUI.rg99.desktop
    backends/module.mk
    backends/platform/sdl/module.mk
    configure


diff --git a/backends/module.mk b/backends/module.mk
index 02082f30c7..49f9a30cc5 100644
--- a/backends/module.mk
+++ b/backends/module.mk
@@ -329,6 +329,15 @@ MODULE_OBJS += \
 	mixer/null/null-mixer.o
 endif
 
+ifeq ($(BACKEND),opendingux)
+MODULE_OBJS += \
+	fs/posix/posix-fs.o \
+	fs/posix/posix-fs-factory.o \
+	fs/posix/posix-iostream.o \
+	fs/posix-drives/posix-drives-fs.o \
+	fs/posix-drives/posix-drives-fs-factory.o
+endif
+
 ifeq ($(BACKEND),openpandora)
 MODULE_OBJS += \
 	events/openpandora/op-events.o \
diff --git a/backends/platform/sdl/module.mk b/backends/platform/sdl/module.mk
index 18e8bd8457..277882afed 100644
--- a/backends/platform/sdl/module.mk
+++ b/backends/platform/sdl/module.mk
@@ -46,6 +46,12 @@ MODULE_OBJS += \
 	morphos/morphos.o
 endif
 
+ifdef OPENDINGUX
+MODULE_OBJS += \
+	opendingux/opendingux-main.o \
+	opendingux/opendingux.o
+endif
+
 ifdef PLAYSTATION3
 MODULE_OBJS += \
 	ps3/ps3-main.o \
diff --git a/backends/platform/sdl/opendingux/README.BUILD b/backends/platform/sdl/opendingux/README.BUILD
new file mode 100644
index 0000000000..241803e394
--- /dev/null
+++ b/backends/platform/sdl/opendingux/README.BUILD
@@ -0,0 +1,40 @@
+Build instructions
+==================
+Running Linux on an x86/amd64 machine:
+
+1. Download and install the desired toolchain (http://od.abstraction.se/opendingux/toolchain/) in /opt/
+
+2. git clone the ScummVM repository
+
+3. Run 'target=x backends/platform/sdl/opendingux/build_odbeta.sh' 
+   where x=gcw0|lepus|rg99 
+
+   Or if you want a dual opk with one launcher capable of starting games directly 
+   for e.g. simplemenu integration :
+   'target=x dualopk=yes backends/platform/sdl/opendingux/build_odbeta.s' 
+
+4. Copy the resulting file scummvm_$(target).opk or scummvm_$(target)_dual.opk to your device
+
+Game Auto-Detection (dualopk only)
+==================================
+1) add a blank text file 'detect.svm' alongside your individual game folders, for example:
+     ---------------
+    | - roms/scummvm/
+    |    - detect.svm
+    |    - Game Folder/
+    |        - game files
+     ------------------
+2) load ScummVM, navigate to and select 'detect.svm'
+    - the loading screen will show while the script runs
+    - this may take longer if you have many games
+    - .svm files will be generated for each of your games
+3) load one of the .svm files to start your game directly
+
+Troubleshooting
+===============
+In case you need to submit a bugreport, you may find the log file at the
+following path:
+
+     ~/.scummvm/scummvm.log
+
+The log file is being overwritten at every ScummVM run.
diff --git a/backends/platform/sdl/opendingux/README.OPENDINGUX b/backends/platform/sdl/opendingux/README.OPENDINGUX
new file mode 100644
index 0000000000..1706c539ef
--- /dev/null
+++ b/backends/platform/sdl/opendingux/README.OPENDINGUX
@@ -0,0 +1,45 @@
+[ScummVM-Opendingux README]
+
+Controls
+========
+Left Stick - Mouse
+Left Stick+R - Slow Mouse
+A - Left mouse click
+B - Right mouse click
+X - Escape
+X+R - Return
+Y - Period
+Y+R - Space
+L - Game Menu (F5)
+R - Shift
+Start - Global Menu
+Select - Virtual Keyboard
+Select+R - AGI predictive input dialog
+D-pad - Keypad cursor keys
+D-Pad+R - Diagonal cursor keys
+
+On devices that have no stick, d-pad is mouse, cursor keys are not binded
+
+Game Auto-Detection (dualopk only)
+==================================
+1) add a blank text file 'detect.svm' alongside your individual game folders, for example:
+     ---------------
+    | - roms/scummvm/
+    |	 - detect.svm
+    |	 - Game Folder/
+    |	     - game files
+     ------------------
+2) load ScummVM, navigate to and select 'detect.svm'
+    - the loading screen will show while the script runs
+    - this may take longer if you have many games
+    - .svm files will be generated for each of your games
+3) load one of the .svm files to start your game directly
+
+Troubleshooting
+===============
+In case you need to submit a bugreport, you may find the log file at the
+following path:
+
+     ~/.scummvm/scummvm.log
+
+The log file is being overwritten at every ScummVM run.
diff --git a/backends/platform/sdl/opendingux/build_odbeta.sh b/backends/platform/sdl/opendingux/build_odbeta.sh
new file mode 100755
index 0000000000..717eebace5
--- /dev/null
+++ b/backends/platform/sdl/opendingux/build_odbeta.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+CONFIG="./configure --host=opendingux --enable-release --disable-detection-full"
+
+case $target in
+
+        gcw0)
+	target2=$target
+        ;;
+
+        lepus)
+	target2=$target
+	export DEFINES="-DLEPUS"
+        CONFIG+=" --disable-highres --disable-hq-scalers"
+        ;;
+
+        rg99)
+	target2=rs90
+	export DEFINES="-DRS90 -DDISABLE_FANCY_THEMES"
+        CONFIG+=" --disable-highres --disable-16bit --disable-scalers"
+        ;;
+        
+        *)
+        echo "please provide a valid target for the build: gcw0, lepus or rg99"
+        exit 0
+        ;;
+esac
+
+TOOLCHAIN=/opt/$target2-toolchain
+
+if [ $target == "gcw0" ]; then
+	SYSROOT=$TOOLCHAIN/mipsel-$target2-linux-uclibc
+else
+	SYSROOT=$TOOLCHAIN/mipsel-$target2-linux-musl
+fi
+
+export PATH=$TOOLCHAIN/usr/bin:$SYSROOT/usr/include:$TOOLCHAIN/bin:$PATH
+export CXX=mipsel-linux-g++
+export CXXFLAGS="-funsigned-char" # workaround for a scummvm tolower() bug when adding games
+
+$CONFIG && make -j12 od-make-opk && ls -lh scummvm_$target*.opk
diff --git a/backends/platform/sdl/opendingux/opendingux-main.cpp b/backends/platform/sdl/opendingux/opendingux-main.cpp
new file mode 100644
index 0000000000..93216ca71b
--- /dev/null
+++ b/backends/platform/sdl/opendingux/opendingux-main.cpp
@@ -0,0 +1,45 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "backends/platform/sdl/opendingux/opendingux.h"
+#include "backends/plugins/sdl/sdl-provider.h"
+#include "base/main.h"
+
+int main(int argc, char* argv[]) {
+
+	g_system = new OSystem_SDL_Opendingux();
+	assert(g_system);
+
+	g_system->init();
+
+#ifdef DYNAMIC_MODULES
+	PluginManager::instance().addPluginProvider(new SDLPluginProvider());
+#endif
+
+	// Invoke the actual ScummVM main entry point:
+	int res = scummvm_main(argc, argv);
+
+	// Free OSystem
+	g_system->destroy();
+
+	return res;
+}
diff --git a/backends/platform/sdl/opendingux/opendingux.cpp b/backends/platform/sdl/opendingux/opendingux.cpp
new file mode 100644
index 0000000000..a3c84d244b
--- /dev/null
+++ b/backends/platform/sdl/opendingux/opendingux.cpp
@@ -0,0 +1,194 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * 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.
+ *
+ */
+
+#define FORBIDDEN_SYMBOL_EXCEPTION_system
+
+#include "common/scummsys.h"
+#include "common/config-manager.h"
+#include "common/translation.h"
+
+#include "backends/platform/sdl/opendingux/opendingux.h"
+
+#include "backends/fs/posix/posix-fs-factory.h"
+#include "backends/fs/posix/posix-fs.h"
+#include "backends/saves/default/default-saves.h"
+
+#include "backends/keymapper/action.h"
+#include "backends/keymapper/keymapper-defaults.h"
+#include "backends/keymapper/hardware-input.h"
+#include "backends/keymapper/keymap.h"
+#include "backends/keymapper/keymapper.h"
+
+#define SCUMM_DIR	"~/.scummvm"
+#define CONFIG_FILE	"~/.scummvmrc"
+#define SAVE_PATH	"~/.scummvm/saves"
+#define LOG_FILE	"~/.scummvm/scummvm.log"
+#define JOYSTICK_DIR	"/sys/devices/platform/joystick"
+
+static const Common::KeyTableEntry odKeyboardButtons[] = {
+	{ "JOY_A",		Common::KEYCODE_LCTRL,		_s("A")			},
+	{ "JOY_B",		Common::KEYCODE_LALT,		_s("B")			},
+	{ "JOY_X",		Common::KEYCODE_SPACE,		_s("X")			},
+	{ "JOY_Y",		Common::KEYCODE_LSHIFT,		_s("Y")			},
+	{ "JOY_BACK",		Common::KEYCODE_ESCAPE,		_s("Select")		},
+	{ "JOY_START",		Common::KEYCODE_RETURN,		_s("Start")		},
+	{ "JOY_LEFT_SHOULDER",	Common::KEYCODE_TAB,		_s("L")			},
+	{ "JOY_RIGHT_SHOULDER", Common::KEYCODE_BACKSPACE,	_s("R")			},
+	{ "JOY_UP",		Common::KEYCODE_UP,		_s("D-pad Up")	},
+	{ "JOY_DOWN",		Common::KEYCODE_DOWN,		_s("D-pad Down")	},
+	{ "JOY_LEFT",		Common::KEYCODE_LEFT,		_s("D-pad Left")	},
+	{ "JOY_RIGHT",		Common::KEYCODE_RIGHT,		_s("D-pad Right")	},
+	{0,			Common::KEYCODE_INVALID,	0			}
+};
+
+static const Common::HardwareInputTableEntry odJoystickButtons[] = {
+	{ "JOY_LEFT_TRIGGER",	Common::JOYSTICK_BUTTON_LEFT_STICK,	_s("L3")	 },
+	{ nullptr,		0,					nullptr		 }
+};
+
+static const Common::AxisTableEntry odJoystickAxes[] = {
+	{ "JOY_LEFT_STICK_X",  Common::JOYSTICK_AXIS_LEFT_STICK_X,  Common::kAxisTypeFull, _s("Left Stick X")  },
+	{ "JOY_LEFT_STICK_Y",  Common::JOYSTICK_AXIS_LEFT_STICK_Y,  Common::kAxisTypeFull, _s("Left Stick Y")  },
+	{ nullptr,	       0,				    Common::kAxisTypeFull, nullptr	       }
+};
+
+Common::KeymapperDefaultBindings *OSystem_SDL_Opendingux::getKeymapperDefaultBindings() {
+	Common::KeymapperDefaultBindings *keymapperDefaultBindings = new Common::KeymapperDefaultBindings();
+
+	if (!Posix::assureDirectoryExists(JOYSTICK_DIR)) { 
+		keymapperDefaultBindings->setDefaultBinding(Common::kGlobalKeymapName, "VMOUSEUP", "JOY_UP");
+		keymapperDefaultBindings->setDefaultBinding(Common::kGlobalKeymapName, "VMOUSEDOWN", "JOY_DOWN");
+		keymapperDefaultBindings->setDefaultBinding(Common::kGlobalKeymapName, "VMOUSELEFT", "JOY_LEFT");
+		keymapperDefaultBindings->setDefaultBinding(Common::kGlobalKeymapName, "VMOUSERIGHT", "JOY_RIGHT");
+		keymapperDefaultBindings->setDefaultBinding(Common::kGuiKeymapName, "UP", "");
+		keymapperDefaultBindings->setDefaultBinding(Common::kGuiKeymapName, "DOWN", "");
+		keymapperDefaultBindings->setDefaultBinding(Common::kGuiKeymapName, "LEFT", "");
+		keymapperDefaultBindings->setDefaultBinding(Common::kGuiKeymapName, "RIGHT", "");
+		keymapperDefaultBindings->setDefaultBinding("engine-default", "UP", "");
+		keymapperDefaultBindings->setDefaultBinding("engine-default", "DOWN", "");
+		keymapperDefaultBindings->setDefaultBinding("engine-default", "LEFT", "");
+		keymapperDefaultBindings->setDefaultBinding("engine-default", "RIGHT", "");
+	}
+
+	return keymapperDefaultBindings;
+}
+
+void OSystem_SDL_Opendingux::init() {
+
+	_fsFactory = new POSIXFilesystemFactory();
+	if (!Posix::assureDirectoryExists(SCUMM_DIR)) {
+		system("mkdir " SCUMM_DIR);
+	}
+
+	// Invoke parent implementation of this method
+	OSystem_SDL::init();
+}
+
+void OSystem_SDL_Opendingux::initBackend() {
+	ConfMan.registerDefault("fullscreen", true);
+	ConfMan.registerDefault("aspect_ratio", true);
+	ConfMan.registerDefault("themepath", "./themes");
+	ConfMan.registerDefault("extrapath", "./engine-data");
+	ConfMan.registerDefault("gui_theme", "builtin");
+	ConfMan.registerDefault("scale_factor", "1");
+
+	ConfMan.setBool("fullscreen", true);
+	ConfMan.setInt("joystick_num", 0);
+
+	if (!ConfMan.hasKey("aspect_ratio")) {
+		ConfMan.setBool("aspect_ratio", true);
+	}
+	if (!ConfMan.hasKey("themepath")) {
+		ConfMan.set("themepath", "./themes");
+	}
+	if (!ConfMan.hasKey("extrapath")) {
+		ConfMan.set("extrapath", "./engine-data");
+	}
+	if (!ConfMan.hasKey("savepath")) {
+		ConfMan.set("savepath", SAVE_PATH);
+	}
+	if (!ConfMan.hasKey("gui_theme")) {
+		ConfMan.set("gui_theme", "builtin");
+	}
+	if (!ConfMan.hasKey("scale_factor")) {
+		ConfMan.set("scale_factor", "1");
+	}
+	if (!ConfMan.hasKey("opl_driver")) {
+		ConfMan.set("opl_driver", "db");
+	}
+#ifdef LEPUS
+	if (!ConfMan.hasKey("output_rate")) {
+		ConfMan.set("output_rate", "22050");
+	}
+#elif RS90
+	if (!ConfMan.hasKey("output_rate")) {
+                ConfMan.set("output_rate", "11025");
+        }
+#endif
+	// Create the savefile manager
+	if (_savefileManager == 0) {
+		_savefileManager = new DefaultSaveFileManager(SAVE_PATH);
+	}
+
+	OSystem_SDL::initBackend();
+}
+
+Common::String OSystem_SDL_Opendingux::getDefaultConfigFileName() {
+	return CONFIG_FILE;
+
+}
+
+Common::String OSystem_SDL_Opendingux::getDefaultLogFileName() {
+	return LOG_FILE;
+}
+
+bool OSystem_SDL_Opendingux::hasFeature(Feature f) {
+	if (f == kFeatureFullscreenMode)
+		return false;
+	if (f == kFeatureAspectRatioCorrection)
+		return false;
+
+	return OSystem_SDL::hasFeature(f);
+}
+
+void OSystem_SDL_Opendingux::setFeatureState(Feature f, bool enable) {
+	OSystem_SDL::setFeatureState(f, enable);
+	}
+
+bool OSystem_SDL_Opendingux::getFeatureState(Feature f) {
+	return OSystem_SDL::getFeatureState(f);
+}
+
+Common::HardwareInputSet *OSystem_SDL_Opendingux::getHardwareInputSet() {
+	using namespace Common;
+
+	CompositeHardwareInputSet *inputSet = new CompositeHardwareInputSet();
+
+	// Users may use USB mice - keyboards currently not possible with SDL1 as it conflicts with gpios
+	inputSet->addHardwareInputSet(new MouseHardwareInputSet(defaultMouseButtons));
+	//inputSet->addHardwareInputSet(new KeyboardHardwareInputSet(defaultKeys, defaultModifiers));
+	inputSet->addHardwareInputSet(new KeyboardHardwareInputSet(odKeyboardButtons, defaultModifiers));
+	inputSet->addHardwareInputSet(new JoystickHardwareInputSet(odJoystickButtons, odJoystickAxes));
+
+	return inputSet;
+}
+
diff --git a/backends/platform/sdl/opendingux/opendingux.h b/backends/platform/sdl/opendingux/opendingux.h
new file mode 100644
index 0000000000..5c76fec4ac
--- /dev/null
+++ b/backends/platform/sdl/opendingux/opendingux.h
@@ -0,0 +1,43 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef PLATFORM_SDL_OPENDINGUX_H
+#define PLATFORM_SDL_OPENDINGUX_H
+
+#include "backends/platform/sdl/sdl.h"
+
+class OSystem_SDL_Opendingux : public OSystem_SDL {
+public:
+	virtual void init() override;
+	virtual void initBackend() override;
+	virtual bool hasFeature(Feature f) override;
+	virtual void setFeatureState(Feature f, bool enable) override;
+	virtual bool getFeatureState(Feature f) override;
+	virtual Common::HardwareInputSet *getHardwareInputSet() override;
+	virtual Common::KeymapperDefaultBindings *getKeymapperDefaultBindings() override;
+
+protected:
+	virtual Common::String getDefaultConfigFileName() override;
+	virtual Common::String getDefaultLogFileName() override;
+};
+
+#endif
diff --git a/backends/platform/sdl/opendingux/opendingux.mk b/backends/platform/sdl/opendingux/opendingux.mk
new file mode 100644
index 0000000000..3a3f3ab606
--- /dev/null
+++ b/backends/platform/sdl/opendingux/opendingux.mk
@@ -0,0 +1,56 @@
+OD_EXE_STRIPPED := scummvm_stripped$(EXEEXT)
+bundle = od-opk
+
+all: $(OD_EXE_STRIPPED)
+
+$(OD_EXE_STRIPPED): $(EXECUTABLE)
+	$(STRIP) $< -o $@
+
+$(bundle): all
+	$(MKDIR) $(bundle)
+	$(CP) $(DIST_FILES_DOCS) $(bundle)/
+
+ifneq ($(target), rg99)
+	$(MKDIR) $(bundle)/themes
+	$(CP) $(DIST_FILES_THEMES) $(bundle)/themes/
+endif
+
+ifdef DIST_FILES_ENGINEDATA
+	$(MKDIR) $(bundle)/engine-data
+	$(CP) $(DIST_FILES_ENGINEDATA) $(bundle)/engine-data/
+ifeq ($(target), rg99)
+	$(CP) $(srcdir)/dists/opendingux/fonts_mini.dat $(bundle)/engine-data/fonts.dat
+endif
+endif
+ifdef DIST_FILES_NETWORKING
+	$(CP) $(DIST_FILES_NETWORKING) $(bundle)/
+endif
+ifdef DIST_FILES_VKEYBD
+	$(CP) $(DIST_FILES_VKEYBD) $(bundle)/
+endif
+ifdef DYNAMIC_MODULES
+	$(MKDIR) $(bundle)/plugins
+	$(CP) $(PLUGINS) $(bundle)/plugins/
+endif
+	$(CP) $(EXECUTABLE) $(bundle)/scummvm
+
+	$(CP) $(srcdir)/dists/opendingux/scummvm.png $(bundle)/
+	$(CP) $(srcdir)/dists/opendingux/startUI.$(target).desktop $(bundle)/
+ifdef dualopk
+	$(CP) $(srcdir)/dists/opendingux/startGame.$(target).desktop $(bundle)/
+	$(CP) $(srcdir)/dists/opendingux/scummvm.sh $(bundle)/
+endif
+	$(CP) $(srcdir)/backends/platform/sdl/opendingux/README.OPENDINGUX $(bundle)/README.man.txt
+	echo >> $(bundle)/README.man.txt
+	echo '[General README]' >> $(bundle)/README.man.txt
+	echo >> $(bundle)/README.man.txt
+	cat $(srcdir)/README.md | sed -e 's/\[/⟦/g' -e 's/\]/⟧/g' -e '/^1\.1)/,$$ s/^[0-9][0-9]*\.[0-9][0-9]*.*/\[&\]/' >> $(bundle)/README.man.txt
+
+od-make-opk: $(bundle)
+	$(STRIP) $(bundle)/scummvm
+
+ifdef dualopk
+	$(srcdir)/dists/opendingux/make-opk.sh -d $(bundle) -o scummvm_$(target)_dual
+else
+	$(srcdir)/dists/opendingux/make-opk.sh -d $(bundle) -o scummvm_$(target)
+endif
diff --git a/configure b/configure
index 229a15999f..e8525a6a82 100755
--- a/configure
+++ b/configure
@@ -782,8 +782,8 @@ Usage: $0 [OPTIONS]...
 Configuration:
   -h, --help              display this help and exit
   --backend=BACKEND       backend to build (3ds, android, dc, dingux, ds, gcw0,
-                          gph, iphone, ios7, ios7-arm64, maemo, n64, null, openpandora,
-                          psp, psp2, samsungtv, sdl, switch, wii) [sdl]
+                          gph, iphone, ios7, ios7-arm64, maemo, n64, null, opendingux,
+                          openpandora, psp, psp2, samsungtv, sdl, switch, wii) [sdl]
 
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
@@ -829,6 +829,7 @@ Special configuration feature:
                                            ios7-arm64 for Apple iPhone / iPad (iOS >= 7, 64-bit)
                                            maemo for Nokia Maemo
                                            n64 for Nintendo 64
+                                           opendingux for Opendingux Beta
                                            openpandora for OpenPandora
                                            ouya for OUYA
                                            ps3 for PlayStation 3
@@ -1575,7 +1576,7 @@ caanoo)
 	_host_cpu=arm
 	_host_alias=arm-none-linux-gnueabi
 	;;
-dingux | gcw0)
+dingux | gcw0 | opendingux)
 	_host_os=linux
 	_host_cpu=mipsel
 	_host_alias=mipsel-linux
@@ -3504,6 +3505,30 @@ if test -n "$_host"; then
 			_build_hq_scalers=no
 			_mt32emu=no
 			;;
+		opendingux)
+			_sysroot=`$CXX --print-sysroot`
+			_sdlpath=$_sysroot/usr/bin
+			append_var DEFINES  "-DDINGUX -DOPENDINGUX -DREDUCE_MEMORY_USAGE"
+			append_var CXXFLAGS "-ffast-math -fdata-sections -ffunction-sections -mplt -mno-shared"
+			append_var LDFLAGS  "-ffast-math -fdata-sections -ffunction-sections -mplt -mno-shared"
+			append_var LDFLAGS  "-O3 -Wl,--as-needed,--gc-sections"
+			_vkeybd=yes
+			_alsa=no
+			_vorbis=no
+			_mt32emu=no
+			_timidity=no
+			_fluidsynth=no
+			_theoradec=no
+			_seq_midi=no
+			_nuked_opl=no
+			_curl=no
+			_cloud=no
+			_sdlnet=no
+			_optimization_level=-O3
+			_backend="opendingux"
+			_port_mk="backends/platform/sdl/opendingux/opendingux.mk"
+			add_line_to_config_mk 'OPENDINGUX = 1'
+			;;
 		openpandora)
 			# Use -O3 on the OpenPandora for optimized builds.
 			if test "$_optimizations" = yes; then
@@ -3700,6 +3725,11 @@ case $_backend in
 		append_var DEFINES "-DUSE_NULL_DRIVER"
 		_text_console=yes
 		;;
+	opendingux)
+		_sdlconfig=sdl-config
+		_sdl=auto
+		append_var MODULES "backends/platform/sdl"
+		;;
 	openpandora)
 		append_var DEFINES "-DOPENPANDORA"
 		append_var DEFINES "-DREDUCE_MEMORY_USAGE"
@@ -3889,7 +3919,7 @@ fi
 # Enable 16bit support only for backends which support it
 #
 case $_backend in
-	3ds | android | android3d | androidsdl | dingux | dc | ds | gph | iphone | ios7 | maemo | null | openpandora | psp | psp2 | samsungtv | sdl | switch | wii)
+	3ds | android | android3d | androidsdl | dingux | dc | ds | gph | iphone | ios7 | maemo | null | opendingux | openpandora | psp | psp2 | samsungtv | sdl | switch | wii)
 		if test "$_16bit" = auto ; then
 			_16bit=yes
 		else
diff --git a/dists/opendingux/fonts_mini.dat b/dists/opendingux/fonts_mini.dat
new file mode 100644
index 0000000000..c5c4efefb6
Binary files /dev/null and b/dists/opendingux/fonts_mini.dat differ
diff --git a/dists/opendingux/make-opk.sh b/dists/opendingux/make-opk.sh
new file mode 100755
index 0000000000..e4b5b50769
--- /dev/null
+++ b/dists/opendingux/make-opk.sh
@@ -0,0 +1,111 @@
+#!/bin/bash
+#
+# opk_make.sh
+#
+# This script is meant to ease generation of a opk file. Please consult the output
+# when running --help for a list of available parameters and an explaination of
+# those.
+#
+# Required tools when running the script:
+# bash
+# echo, cat, mv, rm, mksquashfs
+
+check_for_tool()
+{
+	which $1 &> /dev/null
+	if [ "$?" -ne "0" ];
+	then
+		cecho "ERROR: Could not find the program '$1'. Please make sure
+that it is available in your PATH since it is required to complete your request." $red
+		exit 1
+	fi
+}
+
+print_help()
+{
+	cat << EOSTREAM
+opk_make.sh - A script to package "something" into a OPK.
+
+Usage:
+  $(basename ${0}) {--directory|-d} <folder> {--opk|-o} <file> [{--help|-h}]
+
+
+Switches:
+  --directory / -d          Sets the folder that is to be used for the resulting opk
+                            to <folder>. This option is mandatory for the script to
+                            function correctly.
+
+  --help / -h               Displays this help text.
+
+  --opkname / -o            Sets the output filename of the resulting opk to <file>.
+                            This option is mandatory for the script to function
+                            correctly.
+
+A version >=4.0 of squashfs is required to be available in your PATH.
+EOSTREAM
+}
+
+
+# Parse command line parameters
+while [ "${1}" != "" ]; do
+	if [ "${1}" = "--directory" ] || [ "${1}" = "-d" ];
+	then
+		FOLDER=$2
+		shift 2
+	elif [ "${1}" = "--help" ] || [ "${1}" = "-h" ];
+	then
+		print_help
+		exit 0
+	elif [ "${1}" = "--opkname" ] || [ "${1}" = "-o" ];
+	then
+		OPKNAME=$2
+		shift 2
+	else
+		echo "ERROR: '$1' is not a known argument. Printing --help and aborting."
+		print_help
+		exit 1
+	fi
+done
+
+
+# Probe if required variables were set
+echo "Checking if all required variables were set."
+if [ ! $OPKNAME ] || [ ! $FOLDER ];
+then
+	echo "ERROR: Not all required options were set! Please see the --help information below."
+	print_help
+	exit 1
+else
+	echo "OPKNAME set to '$OPKNAME'."
+fi
+# Check if the selected folder actually exists
+if [ ! -d $FOLDER ];
+then
+	echo "ERROR: '$FOLDER' doesn't exist or is not a folder."
+	exit 1
+else
+	echo "FOLDER set to '$FOLDER'."
+fi
+
+# Make iso from folder
+echo "Creating an iso file based on '$FOLDER'."
+
+check_for_tool mksquashfs
+if [ $(/usr/bin/mksquashfs -version | awk 'BEGIN{r=0} $3>=4{r=1} END{print r}') -eq 0 ];
+then
+	echo "ERROR: Your squashfs version is older then version 4, please upgrade to 4.0 or later"
+	exit 1
+fi
+/usr/bin/mksquashfs $FOLDER $OPKNAME.opk -noappend -no-exports -no-xattrs
+
+# Final message
+if [ -f $OPKNAME.opk ];
+then
+	echo "Successfully finished creating the opk '$OPKNAME'."
+else
+	echo "There seems to have been a problem and '$OPKNAME' was not created. Please check
+the output above for any error messages. A possible cause for this is that there was
+not enough space available."
+	exit 1
+fi
+
diff --git a/dists/opendingux/scummvm.png b/dists/opendingux/scummvm.png
new file mode 100644
index 0000000000..1040b442ea
Binary files /dev/null and b/dists/opendingux/scummvm.png differ
diff --git a/dists/opendingux/scummvm.sh b/dists/opendingux/scummvm.sh
new file mode 100755
index 0000000000..4eb9b34f83
--- /dev/null
+++ b/dists/opendingux/scummvm.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+cd `dirname $0`
+
+if [ ! -f "$1" ]; then
+	exec ./scummvm 2>&1 >/var/tmp/scummvm.log
+fi
+
+path=`dirname "$1"`
+file=`basename "$1"`
+
+if [ "$file" == "detect.svm" ]; then
+	./scummvm --path="$path" --add --recursive 2>&1 >/var/tmp/scummvm.log
+	./scummvm --list-targets |
+	sed 's/\//-/g' | sed 's/://g' |
+	while IFS=' ' read id title; do
+		case $id in
+			Target) ;;
+			---*) ;;
+			*) echo "$id" > "$path/$title.svm" ;;
+		esac
+	done
+else
+	gameid=`cat "$1"`
+	exec ./scummvm $gameid 2>&1 >/var/tmp/scummvm.log
+fi
diff --git a/dists/opendingux/startGame.gcw0.desktop b/dists/opendingux/startGame.gcw0.desktop
new file mode 100644
index 0000000000..90568e298a
--- /dev/null
+++ b/dists/opendingux/startGame.gcw0.desktop
@@ -0,0 +1,16 @@
+[Desktop Entry]
+Name=ScummVM
+Comment=Interpreter for several adventure games
+Comment[pl]=Interpreter graficznych gier przygodowych
+Comment[sv]=Tolk för flera äventyrsspel
+Comment[he]=פרשן למספר משחקי הרפתקאות
+Comment[de]=Interpreter für diverse Abenteuerspiele
+Comment[es]=Intérprete para varias aventuras gráficas
+Comment[ca]=Intèrpret per diverses aventures gràfiques
+Exec=env SDL_VIDEO_KMSDRM_SCALING_MODE=1 ./scummvm.sh %f
+Icon=scummvm
+Terminal=false
+Type=Application
+Categories=games;
+StartupNotify=false
+X-OD-Manual=README.man.txt
diff --git a/dists/opendingux/startGame.lepus.desktop b/dists/opendingux/startGame.lepus.desktop
new file mode 100644
index 0000000000..90568e298a
--- /dev/null
+++ b/dists/opendingux/startGame.lepus.desktop
@@ -0,0 +1,16 @@
+[Desktop Entry]
+Name=ScummVM
+Comment=Interpreter for several adventure games
+Comment[pl]=Interpreter graficznych gier przygodowych
+Comment[sv]=Tolk för flera äventyrsspel
+Comment[he]=פרשן למספר משחקי הרפתקאות
+Comment[de]=Interpreter für diverse Abenteuerspiele
+Comment[es]=Intérprete para varias aventuras gráficas
+Comment[ca]=Intèrpret per diverses aventures gràfiques
+Exec=env SDL_VIDEO_KMSDRM_SCALING_MODE=1 ./scummvm.sh %f
+Icon=scummvm
+Terminal=false
+Type=Application
+Categories=games;
+StartupNotify=false
+X-OD-Manual=README.man.txt
diff --git a/dists/opendingux/startGame.rg99.desktop b/dists/opendingux/startGame.rg99.desktop
new file mode 100644
index 0000000000..90568e298a
--- /dev/null
+++ b/dists/opendingux/startGame.rg99.desktop
@@ -0,0 +1,16 @@
+[Desktop Entry]
+Name=ScummVM
+Comment=Interpreter for several adventure games
+Comment[pl]=Interpreter graficznych gier przygodowych
+Comment[sv]=Tolk för flera äventyrsspel
+Comment[he]=פרשן למספר משחקי הרפתקאות
+Comment[de]=Interpreter für diverse Abenteuerspiele
+Comment[es]=Intérprete para varias aventuras gráficas
+Comment[ca]=Intèrpret per diverses aventures gràfiques
+Exec=env SDL_VIDEO_KMSDRM_SCALING_MODE=1 ./scummvm.sh %f
+Icon=scummvm
+Terminal=false
+Type=Application
+Categories=games;
+StartupNotify=false
+X-OD-Manual=README.man.txt
diff --git a/dists/opendingux/startUI.gcw0.desktop b/dists/opendingux/startUI.gcw0.desktop
new file mode 100644
index 0000000000..9525a55f2e
--- /dev/null
+++ b/dists/opendingux/startUI.gcw0.desktop
@@ -0,0 +1,16 @@
+[Desktop Entry]
+Name=ScummVM UI
+Comment=Interpreter for several adventure games
+Comment[pl]=Interpreter graficznych gier przygodowych
+Comment[sv]=Tolk för flera äventyrsspel
+Comment[he]=פרשן למספר משחקי הרפתקאות
+Comment[de]=Interpreter für diverse Abenteuerspiele
+Comment[es]=Intérprete para varias aventuras gráficas
+Comment[ca]=Intèrpret per diverses aventures gràfiques
+Exec=env SDL_VIDEO_KMSDRM_SCALING_MODE=1 ./scummvm
+Icon=scummvm
+Terminal=false
+Type=Application
+Categories=games;
+StartupNotify=false
+X-OD-Manual=README.man.txt
diff --git a/dists/opendingux/startUI.lepus.desktop b/dists/opendingux/startUI.lepus.desktop
new file mode 100644
index 0000000000..9525a55f2e
--- /dev/null
+++ b/dists/opendingux/startUI.lepus.desktop
@@ -0,0 +1,16 @@
+[Desktop Entry]
+Name=ScummVM UI
+Comment=Interpreter for several adventure games
+Comment[pl]=Interpreter graficznych gier przygodowych
+Comment[sv]=Tolk för flera äventyrsspel
+Comment[he]=פרשן למספר משחקי הרפתקאות
+Comment[de]=Interpreter für diverse Abenteuerspiele
+Comment[es]=Intérprete para varias aventuras gráficas
+Comment[ca]=Intèrpret per diverses aventures gràfiques
+Exec=env SDL_VIDEO_KMSDRM_SCALING_MODE=1 ./scummvm
+Icon=scummvm
+Terminal=false
+Type=Application
+Categories=games;
+StartupNotify=false
+X-OD-Manual=README.man.txt
diff --git a/dists/opendingux/startUI.rg99.desktop b/dists/opendingux/startUI.rg99.desktop
new file mode 100644
index 0000000000..9525a55f2e
--- /dev/null
+++ b/dists/opendingux/startUI.rg99.desktop
@@ -0,0 +1,16 @@
+[Desktop Entry]
+Name=ScummVM UI
+Comment=Interpreter for several adventure games
+Comment[pl]=Interpreter graficznych gier przygodowych
+Comment[sv]=Tolk för flera äventyrsspel
+Comment[he]=פרשן למספר משחקי הרפתקאות
+Comment[de]=Interpreter für diverse Abenteuerspiele
+Comment[es]=Intérprete para varias aventuras gráficas
+Comment[ca]=Intèrpret per diverses aventures gràfiques
+Exec=env SDL_VIDEO_KMSDRM_SCALING_MODE=1 ./scummvm
+Icon=scummvm
+Terminal=false
+Type=Application
+Categories=games;
+StartupNotify=false
+X-OD-Manual=README.man.txt




More information about the Scummvm-git-logs mailing list