diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ccd74d554..4f5bcaff10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] +- Add new special platform ID for custom config scripts (eg. compatibility with retropiemenu) - Ignore all known bios and devices for arcade/neogeo platform - Fix Bug with small SHARE partition - Add new Traditional Chinese Language diff --git a/SYSTEMS.md b/SYSTEMS.md index 7d94246527..73e035d010 100644 --- a/SYSTEMS.md +++ b/SYSTEMS.md @@ -227,3 +227,23 @@ EmulationStation where: psp ``` + +## System custom scripts / config + +### [sysconfig] + +You can create a "gamelist" which contains scripts. +You could imagine a script wraper to handle .sh .py, and others... +You could specify "sudo" in <command>, and imagine lot of things. +As for your games, you can add <image> in your gamelist.xml to add some icons. + +``` xml + + myconfig + Configuration + /path/to/scripts + .sh + bash %ROM /dev/tty + sysconfig + +``` \ No newline at end of file diff --git a/es-app/src/PlatformId.cpp b/es-app/src/PlatformId.cpp index e2c0e9256c..6c895f8dc5 100644 --- a/es-app/src/PlatformId.cpp +++ b/es-app/src/PlatformId.cpp @@ -76,6 +76,8 @@ namespace PlatformIds "zx81", "moonlight", + "sysconfig", //Specific external script handler for configuration + "ignore", // do not allow scraping for this system "invalid" }; diff --git a/es-app/src/PlatformId.h b/es-app/src/PlatformId.h index 219f5f7a80..9aae6492db 100644 --- a/es-app/src/PlatformId.h +++ b/es-app/src/PlatformId.h @@ -76,6 +76,8 @@ namespace PlatformIds ZX_81, MOONLIGHT, + SYSCONFIG, //Specific external script handler for configuration + PLATFORM_IGNORE, // do not allow scraping for this system PLATFORM_COUNT }; diff --git a/es-app/src/guis/GuiMenu.cpp b/es-app/src/guis/GuiMenu.cpp index f239393ec1..cc1f9f81d8 100644 --- a/es-app/src/guis/GuiMenu.cpp +++ b/es-app/src/guis/GuiMenu.cpp @@ -479,7 +479,8 @@ GuiMenu::GuiMenu(Window *window) : GuiComponent(window), mMenu(window, _("MAIN M // For each activated system std::vector systems = SystemData::sSystemVector; for (auto system = systems.begin(); system != systems.end(); system++) { - if ((*system) != SystemData::getFavoriteSystem()) { + if ((*system) != SystemData::getFavoriteSystem() + && !(*system)->hasPlatformId(PlatformIds::SYSCONFIG)) { ComponentListRow systemRow; auto systemText = std::make_shared(mWindow, (*system)->getFullName(), Font::get(FONT_SIZE_MEDIUM), diff --git a/es-app/src/guis/GuiScraperStart.cpp b/es-app/src/guis/GuiScraperStart.cpp index 0fb4ba519d..2d05764920 100644 --- a/es-app/src/guis/GuiScraperStart.cpp +++ b/es-app/src/guis/GuiScraperStart.cpp @@ -25,7 +25,7 @@ GuiScraperStart::GuiScraperStart(Window* window) : GuiComponent(window), mSystems = std::make_shared< OptionListComponent >(mWindow, _("SCRAPE THESE SYSTEMS"), true); for(auto it = SystemData::sSystemVector.begin(); it != SystemData::sSystemVector.end(); it++) { - if(!(*it)->hasPlatformId(PlatformIds::PLATFORM_IGNORE)) + if(!(*it)->hasPlatformId(PlatformIds::PLATFORM_IGNORE) && !(*it)->hasPlatformId(PlatformIds::SYSCONFIG)) mSystems->add((*it)->getFullName(), *it, !(*it)->getPlatformIds().empty()); } mMenu.addWithLabel(_("SYSTEMS"), mSystems); diff --git a/es-app/src/views/SystemView.cpp b/es-app/src/views/SystemView.cpp index ea464d7121..4177071e32 100644 --- a/es-app/src/views/SystemView.cpp +++ b/es-app/src/views/SystemView.cpp @@ -247,7 +247,9 @@ void SystemView::onCursorChanged(const CursorState& state) // also change the text after we've fully faded out setAnimation(infoFadeOut, 0, [this, gameCount, favoritesCount, gameNoHiddenCount, hiddenCount] { char strbuf[256]; - if(favoritesCount == 0 && hiddenCount == 0) { + if (getSelected()->hasPlatformId(PlatformIds::SYSCONFIG)) { + snprintf(strbuf, 256, "%s", _("CONFIGURATION").c_str()); + }else if(favoritesCount == 0 && hiddenCount == 0) { snprintf(strbuf, 256, ngettext("%i GAME AVAILABLE", "%i GAMES AVAILABLE", gameNoHiddenCount).c_str(), gameNoHiddenCount); }else if (favoritesCount != 0 && hiddenCount == 0) { snprintf(strbuf, 256,