Let's Pimp Out our Steam Library!

Discussion in 'Technical Discussion' started by Metal Knuckles, Aug 6, 2014.

  1. Metal Knuckles

    Metal Knuckles

    HAVE SOME FUN WITH MIKU Member
    4,942
    0
    0
    New Hampshire, USA
    Shadow Alpha, an awesome hack of Sonic 1
    Sup.

    There's already a Steam thread or two in General Gaming, but I'd like to address some of the more technical aspects of the software. Steam is pretty swell, since it allows people to interact with each other in the gaming community. However, my interests lie in it's functionality as a video game media center. More specifically, I enjoy sticking as many of my games into the library as possible, for the sake of convenience (as well as showing your friends what games, both Steam and not, you are currently playing). And while adding non-Steam games to the library is largely a simple affair for several applications, the functionality and aesthetics of what Steam has to offer are somewhat lacking.

    Because of this, I'm going to showcase some of the different methods I use to add non-Steam games to my library. Hopefully, this can help some users of the forum who share this same obsessive problem as myself, as well as provide a neat functionality for those with merely a passing interest. Maybe we can also foster some discussion to improve these methods.

    Please keep in mind that this is done with the 'Game Details' view in mind, as all other grid/banner views are a waste of visual space. Additionally, I have no idea how to replicate this on a Mac or Linux distro. Also, I presume you know how to navigate through basic Steam functions, such as adding a non-steam game, without having your hand held the entire way.

    Adding Games without .exe Launchers

    Note: Steam in-game overlay will not work with this method.

    The first major issue with Steam is that it can only launch .exe files. This isn't a problem with most games, but the same can't be said for flash games or other specialty extensions. Because of this, we need to sneak a middleman executable into the process.

    What you'll need:

    First, we'll be creating a .bat that will inevitably become a .exe. Open up a text file and insert the following (for the sake of this example, I'm using that Google Pacman header from yesteryear):

    Code (Text):
    1. @echo off
    2. cd /d "D:\Games\Google Pacman"
    3. start /wait pacman.swf


    Of course, replace the directory and game with your own information. What this will do is create a set of commands to open the game file when this runs. The "/wait" command will keep the executable running until the game that was opened is closed. While optional with regards to launching the game, it will allow you to maintain an in-game status on your friend's lists. After this has all be completed, save the file with a .bat extension rather than the default .txt extension.

    Next, you'll want to open up the converter, which should look like this:

    [​IMG]

    You'll want to make the following changes to the default settings on the Options tab:
    • Visibility - Invisible Application
    • Working Directory - Temporary Directory

    For Batch File, select the .bat file you just created. For Save As, choose whatever directory you want the executable in (I myself created a "Launchers" folder), and choose the file name. Finally, navigate to the Version Informations tab, and select the icon file you chose/created. You should now be ready to click Compile.

    BOOM! Middleman executable created. Add it to the Steam Library, you magnificent sonuvabitch.

    Changing Game Icons without the (stupid) Shortcut Mark

    Note: Steam in-game overlay will not work with this method.

    This is for those who are truly anal in their lifes' pursuits. Suppose you have a game in your library with an ugly icon. You have the option to change it to an icon of your own choice through the properties, but that icon will then be tainted (heresy!) with a little shortcut mark. I have no idea why Steam won't fix this, it's been a problem forever. Whatevs, we got this... conveniently enough, using the same exact methods we just went through above! Hence the slightly altered copy-paste job below.

    What you'll need:

    First, we'll be creating a .bat that will inevitably become an alternative .exe. Open up a text file and insert the following (for this example, we'll go with the historical novel Fate/Stay Night):

    Code (Text):
    1. @echo off
    2. cd /d "D:\Games\FateStay Night"
    3. start /wait Fate.exe  


    Again, replace the directory and game with your own information. After this has all be completed, save the file with a .bat extension rather than the default .txt extension.

    Next, you'll want to open up the converter:

    [​IMG]

    You'll want to make the following changes to the default settings on the Options tab:
    • Visibility - Invisible Application
    • Working Directory - Temporary Directory

    For Batch File, select the .bat file you just created. For Save As, choose whatever directory you want the executable in, and choose the file name. Finally, navigate to the Version Informations tab, and select the icon file you chose/created. You should now be ready to click Compile.

    We are now two for two! Good work (have I mentioned how handsome you look today?).

    Adding ROMS that Launch through the Emulator (Thanks to CheatFreak for the additional info regarding ICE's features)

    This is the neatest function in my opinion, due to the shit ton of emulated games I'm sure we all have on our computers. By going through with this method, we can add ROMs for any cartridge system, and have them both use the emulator icon and launch through the emulator itself.

    What you'll need:
    • A ROM
    • An Emulator

    This method is actually infinitely easier. Just add the emulator as a non-Steam game, then navigate to the properties. You should see something like this:

    Code (Text):
    1. "D:\Games\ROMs\SNES\SNES9X\snes9x-x64.exe"


    Now simply add the directory of your game of choice, as seen below:

    Code (Text):
    1. "D:\Games\ROMs\SNES\SNES9X\snes9x-x64.exe" "D:\Games\ROMs\SNES\Super Mario RPG - Legend of the Seven Stars.smc"


    That's it. It's literally that simple. Way to go kid, you're gonna go far.

    Super Secret Alternative Option! For large numbers of ROMs, just use ICE. It handles batches of different ROMS/Emulators much faster than adding dozens of games manually through the above method. It also assigns the Steam library game name based on the name of the ROM, and automatically downloads banner art for all matching game names in their database. Because of this, you'll want to double check the names of your ROMs before running the program.

    Adding PSX ISOs that Launch through the Emulator

    This isn't too different than the normal methods for ROMs, actually. The only difference is that you need to add a set of commands that will actually load the ISO, as the emulator can't just run it like with cartridge-based games. Also, using ICE will require some post-run inserting of commands.

    What you'll need:
    • An ISO
    • An Emulator (epsxe)

    Just like before, add the emulator as a non-Steam game, then navigate to the properties. You should see something like this:

    Code (Text):
    1. "D:\Games\ROMs\PS1\ePSX2e\ePSXe.exe"


    Next, you'll want to enter two commands, "-nogui" and "-loadiso". These will skip the startup screen and automatically load the ISO. Then add the directory to the game:

    Code (Text):
    1. "D:\Games\ROMs\PS1\ePSX2e\ePSXe.exe" -nogui -loadiso "D:\Games\ROMs\PS1\Mega Man Legends.iso"


    Now you should be able to play your games in- huh? What's that? Your launching of the game is missing a certain little... something?

    Code (Text):
    1. "D:\Games\ROMs\PS1\ePSX2e\ePSXe.exe" -slowboot -nogui -loadiso "D:\Games\ROMs\PS1\Mega Man Legends.iso"


    Of course it was. My bad.

    This is currently what I have so far. I'm looking to further this list to include other disc-based emulators, but truth be told my laptop can only run them so well past the 90's generation of consoles. If others are willing and able, let's determine the methods needed to do this with other emulators, and I will update this post to include those methods (with credits to the originators of course).

    As for a starting point? I'm trying to figure out how to get Saturn games to boot through Steam using SSF (given it's the best Saturn emulator currently out there). The problem is that SSF doesn't load ISOs, so games need to either be loaded in a physical disc tray, or mounted with something like Daemon. I've figured that the best bet in this regard would be creating a launcher executable which mounts the specified ISO through Daemon, launches SSF, inputs the commands needed to switch the BIOS to whichever one is appropriate for said game, then unmounts the disc image upon closing of SSF. A tall order, and I have no idea where to start.
     
  2. CheatFreak

    CheatFreak

    Everything or Nothing. Member
    59
    8
    8
    Michigan
    BetterSADX Patch
    Might be a good idea to mention ICE. for the roms section.
    http://scottrice.github.io/Ice/

    Edit: Oh hey- you did. Neato.

    You should probably add that roms must be named exactly how you want them to be added to steam- and it auto downloads grid art if they are named exactly the title of the game.
     
  3. Metal Knuckles

    Metal Knuckles

    HAVE SOME FUN WITH MIKU Member
    4,942
    0
    0
    New Hampshire, USA
    Shadow Alpha, an awesome hack of Sonic 1
    Done and Done. A lot of the additional details regarding using ICE can be found on the site's FAQ as well as the included text files, so I'll just leave the link to the site for those.
     
  4. Covarr

    Covarr

    Sentient Cash Register Member
    4,233
    3
    18
    Trapped in my own thoughts.
    Two stageplays, a screenplay, and an album
    For those among the non-.exe crowd that use OpenGL or Direct3D, will this allow the in-game overlay to work? I recall having trouble with it in the past with Minecraft, but that might've been an issue with Java, however I was able to get around it by building a launcher in AutoIt 3.
     
  5. Metal Knuckles

    Metal Knuckles

    HAVE SOME FUN WITH MIKU Member
    4,942
    0
    0
    New Hampshire, USA
    Shadow Alpha, an awesome hack of Sonic 1
    It won't with the method I described. I think it's because as far as Steam is concerned, the launcher executable is the game, while the game the launcher starts is completely unrelated. I don't know if there could be some sort of method of having the executable become an invisible fullscreen application, but than that brings up the question of whether it would even overlay over the launched game (because if the game was being played the launcher executable, and by extension any overlays, would be behind the game screen).

    What's the method using AutoIT 3?
     
  6. Covarr

    Covarr

    Sentient Cash Register Member
    4,233
    3
    18
    Trapped in my own thoughts.
    Two stageplays, a screenplay, and an album
    It's almost identical to the method described, but using AutoIt code. Here's an example I threw together of running Fusion this way:

    Code (Text):
    1. #NoTrayIcon
    2. RunWait("C:\Emulation\Fusion364\Fusion.exe")
    3. Exit
    The trick is, AutoIt's Run and RunWait functions parent the launched game to the launcher (I'm sure there's a more proper Windows term for this, but I don't know what it's called), so Steam knows they go together and can figure out to use the overlay on the game. This is different from Bat 2 Exe Converter, which as far as I can tell creates no such association between apps.

    In the past, I've used AutoIt to make fancier launchers for multi-disc PSX games, though I'm afraid I've lost the source to those. It was pretty cool to have a Parasite Eve icon that opened a launcher, which showed a pic of the game's cover art and buttons for discs 1 and 2. I might rebuild it sometime to show what I mean. It was specifically tailored to work with either pSX or ePSXe, though if I did it today I'd also let it use mednafen (my current psx emulator of choice). I'd probably see about adding gamepad support also to make it big picture friendly (big picture didn't exist last time I tried this), though I suspect that'd be much more difficult.

    edit: Hmm, I think I'm starting to get too ambitious for AutoIt... but I don't feel like learning a more appropriate language.
     
  7. CheatFreak

    CheatFreak

    Everything or Nothing. Member
    59
    8
    8
    Michigan
    BetterSADX Patch
    I managed to accomplish this easily with a batch. The best Idea I have for the appropriate bios thing- The best solution I could come up with is keeping 2 copies of SSF, each configured with the bios you want, and edit the path of which one you are mounting.

    SSF will also have to be configured properly- obviously.

    If you had daemon tools lite, I suppose that would still work, but I'm not sure it'll be as seamless- and I haven't tried it with lite since I have a paid copy of Ultra.
    Obviously you'll have to edit this for each rom, and change the paths and such for your version of Daemon Tools.
    Once the batch works- you'll need to produce an executable via the conversion method in the OP and add it to steam.

    Code (Text):
    1. @echo off
    2. start /wait "" "C:\Program Files (x86)\DAEMON Tools Ultra\DTAgent.exe" -unmount_all
    3. start /wait "C:\Program Files (x86)\DAEMON Tools Ultra\DTAgent.exe" "C:\Users\Matt\ROMs\Sega Saturn\125 Sonic 3D Blast (U).cue"
    4. cd "C:\Manually Installed Programs\Emulators\SSF\"
    5. start /wait ssf.exe
    6. start /wait "" "C:\Program Files (x86)\DAEMON Tools Ultra\DTAgent.exe" -unmount_all
    First it tells daemon to unmount all virtual drives, then it tells it to mount the image you want to play, then it opens my emulator dir, then runs the copy of SSF with the proper bios configured which then starts immediately playing the game, and once SSF closes, it unmounts the game.

    Also, the Bat to Exe Converter Installer is for some reason picked up as malware on some Antivirus programs. The actual program it installs isn't though, just the installer for it is detected as malicious. No idea why exactly- but I figured it was worth mentioning.

    If you need to make icons, heres an easy way to do that.
     
  8. Metal Knuckles

    Metal Knuckles

    HAVE SOME FUN WITH MIKU Member
    4,942
    0
    0
    New Hampshire, USA
    Shadow Alpha, an awesome hack of Sonic 1
    So I was messing around with AutoIt for the first time, and I think I managed to Frankenstein an effective script for running games on SSF w/in-game overlay:

    Code (Text):
    1. #NoTrayIcon
    2. $game   = "D:\Games\ROMs\Saturn\HYPER_DUEL.CUE"
    3. $emulator   = "D:\Games\ROMs\Saturn\SSF_012_beta_R4\SSF.exe"
    4. RunWait ( 'C:\Program Files (x86)\DAEMON Tools Lite\DTLite.exe -mount 0, "' & $game & '"' )
    5. $PID = Run ( $emulator )
    6. Run ( @AutoItPID & '" "' & $PID & '"' )
    7. ProcessWaitClose ( $PID )
    8. Exit


    I'll be experimenting around with this a bit more, but I should be able to create a Sega Saturn tutorial with this as a base. I should also be able to spit out an alternative method to the bat-to-exe methods above, so as to have the overlay included on those as well.

    The only problem I ran into was Avast freaking the ever loving fuck out about my compiling and executables, but a few exclusions in the real-time shield fixed that up well enough.
     
  9. CheatFreak

    CheatFreak

    Everything or Nothing. Member
    59
    8
    8
    Michigan
    BetterSADX Patch
    The method I posted above seems to work with the overlay fine.

    Edit: Steam Overlay seems to hook the first thing it can show the overlay on. Open GL, DirectX and maybe a few other..? are typically supported.
     
  10. Metal Knuckles

    Metal Knuckles

    HAVE SOME FUN WITH MIKU Member
    4,942
    0
    0
    New Hampshire, USA
    Shadow Alpha, an awesome hack of Sonic 1
    I never bothered writing a batch file for conversion that launches emulators, so that could definitely be the case. However, doing the same for a non-executable game (or for another executable game) has had no luck with the overlay. I can't seem any obvious reasons as to why, since your batch file doesn't seem to show much difference from the ones already described in terms of the script.
     
  11. CheatFreak

    CheatFreak

    Everything or Nothing. Member
    59
    8
    8
    Michigan
    BetterSADX Patch
    Obligatory Example Post:
    Game Gear games!
    [​IMG]
     
  12. TimmiT

    TimmiT

    ¯\_(ツ)_/¯ Member
    A recent update also added the option to hide games in your library. So if you ever got something on Steam that you don't want, you can have it only show up in a seperate library called "hidden".
     
  13. Tets

    Tets

    one rude dude Oldbie
    843
    16
    18
    I've been running the Steam Client Beta for a while now, and I must say the new categorization features are quite nice, most notably the ability to select multiple games. Finally I was able to organize my list without painstakingly changing each item's category individually. And none too soon, my Steam collection was getting a bit out of hand.
     
  14. Panko

    Panko

    Member
    8
    0
    1
    I have made a couple of covers for Sonic games on Steam. Now if only I could get Sonic R to work on Windows 7 64-bit! Also, the Sonic Unleashed cover will be good when the Unleashed Generations mod is released, or if the game is ever brought to PC (come on Sega!)

    [​IMG]


    [​IMG]
     
  15. CheatFreak

    CheatFreak

    Everything or Nothing. Member
    59
    8
    8
    Michigan
    BetterSADX Patch
    [youtube]http://www.youtube.com/watch?v=w9Bx9kSnZjM[/youtube]
    Made a quick video showing off my library, post ice.