Creating a game shortcut for Steam


#1

Hi folks. I like to gather all my games on my steam library, even if it is a rom. So, the trick that I usually do with emulators is creating a shortcut and making it auto exec a game, something like this:

“C:\xxxx\emulator.exe” “C:\xxxx\rom.xxx

That format worked for Citra as well, but with a catch: it doesn’t auto open the game on Citra Edge. It works if I use a specific build, but it won’t load if I link it with the updater. So what I’m doing for now is linking it with the latest build folder, but every time that I update Citra I’ll need to manually change the path.

The official Citra Edge shortcut comes on this format:

C:\Users\User\AppData\Local\citra\Update.exe --processStart “updater.exe”.

I would like to know if there is any way to make it auto load a game after completing the update. I’ve tried adding the rom path after and even adding a delay, but got no luck.

Thanks! :slight_smile:


Creating a Steam shortcut to launch game to use with Steam Link
Steam shortcut issues
#2

This doesn’t seem to be possible with Updater.exe: https://github.com/jroweboy/citra-bleeding-edge/blob/bleeding-edge-base/src/updater/updater.cpp#L298

copyPreviousInstallsUserFolder and checkin for a new version is apparently the only important thing the updater does. The running part is kind of stupid in my opinion.

I’m not sure how (Squirrel) Update.exe finds citra-qt either. However you can apparently add “a=” to pass command line args (which is a string, and not a string array, which makes matters worse)


So the problem is that updating is not decoupled from the poor implementation of running Citra without arguments after the update.
To fix this issue you’d have to create a version of this tool which does not run citra-qt.exe so you can manually run it to upgrade citra first, then run citra yourself. Alternatively expose the update.exe “a=” option (which is tricky because the “a=” option is broken by design anyway).

If you don’t want to automaticly update through steam this is easier as you can probably create a shortcut to Update.exe --processStart=citra-qt.exe -a=<Path to game> - that should launch the latest Citra without ever trying to upgrade.
So once in a while you’d manually have to run Updater to update + run Citra.


//Edit: I’m not on Windows and can’t test this myself. If this actually works I’d be happy about feedback!


#3

Hi there! Thanks for the effort on that. Sadly the Update.exe --processStart=citra-qt.exe -a=<Path to game> didn’t work.

It loads the latest build, but gives an error while trying to load the game

on that old path that I’ve made, I’ve tried the “-e” function and it gave me the same error. The only thing that seems to work is adding the game path right after the citra path, like "C:\xxxx\emulator.exe" "C:\xxxx\rom.xxx" but doesn’t do anything if I apply that on updater path (even with the processStar command).


#4

Can you show what exactly you used? I’m thinking you might have included <> by accident? Maybe the syntax is also slightly different than I thought and you’d have to do -a before --processStart or without the equals or with extra quotation symbols to escape spaces in the path (which is the main drawback of that stupid -a option)

//Edit: Also what’s the Citra output in the log? I’d expect the error message to have a log entry with more details. (That error message happens if the rom could not be found, so the path pointed somewhere wrong)


#5

Sure! The command is (tested with a different order as well):

"C:\Users\User\AppData\Local\citra\Update.exe" --processStart=citra-qt.exe -a="D:\Arquivos de Programas\Emuladores\Citra\Roms\Pokemon Moon.3ds"

Log:


#6

So it breaks at the space.

Try these:

"C:\Users\User\AppData\Local\citra\Update.exe" --processStart=citra-qt.exe -a="D:\Arquivos\ de\ Programas\Emuladores\Citra\Roms\Pokemon\ Moon.3ds"
"C:\Users\User\AppData\Local\citra\Update.exe" --processStart=citra-qt.exe -a="'D:\Arquivos de Programas\Emuladores\Citra\Roms\Pokemon Moon.3ds'"
"C:\Users\User\AppData\Local\citra\Update.exe" --processStart=citra-qt.exe -a="D:\Arquivos%20de%20Programas\Emuladores\Citra\Roms\Pokemon%20Moon.3ds"
"C:\Users\User\AppData\Local\citra\Update.exe" --processStart=citra-qt.exe -a='"D:\Arquivos de Programas\Emuladores\Citra\Roms\Pokemon Moon.3ds"'
"C:\Users\User\AppData\Local\citra\Update.exe" --processStart=citra-qt.exe -a="\"D:\Arquivos de Programas\Emuladores\Citra\Roms\Pokemon Moon.3ds\""
"C:\Users\User\AppData\Local\citra\Update.exe" --processStart=citra-qt.exe "-a=\"D:\Arquivos de Programas\Emuladores\Citra\Roms\Pokemon Moon.3ds\""
"C:\Users\User\AppData\Local\citra\Update.exe" --processStart=citra-qt.exe "-a=D:\Arquivos de Programas\Emuladores\Citra\Roms\Pokemon Moon.3ds"
"C:\Users\User\AppData\Local\citra\Update.exe" --processStart=citra-qt.exe -a=D:\Arquivos\ de\ Programas\Emuladores\Citra\Roms\Pokemon\ Moon.3ds

(You should be able to test these in a terminal: Windows + R key, then type cmd [hit enter] and try using each line on it’s own in the cmd window [hit enter after each])


#7

Whoa. It’s working! Thanks for that Jay! :smiley:

Number 5 and 6 worked like a charm.

"C:\Users\User\AppData\Local\citra\Update.exe" --processStart=citra-qt.exe -a="\"D:\Arquivos de Programas\Emuladores\Citra\Roms\Pokemon Moon.3ds\""

"C:\Users\User\AppData\Local\citra\Update.exe" --processStart=citra-qt.exe "-a=\"D:\Arquivos de Programas\Emuladores\Citra\Roms\Pokemon Moon.3ds\""

Once again, thank you.

Would you mind if I post a tutorial about that later? (I’ll credit you for that, of course)


#8

Sure, the community is responsible for documenting things.

  • What I say on these forums should be taken with a grain of salt but most what I say should be considered as public domain (or GPL etc. if necessary) unless otherwise noted.

Prepare to update your article once we actually have an option to pass arguments through “Updater.exe” (which will probably be tricky)