Jump to content
LaunchBox Community Forums

EpicFail ScummVM Launcher NEW


Recommended Posts

2 hours ago, oblivioncth said:

The change started with 10.12 beta 1, and right now it's on beta 8 I think? So stable 10.12 should be out soon if you dont want to download the beta.

Ok, to make the fixes that I want and maintain the portability, I will have to break the current way I'm doing doing things.  Probably good time to do that. This means people will have to redo their ScummVM setup with the updated plugin once its done.  I plan to move everything into the scummvm folder where ever it lives for 10.12.  Once you've imported your games via the bat files.  I plan to add an option to convert your batrunner imported games to launch scummvm straight from launchbox skipping the batrunner and bat files.  I believe the pause features will then work for those who want them while still maintaining portability with scummvm games and my scummvm configuration utility that converts the scummvm ini file to all relative paths.  Thoughts on this approach?

Link to comment
Share on other sites

4 hours ago, epicfail said:

Ok, to make the fixes that I want and maintain the portability, I will have to break the current way I'm doing doing things.  Probably good time to do that. This means people will have to redo their ScummVM setup with the updated plugin once its done.  I plan to move everything into the scummvm folder where ever it lives for 10.12.  Once you've imported your games via the bat files.  I plan to add an option to convert your batrunner imported games to launch scummvm straight from launchbox skipping the batrunner and bat files.  I believe the pause features will then work for those who want them while still maintaining portability with scummvm games and my scummvm configuration utility that converts the scummvm ini file to all relative paths.  Thoughts on this approach?

I wrote a MATLAB script to scan my scummvm ini and create .scummvm files with the short names and have just scanned in those. I'm content with doing this for the time being; however if I do end up switching back due to features in the future I think that approach sounds fine.

Link to comment
Share on other sites

  • 1 month later...
5 hours ago, Pixelpiper said:

Are you using actual short names (the first part of the section/target before "-") or are you using "gameid" ?    The gameid is, according to ScummVM dev docs, supposed to be unique, but they've seemingly ignored this and it doesn't specify the version at all as they indicated. In many cases it specifies an engine, like sci or agi and doesn't mention the game whatsoever.  The actual short names are in the game target (the [section] of the ini) - this is the only tag that will start a game on Stand-Alone ScummVM.  Libretro can start using either target or gameid.

Libretro docs clearly state to use the Short Name inside the .scummvm files - but as above, this is broken in the core and just won't work for some games.  For example, the short name for Bargon Attack is "bargon" which is shared in all versions (bargon for dos, bargon-amiga for Amiga, bargon-amiga-1 incorrectly for Atari ST, bargon-de for German DOS, etc.). If you try using that in a scummvm file you can start the DOS versions of the game, but Amiga and Atari ST version will drop out to the ScummVM debugger.  If instead you use the full target name or the gameid of "gon" which is identical for all versions, they'll all start correctly.

Using short name with Kings Quest 1, if you start the Amiga or Mac versions they'll each contain the correct copyright date, but they'll be using the darker DOS palette and DOS audio - start each game directly from the ScummVM launcher and you can see/hear the difference.

Kyrandia produces an error on Amiga and other versions, etc.  

Frankly, the whole thing is a giant mess and both ScummVM and the Libretro core are full of inconsistencies and bugs. I've now got a script going that deals with almost all special cases to properly tag a file for every game (I'm testing with over 400 game versions and over 250 titles) - this is only applicable to RetroArch/Libretro. All games that have any details in the LB/EmuMovies databases also download all metadata and artwork (almost everything except some non-game stuff).

WIth respect to stand-alone ScummVM, you can't start games by passing it an external file. But you can start it from an external batch file that can also be made with such a script - something as simple as "scummvm.exe <target_name>" - and naming that file appropriately will allow LB to scrape all details.

Hmm, I personally haven't experienced any of these issues but I'd believe they exist.

I use standalone 2.1.1 so I can't speak for how Retroarch handles starting games, though I did try to mold my setup in a way that would make it easy to change to Retroarch's ScummVM core if I so choose. I don't have access to my setup at the moment but will later today and I don't want say anything about how I ultimately imported my ScummVM games that is untrue in the event that I remember something wrong. So, once I'm in front of it later tonight I'll check the couple details I'm fuzzy with and get back to you. I remember most of how I handled it, I just want to double check a few things.

I have a full set so I know what you mean when it comes to the duplicate short names, but at least in 2.1.1 that is a non-issue mostly.

Edited by oblivioncth
  • Like 1
Link to comment
Share on other sites

7 hours ago, Pixelpiper said:

-snip-

Ok so here is the deal. Like you mentioned, every game that ScummVM officially supports has a (sort of) unique identifier that is its short name. While I don't remember what the ScummVM docs say about this, what I am referring to is the abbreviated name that is used as the header for each game entry within your scummvm.ini. There is a "gameid" for each entry, but this is most certainly not unique as it seems to me like it is more of an "engineid", i.e. telling the Scumm engine which base interpreter to use for that entry, and obviously there are only so many of these that are shared between various games within the ScummVM set.

To clarify, here is an example of the entry for the CD/DOS/German version of "Indiana Jones and the Fate of Atlantis" in my INI:

[atlantis]
description=Indiana Jones and the Fate of Atlantis (CD/DOS/German)
path=D:\LaunchBox\RAI\ScummVM\Standard\German\Indiana Jones and the Fate of Atlantis (CD DOS, German)\
gameid=atlantis
language=de
guioptions=lang_German

The shortname I am referring to is "atlantis" here. Funny enough a lot of these short names seem to be undocumented, or at least are hard to find.

Now, as much as this system seems to work like how MAME handles roms where each game has a truly unique shortname that you can just pass as an argument when starting it and as long as its in your ROMs directory the game will be started without needing to provided a direct path to the rom, it seems that these are rather just default or "preferred" names for each game. This is demonstrated in two ways: First, when you have multiple versions of a game ScummVM, while scanning them in, handles them just like most file systems do when something automatically gets assigned a name that is already taken; it simply appends a number onto the end, with the number simply corresponding to the order in which the versions were found during the scan.

Correspondingly, here is all of the entries of have for my versions of the above game: https://pastebin.com/RWK5UT4x

The "(CD/DOS/German)" version was found first due to its alphabetical position from its folder name, so it was assigned atlantis, while the "Floppy/DOS/English" version was found second during the scan (again due to its folder name) so it was assigned atlantis-1. You will notice that some versions also have their own short names, like atlantis-amiga, but ultimately these are handled the same way in that if you have multiple versions, of that version, -N (where N is the next available number) will simply be appended to the end. So unlike MAME where each game has a fixed internal name that is used to launch it, the short names in ScummVM are more or less an an index for each individual's scummvm.ini to let ScummVM which entry to refer to when starting. There tends to be a lot of overlap between any two person's INIs due to the "prefered" names that are used, but as you add variants of games to any INI, the exact short names that appear will differ depending on the exact variants and folder names that an individual has/used.

So this is how you handle launching any specific version of a game. You have to check what short name it received within your INI and then use that in the command line to start it.

Second, use of the "preferred"/default short names is not at all enforced. In my INI I can change atlantis to thisisadifferentname and then do:

scummvm.exe thisisadifferentname

and it will still launch the CD DOS German version of Indiana Jones and the Fate of Atlantis.

Again, this reinforces the idea that while there are default names, the short names ultimately used for each game are technically unique to each install and are not universal.

As for how I got my collection into Launchbox correctly, I did the following:

  1. Add standalone ScummVM 2.1.1 as an emulator with No Quotes and Name Without Extension checked
  2. Create a new empty folder to hold onto named whatever you want (in my case, a folder called "Launch Files" under the root of where my ScummVM game files are stored
  3. Create a file/folder hierarchy with sole purpose of adding the games to Launchbox in the most optimal way. This is done using my MATLAB script which is explained in the following steps
  4. Iterate over each game entry within the INI, which is easy since they always start with '[', and store the short name and data in the  "description=" field to their own variables.
  5. For each entry, create a folder under that new root folder (i.e. Launch Files) with the name from the description=" field, and then within that folder create a file with the entries short name and ".scummvm" as an extension
  6. Optionally, for better compatibility with Retroarch ScummVM, write the short name of the game only to that file (i.e. atlantis.scummvm will contain the text "atlantis" and nothing else)
  7. Once the script is finished, go into LB and import using the "ROM" files option, point it to the root folder used (Launch Files), tell it to scan sub folders, and tell it to use the folder names as the game title instead of the file names

This way, each game gets the correct title, and the "rom" file for each game in my LB database is effectively shortname.scummvm, which makes it clear what the file is for in my file-system, but since the "Don't use extensions" option is checked only the short name will be passed to scummvm.exe when starting a game. So while that whole folder/file structure you end up creating holds no actual game data, it is ideal for getting games to start correctly with launchbox and ensuring each game receives the correct metadata. This has worked perfectly for all my ScummVM games. 

Now, I did need to do some manual auditing of my game folder names and the "description=" fields in my INI (these are also not strict and you can change them to whatever you wish) due to some games that used the same exact description (I used a separate script to find these) and clean up a few other things, but once that was done the main script took care of 95% of the work. If it helps clarify what I did you can see it here:

https://pastebin.com/y4tMrh0j

Link to comment
Share on other sites

Ah sorry, since there was a bit of ambiguity as to what you were referring to given the poorly defined ScummVM terms due to the lack of documentation, I figured I'd just explain everything I did to be safe. Wasn't aware the entries were referred to as Targets. Good to know. 

I wasn't aware of that issue that LB would have while splitting games. Since each game ultimately has its own ID there would be no issue with keeping the folder derived name on both. I guess after splitting there will be some manual adjustments needed anyway, during which you can fix the name, but that is definitely still annoying.

I agree with you in that I think whoever made the Retroarch docs for ScummVM is conflating gameid and short names. I am also surprised about the lack of documentation concerning many games that ScummVM definitely supports.

It is a shame that so much processing is require to get the games in correctly but I suppose it's still better than having to add them all one-by-one.

Link to comment
Share on other sites

Your steps @oblivioncth captured very well what I eventually broke down and did after the new ScummVM version came out.  Once you resort to normal EXE as emulator and pointer text files, then get benefit of Pause feature in LB as well as "future proof" EXE wise.  The few new games they add over time are easy enough to add. If I was coder I am sure it would have been easier, but having no skill in that area took the brute force approach of doing each folder and modifying the text file in each to match the ScummVM name.  Not elegant but worked and don't have to mess with it anymore. The pointer files usable with standalone ScummVM and Retroarch and folder structure are in ZIP file I attached in this thread.  

Link to comment
Share on other sites

8 hours ago, sundogak said:

Your steps @oblivioncth captured very well what I eventually broke down and did after the new ScummVM version came out.  Once you resort to normal EXE as emulator and pointer text files, then get benefit of Pause feature in LB as well as "future proof" EXE wise.  The few new games they add over time are easy enough to add. If I was coder I am sure it would have been easier, but having no skill in that area took the brute force approach of doing each folder and modifying the text file in each to match the ScummVM name.  Not elegant but worked and don't have to mess with it anymore. The pointer files usable with standalone ScummVM and Retroarch and folder structure are in ZIP file I attached in this thread.  

Definitely convenient for people who are starting fresh, and yea this seems like the way to go.

8 hours ago, Pixelpiper said:

It'd be "REAL NICE" if maybe Jason could update the built-in ScummVM support so it's open-ended.  Remove all the hard-coded Target info from Launchbox and have its list of Targets read directly from the ScummVM ini - which you should be able to point LB to.  The ini has to exist already anyway to use any of these games in LB, otherwise ScummVM itself wouldn't start the games, AFAIK.

That said however, I still don't even know how to import a batch of games all at once for the built-in ScummVM support.  If it has to be done one game at a time, I guess it doesn't really matter, it wouldn't be useful anyway.

I don't know of any other way to import such things without drag and drop other. I don't really know how exactly the built-in version handles things but I had no idea that its targets were hardcoded. This is definitely an issue since like we said the names are not at all guaranteed to be the same between systems.

No clue if Jason will ever have the time or care to get to it, but a built-in import option that reads the INI directly and more or less does what we did through scripting would ultimately be ideal.

Link to comment
Share on other sites

  • 1 month later...

Thanks for this discussion, folks.

I just tried to load one of my ScummVM games and found the system was now broken with the current LB releases. It had been a while since I played one so I had not noticed it was a broken mess. I was using the plugin by epicFail which was a huge time saver and help to the community.

I just wanted to comment on your current discussion and let you know that there are people out here happy that you are discussing the issues and we hope that this can get cleaned up and working for us normal mortals :)

Thank you.

-David

Link to comment
Share on other sites

On 6/22/2020 at 12:58 AM, drswoboda said:

Thanks for this discussion, folks.

I just tried to load one of my ScummVM games and found the system was now broken with the current LB releases. It had been a while since I played one so I had not noticed it was a broken mess. I was using the plugin by epicFail which was a huge time saver and help to the community.

I just wanted to comment on your current discussion and let you know that there are people out here happy that you are discussing the issues and we hope that this can get cleaned up and working for us normal mortals :)

Thank you.

-David

Thanks for the kind words.  Thank you for being so patient with me, I will get the update done.  I'm very mortal, but some will argue the normal part.  Sometimes you just need to drink too much beer, enjoy your family, and ignore the world. :)  

 

Link to comment
Share on other sites

  • 1 month later...

I've got the full Scummvm setup and its working fine, but I fancy trying to use Retroarch to run my Broken Sword games.  However, I've looked at this page and cannot understand the process, as it appears that things have changed since I last setup Scummvm.   Whats this stuff about Scummvm being part of Launchbox ?

Is there a noob guide for an old man like me to follow from start to finish ?

Aim being > Use launchbox to load Retroarch > running Scumm emu > to load Broken Sword 1 (and 2).

 

I've found a YouTube video.

 Thank you

 

update.... this is simply amazing.     Took all of 3 mins once I understood what was required.

 

Edited by spacemonkey
Link to comment
Share on other sites

  • 3 months later...

Using retroarch any scummvm games that use kyra.dat don't work no matter where you put the kyra.dat file. Also like mentioned above phantasmagoria 2 doesn't work (C++ Assertion Failed Error). Folowing this in case anyone find a work around. This has been reported to retroarch/libretro also.

Link to comment
Share on other sites

  • 1 month later...

This is amazing! Very clean setup with the new v4! However, might I suggest to update the first post/description to clarify the installation/configuration process? For anybody else who didn't know exactly what to do;

  1. Launchbox contains ScummVM version 2.0.0 in the ThirdParty folder. It is suggested to update this to 2.2.0 first as this includes a mass import option to ease with adding games.
  2. You can create a ScummVM (or other named) folder under Launchbox/Games and put your games there.
  3. I didn't know what to do with the downloaded dll. Some searching lead me too place it in the launchbox plugins folder and restarting launchbox.
  4. Then it showed the extra scummvm options under the tools menu of launchbox.
  5. I then choose the option; ScummVM import tool (simple). Very helpful guide. At a point it started ScummVM from the ThirdParty folder.
  6. I didn't know you must add the games in ScummVM itself at this point. With having it updated to 2.2.0 I could easily add the whole ScummVM folder under Launchbox/Games and exit ScummVM.
  7. I then imported the games in Launchbox as it suggested.
  8. When trying to run the imported games from Launchbox this did work however the batrunner.exe console window pops up after seeing the startup screen and ScummVM startup screen. This pushed the ScummVM minimized to the background. I could hear the game running but only see the console window with a cursor and batrunner.exe in the title of the console window. Clicking ScummVM from the taskbar showed the game as it should.
  9. I didn't know how to resolve this and tried the Tools command convert batrunner games to launchbox commands. It stated it is experimental and new but solved my problem.

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

  • 1 year later...

Hello together,

I´ve followed the guide to import my ScummVM-games to launchbox and it worked :)

In my setup, I´m running every game, every system through retroarch, so I wanted to keep that for the ScummVM-games. Now here´s a little problem... Every ScummVM-game, I´ll start within retroarch, is always set to a screen-resolution of 320x240 pixels. I´ts fit to my hole screen, but I can count every pixel. I´ve looked in the retroarch settings for that core, but I´ve seen no option, to change the resolution. Did I do something wrong? Or is that the only resolution, which is supported by the core?

Can someone help me, please?

Link to comment
Share on other sites

  • 2 months later...
  • 5 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...