Initial commit

This commit is contained in:
2026-02-02 04:50:13 +01:00
commit 5b11698731
22592 changed files with 7677434 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
[ScummVM-Miyoo README]
Controls
========
Dpad - Mouse
Dpad+R - Slow Mouse
A - Left mouse click
B - Right mouse click
Y - Escape
L - Game Menu (F5)
Start - Global Menu
Select - Virtual Keyboard
All buttons are available for (re)mapping in keymapper
Troubleshooting
===============
In case you need to submit a bugreport, you may find the log file at the
following path:
SDCARD/.scummvm/scummvm.log
The log file is being overwritten at every ScummVM run.

View File

@@ -0,0 +1,13 @@
#!/bin/bash
set -e
TOOLCHAIN=/opt/miyoo
SYSROOT=$TOOLCHAIN/arm-miyoo-linux-uclibcgnueabi
export PATH=$TOOLCHAIN/usr/bin:$SYSROOT/usr/include:$TOOLCHAIN/bin:$PATH
export CXX=arm-linux-g++
./configure --host=miyoo --enable-release --disable-detection-full --enable-plugins --default-dynamic --enable-engine=testbed
make -j5 all sd-root sd-zip

View File

@@ -0,0 +1,13 @@
#!/bin/bash
set -e
TOOLCHAIN=/opt/miyoo-musl
SYSROOT=$TOOLCHAIN/arm-miyoo-linux-musleabi
export PATH=$TOOLCHAIN/usr/bin:$SYSROOT/usr/include:$TOOLCHAIN/bin:$PATH
export CXX=arm-linux-g++
./configure --host=miyoo --enable-release --disable-detection-full --enable-plugins --default-dynamic --enable-engine=testbed
make -j5 all sd-root sd-zip

View File

@@ -0,0 +1,13 @@
#!/bin/bash
set -e
TOOLCHAIN=/opt/miyoomini-toolchain
SYSROOT=$TOOLCHAIN/arm-linux-gnueabihf
export PATH=$TOOLCHAIN/usr/bin:$SYSROOT/usr/include:$TOOLCHAIN/bin:$PATH
export CXX=arm-linux-gnueabihf-g++
./configure --host=miyoomini --enable-release --enable-plugins --default-dynamic --enable-engine=testbed --enable-ext-neon --with-freetype2-prefix=/opt/miyoomini-toolchain/arm-linux-gnueabihf/libc/usr/bin/
make -j5 all sd-root sd-zip

View File

@@ -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 3 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, see <http://www.gnu.org/licenses/>.
*
*/
#include "backends/platform/sdl/miyoo/miyoo.h"
#include "backends/plugins/sdl/sdl-provider.h"
#include "base/main.h"
int main(int argc, char* argv[]) {
g_system = new OSystem_SDL_Miyoo();
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;
}

View File

@@ -0,0 +1,240 @@
/* 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 3 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, see <http://www.gnu.org/licenses/>.
*
*/
#define FORBIDDEN_SYMBOL_EXCEPTION_system
#include "common/scummsys.h"
#include "common/config-manager.h"
#include "common/translation.h"
#ifdef MIYOOMINI
#include "backends/graphics/miyoo/miyoomini-graphics.h"
#endif
#include "backends/platform/sdl/miyoo/miyoo.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"
#ifdef MIYOOMINI
#define SCUMM_DIR "/mnt/SDCARD/.scummvm"
#define CONFIG_FILE "/mnt/SDCARD/.scummvmrc"
#define SAVE_PATH "/mnt/SDCARD/.scummvm/saves"
#define LOG_FILE "/mnt/SDCARD/.scummvm/scummvm.log"
#else
#define SCUMM_DIR "/mnt/.scummvm"
#define CONFIG_FILE "/mnt/.scummvmrc"
#define SAVE_PATH "/mnt/.scummvm/saves"
#define LOG_FILE "/mnt/.scummvm/scummvm.log"
#endif
#define JOYSTICK_DIR "/sys/devices/platform/joystick"
static const Common::KeyTableEntry odKeyboardButtons[] = {
#ifdef MIYOOMINI
// I18N: Hardware key
{ "JOY_A", Common::KEYCODE_SPACE, _s("A") },
// I18N: Hardware key
{ "JOY_B", Common::KEYCODE_LCTRL, _s("B") },
// I18N: Hardware key
{ "JOY_X", Common::KEYCODE_LSHIFT, _s("X") },
// I18N: Hardware key
{ "JOY_Y", Common::KEYCODE_LALT, _s("Y") },
// I18N: Hardware key
{ "JOY_BACK", Common::KEYCODE_RCTRL, _s("Select") },
// I18N: Hardware key
{ "JOY_START", Common::KEYCODE_RETURN, _s("Start") },
// I18N: Hardware key
{ "JOY_LEFT_SHOULDER", Common::KEYCODE_e, _s("L") },
// I18N: Hardware key
{ "JOY_RIGHT_SHOULDER", Common::KEYCODE_t, _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") },
// I18N: Hardware key
{ "JOY_LEFT_STICK", Common::KEYCODE_TAB, _s("L2") },
// I18N: Hardware key
{ "JOY_RIGHT_STICK", Common::KEYCODE_BACKSPACE, _s("R2") },
// I18N: Hardware key
{ "JOY_GUIDE", Common::KEYCODE_ESCAPE, _s("Menu") },
#else
// I18N: Hardware key
{ "JOY_A", Common::KEYCODE_LALT, _s("A") },
// I18N: Hardware key
{ "JOY_B", Common::KEYCODE_LCTRL, _s("B") },
// I18N: Hardware key
{ "JOY_X", Common::KEYCODE_LSHIFT, _s("X") },
// I18N: Hardware key
{ "JOY_Y", Common::KEYCODE_SPACE, _s("Y") },
// I18N: Hardware key
{ "JOY_BACK", Common::KEYCODE_ESCAPE, _s("Select") },
// I18N: Hardware key
{ "JOY_START", Common::KEYCODE_RETURN, _s("Start") },
// I18N: Hardware key
{ "JOY_LEFT_SHOULDER", Common::KEYCODE_TAB, _s("L") },
// I18N: Hardware key
{ "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") },
// I18N: Hardware key
{ "JOY_LEFT_STICK", Common::KEYCODE_PAGEUP, _s("L2") },
// I18N: Hardware key
{ "JOY_RIGHT_STICK", Common::KEYCODE_PAGEDOWN, _s("R2") },
// I18N: Hardware key
{ "JOY_LEFT_TRIGGER", Common::KEYCODE_RALT, _s("L3") },
// I18N: Hardware key
{ "JOY_RIGHT_TRIGGER", Common::KEYCODE_RSHIFT, _s("R3") },
// I18N: Hardware key
{ "JOY_GUIDE", Common::KEYCODE_RCTRL, _s("Menu") },
#endif
{nullptr, Common::KEYCODE_INVALID, nullptr }
};
Common::KeymapperDefaultBindings *OSystem_SDL_Miyoo::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_Miyoo::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_Miyoo::initBackend() {
ConfMan.registerDefault("fullscreen", true);
ConfMan.registerDefault("aspect_ratio", true);
ConfMan.registerDefault("themepath", Common::Path("./themes"));
ConfMan.registerDefault("extrapath", Common::Path("./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.setPath("themepath", "./themes");
}
if (!ConfMan.hasKey("extrapath")) {
ConfMan.setPath("extrapath", "./engine-data");
}
if (!ConfMan.hasKey("savepath")) {
ConfMan.setPath("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");
}
if (!ConfMan.hasKey("kbdmouse_speed")) {
ConfMan.setInt("kbdmouse_speed", 2);
}
// Create the savefile manager
if (_savefileManager == nullptr) {
_savefileManager = new DefaultSaveFileManager(SAVE_PATH);
}
#ifdef MIYOOMINI
if (!_eventSource)
_eventSource = new SdlEventSource();
if (!_graphicsManager)
_graphicsManager = new MiyooMiniGraphicsManager(_eventSource, _window);
#endif
OSystem_SDL::initBackend();
}
Common::Path OSystem_SDL_Miyoo::getDefaultConfigFileName() {
return CONFIG_FILE;
}
Common::Path OSystem_SDL_Miyoo::getDefaultLogFileName() {
return LOG_FILE;
}
bool OSystem_SDL_Miyoo::hasFeature(Feature f) {
switch (f) {
case kFeatureFullscreenMode:
case kFeatureAspectRatioCorrection:
return false;
case kFeatureKbdMouseSpeed:
return true;
default:
return OSystem_SDL::hasFeature(f);
}
}
void OSystem_SDL_Miyoo::setFeatureState(Feature f, bool enable) {
OSystem_SDL::setFeatureState(f, enable);
}
bool OSystem_SDL_Miyoo::getFeatureState(Feature f) {
return OSystem_SDL::getFeatureState(f);
}
Common::HardwareInputSet *OSystem_SDL_Miyoo::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(odKeyboardButtons, defaultModifiers));
return inputSet;
}

View File

@@ -0,0 +1,42 @@
/* 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 3 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, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef PLATFORM_SDL_MIYOO_H
#define PLATFORM_SDL_MIYOO_H
#include "backends/platform/sdl/sdl.h"
class OSystem_SDL_Miyoo : public OSystem_SDL {
public:
void init() override;
void initBackend() override;
bool hasFeature(Feature f) override;
void setFeatureState(Feature f, bool enable) override;
bool getFeatureState(Feature f) override;
Common::HardwareInputSet *getHardwareInputSet() override;
Common::KeymapperDefaultBindings *getKeymapperDefaultBindings() override;
protected:
Common::Path getDefaultConfigFileName() override;
Common::Path getDefaultLogFileName() override;
};
#endif

View File

@@ -0,0 +1,64 @@
OD_EXE_STRIPPED := scummvm_stripped$(EXEEXT)
bundle = sd-root
ifeq ($(MIYOO_TARGET), miyoomini)
G2X_CATEGORY = App
else
G2X_CATEGORY = games
endif
all: $(OD_EXE_STRIPPED)
$(OD_EXE_STRIPPED): $(EXECUTABLE)
$(STRIP) $< -o $@
$(bundle): all
$(RM) -rf $(bundle)
$(MKDIR) -p $(bundle)/$(G2X_CATEGORY)/scummvm
$(CP) $(DIST_FILES_DOCS) $(bundle)/$(G2X_CATEGORY)/scummvm
$(MKDIR) $(bundle)/$(G2X_CATEGORY)/scummvm/themes
$(CP) $(DIST_FILES_THEMES) $(bundle)/$(G2X_CATEGORY)/scummvm/themes/
ifdef DIST_FILES_ENGINEDATA
$(MKDIR) $(bundle)/$(G2X_CATEGORY)/scummvm/engine-data
$(CP) $(DIST_FILES_ENGINEDATA) $(bundle)/$(G2X_CATEGORY)/scummvm/engine-data/
endif
ifdef DIST_FILES_NETWORKING
$(CP) $(DIST_FILES_NETWORKING) $(bundle)/$(G2X_CATEGORY)/scummvm
endif
ifdef DIST_FILES_VKEYBD
$(CP) $(DIST_FILES_VKEYBD) $(bundle)/$(G2X_CATEGORY)/scummvm
endif
ifdef DYNAMIC_MODULES
$(MKDIR) $(bundle)/$(G2X_CATEGORY)/scummvm/plugins/
$(CP) $(PLUGINS) $(bundle)/$(G2X_CATEGORY)/scummvm/plugins/
endif
$(CP) $(EXECUTABLE) $(bundle)/$(G2X_CATEGORY)/scummvm/scummvm
ifeq ($(MIYOO_TARGET), miyoomini)
$(CP) $(srcdir)/dists/miyoo/scummvm-miyoomini.png $(bundle)/$(G2X_CATEGORY)/scummvm/scummvm.png
endif
$(CP) $(srcdir)/backends/platform/sdl/miyoo/README.MIYOO $(bundle)/$(G2X_CATEGORY)/scummvm/README.man.txt
echo >> $(bundle)/$(G2X_CATEGORY)/scummvm/README.man.txt
echo '[General README]' >> $(bundle)/$(G2X_CATEGORY)/scummvm/README.man.txt
echo >> $(bundle)/$(G2X_CATEGORY)/scummvm/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)/$(G2X_CATEGORY)/scummvm/README.man.txt
echo '[General README]' >> $(bundle)/$(G2X_CATEGORY)/scummvm/README.man.txt
ifeq ($(MIYOO_TARGET), miyoomini)
$(CP) $(srcdir)/dists/miyoo/launch.miyoomini.sh $(bundle)/$(G2X_CATEGORY)/scummvm/launch.sh
$(CP) $(srcdir)/dists/miyoo/config.miyoomini.json $(bundle)/$(G2X_CATEGORY)/scummvm/config.json
# Workaround for mismatch between SDK and actual device
$(CP) /opt/miyoomini-toolchain/arm-linux-gnueabihf/libc/usr/lib/libpng16.so.16.* $(bundle)/$(G2X_CATEGORY)/scummvm/libpng16.so.16
$(CP) /opt/miyoomini-toolchain/arm-linux-gnueabihf/libc/usr/lib/libz.so.1.2.11 $(bundle)/$(G2X_CATEGORY)/scummvm/libz.so.1
else
$(MKDIR) -p $(bundle)/gmenu2x/sections/$(G2X_CATEGORY)
$(CP) $(srcdir)/dists/miyoo/scummvm.miyoo $(bundle)/gmenu2x/sections/$(G2X_CATEGORY)/scummvm
endif
$(STRIP) $(bundle)/$(G2X_CATEGORY)/scummvm/scummvm
sd-zip: $(bundle)
$(RM) scummvm_$(MIYOO_TARGET).zip
ifeq ($(MIYOO_TARGET), miyoomini)
cd $(bundle) && zip -r ../scummvm_$(MIYOO_TARGET).zip $(G2X_CATEGORY)
else
cd $(bundle) && zip -r ../scummvm_$(MIYOO_TARGET).zip $(G2X_CATEGORY) gmenu2x
endif