lr-scummvm: request for comments and testing
-
@EctoOne said in lr-scummvm: request for comments and testing:
with the standalone scummvm version i had an extra
scummvm-data
folder for the game files/folders and the svm files in the defaultscummvm
folder. i don't know if that would still work with the lr core and i currently can't test it myself.Hi EctoOne, standard Scumm emulator creates svm files (after adding games from GUI) in the default folder so there is not problem, lr-scumm recognize that svm files but fails when launch games due to data not found.
the only other solution would be to use that setup i mentioned and create symlinks in the default folder to the svm files.
May you explain please, how can I create a symlink? Many thanks
-
@hhromic
Nope, sorry that was not what I meant. I meant that I had my gamefiles in a separate folder namedscummvm-data
instead of the normalscummvm
folder. I mean with ScummVM it doesn't really matter because you have to add them manually with the GUI anyways.
So I only had *.svm files in my default rom folder and that worked. But apparently it doesn't work with the lr core, which makes sense.@marus
I actually never haved used them myself at least not directly from the console.
This page should help: https://www.cyberciti.biz/faq/creating-soft-link-or-symbolic-link/
I suggest again to use a separate folder for the gamefiles, not thescummvm
folder.Then something like this should work (Hopefully):
ln -s /home/pi/RetroPie/roms/scummvm-data/GAMEFOLDER/GAME.svm /home/pi/RetroPie/roms/scummvm/GAME.svm
I have used that method before for other systems but I'm not sure if this would work with ScummVM. Also you can create symlinks only on linux partitions, if you have your games on an usb stick it probably won't work right away and requires some more work.You should test it with one game first and if it works, maybe this will make things easier: https://retropie.org.uk/forum/topic/10849/create-a-custom-es-system-able-to-launch-games-for-many-systems/82
$ ./add-game-to-custom-system.sh -d ~/RetroPie/roms/scummvm ~/RetroPie/roms/scummvm-data/*.svm
That should find all *.svm files and link them in the
scummvm
folder.
NOTE: I usedscummvm-data
in both examples as folder where you put your games. Change it if you want. -
@EctoOne Thank you! I will read and try then let you know, I'm sure it is an annoyng issue for everybody using lr-scumm, if it works this will be hands down the best emulator to play scumm games on Retropie.
-
@EctoOne @marus , guys I got a bit confused with what are you trying to do with that.
@EctoOne , I understand now, you mean the actual game files in a separate folder than the "scummvm" and the symlink the svm files so EmulationStation doesn't see the actual folders of each game?
After checking how recalbox does it, I think I got an idea on how to make it for EmulationStation to display just the game and not the folder, and still make it work as intended. However I need a bit of time to figure out a proper solution. When I have it done I will update the patch and you can test it.
Thanks for all the feedback/testing, very helpful!
-
Update
Good news! Making EmulationStation open the game by its folder directly was easier than I thought :) I implemented this new feature now in the proposed scriptmodule. I updated the instructions in the first post accordingly. To summarise for existing testers:
- Your game directories must have
.svm
at the end of the name. For example:Indiana Jones and the Fate of Atlantis.svm
. Please note that this looks like an extension but is actually just part of the directory name. This is what tricks EmulationStation to consider the directory itself as the "game" and you can then launch it directly without opening it first. - You must first update the lr-scummvm scriptmodule (recommended is to uninstall it and re-patch the scriptmodule, see instructions). Recompiling/reinstalling lr-scummvm is not necessary. Then you need to re-configure the lr-scummvm installation. You can do this using the following commands:
cd $HOME/RetroPie-Setup sudo ./retropie_packages.sh lr-scummvm configure
After you re-configure lr-scummvm and rename your game directories to have
.svm
at the end of the name, you should be able to launch the games from EmulationStation without entering the directories first, and also able to scrape them like any console rom. Let me know how it goes! - Your game directories must have
-
@hhromic said in lr-scummvm: request for comments and testing:
@EctoOne @marus , guys I got a bit confused with what are you trying to do with that.
@EctoOne , I understand now, you mean the actual game files in a separate folder than the "scummvm" and the symlink the svm files so EmulationStation doesn't see the actual folders of each game?
After checking how recalbox does it, I think I got an idea on how to make it for EmulationStation to display just the game and not the folder, and still make it work as intended. However I need a bit of time to figure out a proper solution. When I have it done I will update the patch and you can test it.
Thanks for all the feedback/testing, very helpful!
Happy to read it, anyway it should be the same that Retropie standard Scumm emulator do.
I have Scumm games in subfolders but standard Scumm emulator, once added a game, put .svm file into roms/scummvm so the gamelist does not show subfolders.
For the same games lr-scumm need the .svm files into game folders so now my gamelist got two entries for every game: one for standard scumm and one for lr-scumm, but the one for lr-scumm is a folder with the game inside.
I'll wait for your patch, in the meanwhile i could try ectoone solution to give a little contribute.
Cheers ;) -
@marus I just made a new version of the scriptmodule, see my post above. With this approach, both the standalone and libretro emulators can live alongside. The only modification to your game directories is to add
.svm
to the directory name. The standalone ScummVM should be still happy with this (ignores the internal svm file), and the libretro core is happy (uses the internal svm file). EmulationStation hides the.svm
"extension" of the directory name anyway, so looks lik a "game".
Try the newest iteration and let me know. -
@hhromic said in lr-scummvm: request for comments and testing:
Update
Good news! Making EmulationStation open the game by its folder directly was easier than I thought :) I implemented this new feature now in the proposed scriptmodule. I updated the instructions in the first post accordingly. To summarise for existing testers:
- Your game directories must have
.svm
at the end of the name. For example:Indiana Jones and the Fate of Atlantis.svm
. Please note that this looks like an extension but is actually just part of the directory name. This is what tricks EmulationStation to consider the directory itself as the "game" and you can then launch it directly without opening it first. - You must first update the lr-scummvm scriptmodule (recommended is to uninstall it and re-patch the scriptmodule, see instructions). Recompiling/reinstalling lr-scummvm is not necessary. Then you need to re-configure the lr-scummvm installation. You can do this using the following commands:
cd $HOME/RetroPie-Setup sudo ./retropie_packages.sh lr-scummvm configure
After you re-configure lr-scummvm and rename your game directories to have
.svm
at the end of the name, you should be able to launch the games from EmulationStation without entering the directories first, and also able to scrape them like any console rom. Let me know how it goes!Great! I've just replied to prior post :-D
Are you sure that changing folder name does not affect how the game work?
In addiction, there are some games, like Full Throttle, that have 2 subfolders, I actually have .svm file for this game into roms/scummvm/ft/resources: not sure your workaround work if I rename resurces in full throttle.svm, i'll try it. - Your game directories must have
-
@marus yes I tested it :)
Regarding the subfolders, do not rename internal subfolders!
You just need to rename the main/top folder containing all game files. In your case, just rename the main/topft
folder toft.svm
. Everything else inside (including subfolders) should remain intact.
Also, you don't need to create internal svm files for each subfolder, only in the main/top folder of the game. -
@hhromic I'm going to try, just a clarification: after renaming game folder have I to create .svm file (whit short name inside) inside the folder itself?
-
@marus yes, exactly, like you did before. In summary you should have a directory structure like in this example with two games:
roms/scummvm/ ┣ Indiana Jones and The Fate of Atlantis.svm/ ┃ ┣ atlantis.svm <- "atlantis" inside ┃ ┣ MONSTER.SOU ┃ ┣ ATLANTIS.000 ┃ ┕ ATLANTIS.001 ┕ Day of the Tentacle.svm/ ┣ tentacle.svm <- "tentacle" inside ┣ MONSTER.SOU ┣ TENTACLE.000 ┕ TENTACLE.001
Remember that if the game has more subdirectories, just leave them there untouched, the only thing that matters is the main directory having ".svm" at the end of the name and the game ".svm" file inside with the game id.
Let me know how how it goes for you. Thanks for testing! -
@BuZz I have a curious question. How strong is the requirement for modules to compile using
-O2
? The Makefile of the core defaults to-O3
and the resulting binary seems to be working fine. If we allow this optimisation I can get rid of the small patch this scriptmodule is applying to force-O2
. What do you think? -
@hhromic can leave it as O3. O2 is just our defaults
-
@BuZz great, I will test more with the default O3 from the core. In general the scriptmodule seems to be evolving good and getting good reception and ideas, should be ready to submit soon :)
-
@hhromic I tried to follow your instruction about repatching script but something is gone wrong, now i have to reinstall lr-scumm. Maybe you should write step by step how to uninstall and patch the script, at least for no experts 😉
No more time for testing these days, Once reinstalled i’ll give you some feedback, thanks again for your work! -
@marus oh, sorry to hear. Anyway is not such bad news as I now am no longer forcing O2 optimisation for the binary building, but the default O3 from upstream. This should create, in some cases, a better optimised/faster binary.
To uninstall, update the patch, and restart from a clean state (rebuild the binary), execute the following commands step-by-step:
cd $HOME/RetroPie-Setup # go to the RetroPie Setup directory sudo ./retropie_packages.sh lr-scummvm remove # remove lr-scummvm core rm -rf scriptmodules/libretrocores/{lr-scummvm.sh,lr-scummvm} # remove scriptmodule and old scriptmodule data patch -p1 < <(wget https://github.com/hhromic/RetroPie-Setup/compare/master...add-lr-scummvm.diff -qO-) # re-patch with new version of the script sudo ./retropie_packages.sh lr-scummvm clean # clean any old build directory sudo ./retropie_packages.sh lr-scummvm # re-build lr-scummvm, configure and re-install
Then make sure your games are in the new format:
.svm
at the end of each folder name and a unique.svm
file with the corresponding gameid inside each game folder.Finally, restart EmulationStation and you should see your games under the scummvm system as single entries and not folders. If you click on any, it should immediately launch the game. You can also scrape the system too to get art and metadata for the games.
Take your time to test and let me know of your feedback when you can :), much appreciated!
-
Great work @hhromic . I want to share with you some information you may find useful.
During the evolution of OpenBOR on Retropie (now compiled from latest source, fully functional) with great efforts by @cyperghost, @darknior and @zanac, who has been paramount, & made us aware of GL4ES, which is a wrapper to provide OpenGL 2.x functionalty.
@zanac has compiled and shared his gl4es lr-scummvm binary, as well as recommendations for compiling with GL4ES, which retroarch can use natively!
https://retropie.org.uk/forum/topic/13784/openbor-finally-working-fine-on-retropie-with-es/299?page=15
(you can find the link to his lr-ScummVm core in post #307) -
@BiZzAr721 thanks for the support and for the information you shared.
I checked the post you referenced however I got a bit confused. The scriptmodule I'm proposing is pulling
lr-scummvm
from the official libretro repository here: https://github.com/libretro/scummvm. If I understood the post correctly, @zanac already mentioned that same repository for his build, so i guess his contributions are already there upstream? In that case his contributions to the core are already being pulled and used in this scriptmodule :)Just to clarify, I'm not trying to port/adapt ScummVM to libretro on my own, but I am creating a retropie scriptmodule for building, configuring and installing the official upstream libretro core mentioned above to be as out-of-the-box experience as possible.
-
Update
Good news about the annoying Random-Freeze-on-Quit bug of the core! I dedicated some time to try to debug the problem and I think I found a solution. At least for me,lr-scummvm
is not crashing anymore when quiting games using the HOTKEY+START combo :)I already updated the scriptmodule now to add a patch with the fix, I would really appreciate if testers can check if the freezing is gone when quiting directly from RetroArch (e.g. using the exit combo) instead of the ScummVM internal menu.
If the patch is confirmed to be a suitable solution, I will send the patch upstream and hopefully can be merged (this means for example Android builds would also be fixed cc @EctoOne ).@marus , I hope you have the time to test the fix and report back on your side.
Edit don't forget to uninstall and re-install the scriptmodule (see OP instructions) to make sure you get the patch and the new scriptmodule.
Edit2 I tested with all my current games (see OP) and they all seem to be quiting now fine with the fix :) -
@BuZz , I would like some advice from you to improve user experience :)
I've been studying on supporting launching scummvm games directly from the game folder in EmulationStation (single operation) instead of having to enter the folder and launch the svm file in there (two operations). Also, by having ES recognising the folder itself, it's easier to scrape the games too.
I managed to make this work by means of a hack in the emulator entry of the scriptmodule in this way:
local -r emulator_cmd=( "$emudir/retroarch/bin/retroarch" -L "$md_inst/scummvm_libretro.so" --config "$md_conf_root/scummvm/retroarch.cfg" %ROM%/*.svm ) addEmulator 0 "$md_id" "scummvm" "${emulator_cmd[*]}"
The method is very simple as you can see. When the game folder has a known extension for EmulationStation (
.svm
for example) then at launch%ROM%
will be the folder itself in runcommand. Therefore, by adding/*.svm
, runcommand will build the final cmdline with any.svm
FILE inside the rom "folder" to pass to RA.This works fine as long as there is a single
.svm
file in the game folder. However I think this can be done more reliable and elegant in runcommand itself.My proposal is then to make a convention and make runcommand detect if the passed
%ROM%
is a folder, then search if there is a single file with the same extension as the passed folder inside, and if so, use the folder + file found as the final rom in the cmdline. This change is trivial and should be non-intrusive.The most important benefit is that this would not force users to rename their scummvm game folders (keeping the two-clicks to launch if they wish), and users that do so would get the "one-click launch" feature. Currently, the hack in the scriptmodule requires that the folders be renamed with the extension of scummvm to be used as roms by ES. I believe some users might not get this at first.
If you believe this is a worthy argument/use case, I can make the modifications to runcommand, test them and send a PR for you to review. Thanks!
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.