ScummVM without a console window

edited August 2011 in General Chat
I have recently discovered how to run ScummVM and compatible games without displaying the console window.


From this
Q5JYm.png

to this
W4WH4.png


I can explain how I came about learning this later, but first I feel it necessary to describe how to do this. It does not actually prevent the console window from running, but rather hides it from view. Also, keep in mind that I am running a Windows PC, and have not tested this on other operating systems.

What you basically need to do is create a .bat file which includes a script to run ScummVM (either included with variables or with preset parameters) and convert it to an executable which runs as an invisible application (cmd.exe is still visible in the process tab of Task Manager.)


Preparation:
  • Okay, so first what you will need is a copy of ScummVM, free software which is used to run various older adventure games and such.
  • Next, you will need BAT to EXE Converter. There are other .exe compilers on the net but the reason why I decided upon this one is because you can embed an icon file in the .exe with multiple sizes up to and including 256x256.
  • Optionally, you may also want the ScummVM icon for this, so I've included it here.
NOTE: With this procedure, if you use variables in your batch file (%1, %2, etc.) you may have to enclose parameters entirely in quotes instead of only the filename and path when creating shortcuts.

  • eg., Target: "C:\Program Files\ScummVM\scummvm_noconsole.exe" "--config=C:\Program Files\Games\King's Quest VI\scummvm.ini" kq6-win
    instead of: --config="C:\Program Files\Games\King's Quest VI\scummvm.ini"

Instructions:

1.) Create a batch file with variables (or with set parameters).

--1a.) Open Notepad (click Start -> Run... -> type "notepad"), and input the following:
scummvm.exe %1 %2
exit
It's important to include "exit" here, or else the process hiding the console window may not terminate when you close ScummVM.
  • It should be noted that I personally only use up to 2 parameters (--config, and a gameid) when loading games with ScummVM, so if you use more parameters you will need to add extra variables (%3 %4 %5 etc.) to make room for them. However, many of the available parameters are also capable of being set within ScummVM itself. If you have no idea what I'm talking about, don't worry about it.
--1b.) Save the file as scummvm_noconsole.bat


2.) Convert the batch file to an executable which runs invisibly.

--2a.) Run Bat to Exe Converter. At time of this posting, the latest version is 1.5.1.

--2b.) On the "Batch File:" line at the top, click the [ ... ] box, browse to and highlight your scummvm_noconsole.bat file, then click Open.
  • The path to your batch file should appear in the "Batch File" field, and an identical path and filename should appear in the "Save As" field, except the filename in "Save As" should have an .exe extension instead of .bat.

--2c.) Under the Options tab, in the "Visibility" box, click the "Invisible Application" option. This step is very important, as it's the entire reason we are doing this.

FuZrm.png


--2d.) Optionally: You may also want to embed an icon within the executable file you are creating. If so, click the "Versioninformations" tab (yeah, I know. Bad spelling.=\ ) Click the [ ... ] box on the line next to "Icon File:", browse to and highlight your icon file, and click Open.

F9Nub.png


--2e.) Click the "Convert" button at the bottom.

Note: if you already have a scummvm_noconsole.exe file in the "Save As" folder, the new file will be created with a number (ie. [1], [2], etc.) in the filename.


3.) Move the new .exe file and create a shortcut

--3a.) Move the scummvm_noconsole.exe file to your ScummVM program's folder (eg. c:\program files\scummvm\ ).

--3b.) Now, create a shortcut to the file (right-click the file -> "create shortcut") and place the shortcut in your desired location.


Done. Sort of.

If you click the shortcut, it will open ScummVM, while hiding ScummVM's console window as an invisible application. If you include a gameid (eg. my gameid for Full Throttle is ft ) as a parameter in the shortcut's target line, it will open the appropriate game directly.

  • If you create a shortcut which points to your new executable, but include parameters such as the location of an alternate scummvm.ini file (--config=[path]\scummvm.ini), you may need to put quotes around the entire parameter instead of around the path. (eg. "--config=C:\Program Files\Games\King's Quest VI\scummvm.ini" ...instead of: --config="C:\Program Files\Games\King's Quest VI\scummvm.ini" )

Further, if it bothers you that you can not see your console window, you can easily send the console output to a log file by adding: >scummvm_log.txt (or any other desired path and filename) to the end of the target line in your shortcut.

Comments

  • edited August 2011
    Or you could just download the source, disable the console, and compile your own build. :p Seems just as convoluted a process as this. Maybe even easier.
  • edited August 2011
    This isn't convoluted. All it does is run the console in an invisible application so you don't see it. Simple as that. The only reason why it looks convoluted is because I tried to make the instructions idiot-proof.

    This method only creates a separate file which is dependent on the ScummVM program files being in the same folder. Further, with this method you can safely update ScummVM and overwrite the original ScummVM files without having to redo this process ever again. You do it and it's done, once and for all. If you compiled the source code yourself, you'd have to do it again and again every time you updated ScummVM.
  • edited August 2011
    That's a fair point. This would make life easier in that way.
  • edited August 2011
    I just put ScummVM on my DS. Problem solved for me.
  • edited August 2011
    I've just discovered that with the latest snapshot or source build you can add "--no-console" as a command line parameter for your ScummVM shortcut and it will hide the console window! Like so:

    "C:\Program Files\ScummVM\scummvm.exe --no-console"

    This only works for the daily snapshot, buildbot, or custom build compiled from the latest source code. It doesn't yet work for the regular stable build download on the website.
  • edited August 2011
    Which is then not an option for me.

    I am using a daily build, but an older one that that will snap the window to the edges of a game while in OpenGL Confine mode (which I use for KQ6 for Windows). The current daily builds do not do this, and I find it gives the interface an amateurish or unfinished feel for it not to do so.
  • edited August 2011
    Well, really it's amateurish the other way from a programming standpoint because it causes problems on other platforms due to not all window managers operating in the same way. It causes crashes on other systems. I see where you're coming from, though.
  • edited August 2011
    Why is it amateurish for some versions to have more or less options than others depending on a platform's capabilities? If Windows supports such an ability it should be utilized, especially when the majority of users have Windows PCs.
  • edited August 2011
    Amateurish is fine by me. I wouldn't be able to understand anything more complicated.

    Also, thanks Chyron. Maybe someday I will force myself to be less lazy, buy another power cord, and apply this fix
  • edited August 2011
    buy another power cord?
  • edited August 2011
    Chyron8472 wrote: »
    buy another power cord?

    Right now I have two desktops. And one power cord. All of my classic games and ScummVM are on the desktop without the power cord.
  • edited August 2011
    Right now I have two desktops. And one power cord. All of my classic games and ScummVM are on the desktop without the power cord.

    http://www.amazon.com/Cables-Go-03130-Universal-IEC320C13/dp/B0000510ZO/ref=pd_cp_e_1

    a8TPt.png
  • edited August 2011
    Curses to laziness! It's so troublesome.
Sign in to comment in this discussion.