After doing a lot of forum browsing I learned that ScummVM is, in essence, portable, but there are prohibitive factors. I wanted to get over those factors
This topic was quite informative and gave me a good place to start. I thought about posting this in that topic, but didn't think reviving such an old topic would be good form so decided to create a new one.
Here are the significant prohibitive factors referred to, preventing ScummVM from being truly portable...
- 1. scummvm.ini is stored in the main Windows folder. If a USB stored instance of ScummVM is run on a new computer, then ScummVM will just create a new, blank .ini file in that computer's Windows folder. Previously saved settings will not be applied in this case. (This is easily overcome)
2. All of the game paths stored in scummvm.ini are absolute and relative to the machine that applied them. So if a game is added to Computer A where the USB drive might be D:\ it might be referenced in scummvm.ini as D:\scummvm\gamefiles\fotaq\ for example. But if then, when using Computer B, which might have assigned a different drive letter (eg E:\) to the USB then scummvm will be looking in the wrong place and won't find the game. These references need to be made relative rather than absolute with minimum effort.
It's worth noting at this point that all my games are in a subfolder of ScummVM called \Gamefiles\ (It's important that this subfolder is uniquely named and must not have the same name as any parent folder in the path). Every game I added to ScummVM was added from this location.
Also, my Saved games are also saved in a subfolder of ScummVM called \Saved games\.
- 1. Move scummvm.ini from the windows folder to the ScummVM folder, the same folder where the scummvm.exe is stored and run from.
2. Make a backup of it. I copied it and renamed the copy scummvm.ini.old
3. Edit the scummvm.ini file and changed the line that begins savepath= to savepath=.\Saved games\. (the .\ means the path is a subfolder relative of the folder ScummVM is run from.
4. Create a new text document called scummvm.bat.
5. Edit scummvm.bat using a text editor such as notepad or, better still notepad++. Fill it with the following and save it.Code: Select all
@echo off setlocal enabledelayedexpansion REM Put your preferred SDL environment variable settings here set SDL_TOUCH_ABSOLUTE=true REM ************************************************************************************* REM Set your variables REM ScummVM's INI file set vIniFile=scummvm.ini REM Temporary file used by the script (must not already exist as this will be deleted) set vTempFile=TempOut.1234 REM ************************************************************************************* REM This section ensures that all fixed game paths become relative. REM This ensures that the game is portable. As long as all Games are REM stored in the \Gamefiles\ subfolder within the main ScummVM folder REM and ScummVM is executed from this script. (for /f "tokens=*" %%a in (%vIniFile%) do ( set "line=%%a" if /i "!line:~0,5!"=="Path=" set "line=Path=!line:*\Gamefiles=.\Gamefiles!" echo !line! ))>%vTempFile% del /f %vIniFile% ren %vTempFile% %vIniFile% REM Run ScummVM.exe using the new INI file. scummvm.exe -c %vIniFile%
When the end of the ini file is reached, it will delete scummvm.ini and rename the temporary file to become the new scummvm.ini.
Last of all, it executes scummvm.exe with a parameter instruction to use the local scummvm.ini instead of looking in the Windows folder for it.
There you have it. What do you think? I'm sure it can be improved, comment below if you have any ideas.