About This File
SteamLauncher Plugin for LaunchBox
SteamLauncher is a LaunchBox plugin designed to allow roms/emulators to easily be launched through Steam, directly from the LaunchBox/BigBox interface, without any complicated setup or technical know-how. Simply follow the instructions for installation (see Installation section), enable the plugin (see How to Use section), and then launch any game as you normally would.
If you have ANY problems with the plugin, I want to know about them. While you are free to post on the plugin thread or send me a PM, the most effective/fastest way to speak with me personally is via Steam. If I am at my computer, I will answer your message immediately. My Steam alias is lahma0. You can click on my alias to open my Steam profile to add me as a friend, or you can copy/paste the following URL into your address bar:
MAME Compatibility Fix
It was recently observed that MAME crashes when launched through a non-Steam shortcut in the latest version of the Steam client. This problem is not directly related to this plugin but being that this plugin relies upon non-Steam shortcuts, it meant that launching MAME via this plugin no longer worked. After a lot of investigation and tinkering by @cammelspit and @JedExodus, @JedExodus managed to find a fix for the issue. Whether launching MAME directly in Steam via a non-Steam shortcut or via LaunchBox/BigBox using this plugin, the fix is to simply modify the launch parameters to include the following:
-joystickprovider xinput -keyboardprovider win32
If one of these parameters already exists when modifying MAME within LaunchBox, you will obviously need to replace it (don't just add a 2nd instance of '-joystickprovider' or '-keyboardprovider'). You can safely ignore any popups/warnings that LaunchBox displays about pause screen compatibility. If you have any problems, feel free to join the plugin support thread by clicking the 'Get Support' button on the right hand side of this page.
6/18/2019 - New Update Adds Resilient Method for Resolving VTable Offsets (Beta v0.9.3.0)
This update makes some significant changes in the way the plugin finds the needed vtable offsets when interfacing with the Steam client DLL. This should finally solve the problem of Steam updates breaking compatibility with the plugin.
5/13/2019 - A New Beta Update is Available (Beta v0.9.2.0)
This new update to the March 2019 Beta fixes some reported issues and contains many small optimizations. If you are new to the plugin, please read the "March 2019 Beta" notice below as well as the rest of the documentation. For a list of changes, please see the Change Log at the bottom of the page. REMEMBER, if you're updating from an old version and want to back it up before replacing it with the update, it must be moved ENTIRELY outside of the LaunchBox root directory or ANY of its subdirectories. Having 2 copies of the plugin ANYWHERE within the LaunchBox directory structure simultaneously WILL cause big problems.
3/16/2019 - Major Overhaul of SteamLauncher - New Beta Available for Download (Beta v0.9.1.0)
There is a new beta version of the plugin available for download. I’ve been working hard over the last few months to complete this major overhaul of the plugin, and I’ve decided to release this beta for those wanting an early peek at the new features.
This new version works in a fundamentally different way when compared to the old version. The biggest change is that there is now a universal toggle to enable/disable the plugin, and when enabled, any game/emulator launched through LaunchBox/BigBox will now be launched via Steam, without the need to select the “Launch via Steam” context menu item. Nearly all of the limitations of the old plugin are now eliminated, enabling features such as compressed rom support, non-default emulator configs (“Launch with [...]”), and startup/shutdown screen support.
The old version of the plugin will still be available for those who prefer to wait for a stable release. However, the current beta still retains the old “Launch via Steam” context menu item whenever the universal Steam launching toggle is disabled. This should make it easy to switch between the old plugin’s Steam launching feature and the new beta’s universal Steam launching feature.
A moderate amount of testing has been done on the new version, but seeing as this is a beta, there may still be some bugs under certain edge cases. If you find anything, please report your findings in the plugin’s forum thread. Before using the new beta, please read the new “How to Use” section in the documentation below. While in transition to the new plugin, please excuse the messy, unorganized documentation. It will be completely overhauled once a stable release of the new plugin is available.
If you want to back up your existing "SteamLauncher" directory prior to installing the beta, MAKE SURE you do NOT leave it inside of the "Plugins" directory OR ANYWHERE ELSE within the directory structure of LaunchBox.. Move it outside of the LaunchBox directory entirely.. If you have 2 copies of "SteamLauncher.dll" ANYWHERE within the LaunchBox directory structure simultaneously, VERY WEIRD THINGS WILL HAPPEN. Strictly speaking, you probably do not have to delete your existing config.xml file before upgrading to the beta, but if you have any problems, close LaunchBox, delete config.xml, and then run LaunchBox again (it will create a new config.xml file when the plugin loads.)
As of v0.9.0.2, the plugin now supports PC/Windows games, DOSBox games, and ScummVM games in addition to emulated games (roms).
UNBLOCK DLL AFTER DOWNLOADING
@neil9000 reminded me that Windows automatically "blocks" DLL files that are downloaded from the internet, so after following the instructions and placing the plugin DLL in your LaunchBox plugins directory, you need to right click the DLL, click 'Properties', and check the box at the bottom of the dialog that is labeled 'Unblock'.
Here are just a few of the features or benefits provided by using this plugin:
Allow LaunchBox to do what its good at - be the sole organizer and maintainer of your rom collection, without having to duplicate its functionality in Steam (something it was not designed for)
Keep your Steam library clean and uncluttered by hundreds of emulator/rom shortcuts
Get all of the benefits of Steam's excellent overlay system while playing any rom or emulator
Take advantage of Steam's infinitely customizable controller configuration (bindings) for both the Steam Controller and nearly all other DirectInput/XInput controllers
Use per-rom or per-emulator controller configurations that are automatically remembered between gaming sessions (without having to create convoluted Steam shortcuts for every rom)
Bypass or improve upon many emulators' extremely limited controller bindings and hotkey options
- Share your "currently playing" status with Steam friends for whatever rom you launched from LaunchBox/BigBox. Example: “YourSteamAlias is currently playing 'Super Metroid (SNES)'”
Features (New/Current Version)
Here are a list of the features added in the March 2019 beta update:
Compressed rom files are now supported (should work the same as when the plugin is not enabled)
Startup/shutdown screens should work normally (as they do when the plugin is not enabled)
Non-default emulator configurations are now supported (when you right click a game and choose a “Launch with” option)
- There are other additional features included with the new beta that will be explained at a later date or upon release of a stable/final version.
.NET Framework 4.7+
Steam for Windows
- Extract the 'SteamLauncher' directory from the compressed package into your LaunchBox plugins directory
- Right click the SteamLauncher.dll file, click 'Properties', and look at the bottom of the dialog (on the 'General' tab) for a checkbox labeled 'Unblock'; if you see it, check that checkbox and click 'OK'; if you don't see it, then you are done
Example: If LaunchBox is located at 'C:\LaunchBox', you would copy the 'SteamLauncher' directory to 'C:\LaunchBox\Plugins'. This would result in 'SteamLauncher.dll' and any additional files (if any) being inside the directory 'C:\LaunchBox\Plugins\SteamLauncher'.
It would be greatly appreciated if you would leave a comment/review on this page with a bit of feedback after installing the plugin and trying it out. Even just a short comment such as, "It works for me" or "Not working" would help out a lot. The plugin was tested on a very limited number of setups and environments prior to release, so any small amount of feedback will help in gauging whether the plugin generally works for most people or whether more testing is needed.
How to Use
After installing the plugin, there is now a simple ON/OFF toggle to enable the new functionality. In LaunchBox, this toggle can be found at the bottom of the “Tools” menu. In BigBox, this toggle can be found near the bottom of the root system menu (go back one level after starting BigBox). The new functionality is OFF by default. To turn it ON, simply click the menu item. When enabled, the menu item text will end with “(ON)” as displayed in the image below. When this option is turned ON, the old plugin’s “Launch via Steam” context menu item will be unavailable.
(Deprecated Information - For new users, simply ignore this. The current version no longer requires this.)
Simply bring up the rom's context menu in LaunchBox (in BigBox or normal mode) and click the option at the bottom of the menu labeled "Launch via Steam"
Note: Currently SteamLauncher will only launch the rom using its default emulator. If you wish to use a different emulator with that particular rom, you will have to go into that rom's settings and change its default emulator (or change the default emulator for the entire platform associated with that rom.)
Customize Platform Names
When roms are launched with the plugin, the title of the game, as Steam sees it, will be in the format of: "Game Title (Platform Name)"
Example: Super Mario Bros. (Nintendo Entertainment System)
For whatever reason, you may want to keep the long "official" name of the platform in LaunchBox, but use a shortened, abbreviated, or different platform name inside of Steam. The plugin has this functionality available, and it can be enabled by following these instructions:
Open the SteamLauncher directory and look for a file named 'config.xml'
If you do not see the file, you need to launch at least 1 game with the plugin, and then manually close LaunchBox, and the file should then appear in the directory
Open the file with a text editor, and look for the line labeled, '<CustomPlatformNames>'
- Anywhere under this line, and before the line labeled, '</CustomPlatformNames>', you can add as many new lines as desired in the format of:
<Platform Name="Original LaunchBox Platform Name" Custom="Custom Platform Name" />
You may already see a couple of example lines in place with fake platform names which you can copy/paste and modify to add your own custom platform names
After making your changes, simply save the file, close it, and then reopen LaunchBox
The next time you launch a game, you should see your new custom platform name substituting the real platform name in Steam (an easy place to see the title of the game you're playing is in the Steam overlay)
- Just to reiterate, here is an example of what the aforementioned lines look like in my config file:
<Platform Name="Super Nintendo Entertainment System" Custom="SNES" />
<Platform Name="Nintendo Entertainment System" Custom="NES" />
<Platform Name="Nintendo Game Boy Advance" Custom="Nintendo GBA" />
<Platform Name="Nintendo Game Boy Color" Custom="Nintendo GBC" />
There appears to be a significant bug in the Steam Client right now that can cause problems with controller bindings under a variety of situations for certain users. If you launch a rom/emulator with LaunchBox and your controller bindings don't seem to be working, simply exit the game and launch it again. This may happen the very first time you try to launch a game using the SteamLauncher plugin (one time total after freshly installing the plugin, not on every new session in LaunchBox). If it happens frequently, please report the problem so further workarounds can be investigated.
Unfortunately I don't run a dedicated call center to provide technical support... However, if you need help with any technical issues or bugs (see 'Debug Logs'), want to suggest a new feature (I am very open to any ideas), just want to chat, or anything else related to the plugin, feel free to send me a PM or shoot me an email at the address listed below.
GitHub Project URL:
(Does not yet reflect the changes made in the March 2019 Beta or newer versions. I will be updating the GitHub as soon as I can.)
LaunchBox Community Forums Profile:
To provide help with any technical problems or to investigate a bug, I will need a copy of the debug log that is generated whenever debug logs are enabled in the configuration file. To enable debug logs follow these instructions:
Close LaunchBox/BigBox (this is important.. changes to the config while LB/BB is running will be overwritten)
Locate the file named 'config.xml' in the SteamLauncher directory and open it with a text editor
Find the line that looks like this: <DebugLogEnabled>false</DebugLogEnabled>
Change the word 'false' to 'true' (do not include the quotation marks)
Save the file and close it
Now simply repeat whatever behavior was causing the issue and/or bug, and after you're sure you've replicated the behavior, manually close LaunchBox
Again, look inside the SteamLauncher directory, but this time looks for a file named 'debug.log' (there may be more than one sequentially named log files if there was an enormous amount of output, but this is unlikely if debugging was turned on just briefly)
- Zip up the one or more log files and attach them to your message, along with the details of your particular setup (Windows version, 32-bit or 64-bit, LaunchBox version, Steam version, SteamLauncher plugin version, etc). The more information the better.
©2017 Valve Corporation. Steam and the Steam logo are trademarks and/or registered trademarks of Valve Corporation in the U.S. and/or other countries.
What's New in Version 0.9.0.3 See changelog
- Some changes to the Steam client API broke the plugin, so this was a quick release to fix those problems
- This release relies mostly on static vftable offsets which makes it less resilient against future Steam updates. I'm looking into implementing new smarter ways to locate vftable offsets, so this is just a temporary fix until I can implement those changes