Getting the rom name and emulator
-
@buzz said in Getting the rom name and emulator:
@daveyman123 https://retropie.org.uk/docs/Runcommand/#runcommand-onstart-and-runcommand-onend-scripts
"Useful data are passed as arguments to these scripts:
$1 - the system (eg: atari2600, nes, snes, megadrive, fba, etc). $2 - the emulator (eg: lr-stella, lr-fceumm, lr-picodrive, pifba, etc). $3 - the full path to the rom file. $4 - the full command line used to launch the emulator."
would i use subprocess.call within python to call these commands?
-
@daveyman123 No - you could call your python script from the bash script passing the arguments in, then when launching a game the code will be called and you can send the game name to your display etc.
-
thank you for the replies. very much appreciated :)
-
@buzz said in Getting the rom name and emulator:
@daveyman123 No - you could call your python script from the bash script passing the arguments in, then when launching a game the code will be called and you can send the game name to your display etc.
OK so i create the bash script and make it executable. inside the script i have given the command "python /path/to/myscript.py"
I can run the bash script from terminal and it works!
However,
when i launch a game the script doesnt runagain i have put the the python script in the "runcommand-onstart.sh" script and not made the script executable or added anything other than what i mentioned before
thanks,
DM123 -
@daveyman123 Where did you put the file ? What version of RetroPie are you running ? Please post the script (use a code block - http://commonmark.org/help/)
-
@buzz said in Getting the rom name and emulator:
@daveyman123 Where did you put the file ? What version of RetroPie are you running ? Please post the script (use a code block - http://commonmark.org/help/)
@buzz said in Getting the rom name and emulator:
@daveyman123 Where did you put the file ? What version of RetroPie are you running ? Please post the script (use a code block - http://commonmark.org/help/)
damnit all i forgot was to put sudo! :/ its working now!
i guess the next question i would ask would be: how do i retrieve the information
in the document you provided it says "$1" will get me the emulator. but i am unsure how to use this with python
thanks so much for your continued help!
DM123 -
python /path/to/myscript.py "$@"
will pass all the script arguments to your python script.
or use
python /path/to/myscript.py" "$1"
to pass a single parameter for example
-
@buzz Just a coding question.
If I use "$@" is there need to use loops to get all arguments or will all arguments pathed?
I used always "$1"... parameters and definatedemulator=$1
.Can I resolve the $@ command and say
emlulator=$1
romname=$2
What's is the better method to handle those calls?
-
@daveyman123
You can look to this >> lfl-launcher.source and see lines 33-37These arguements were created by the bash-file >> create favourties.sh
So the bash file (Create Favourites.sh) gives arguments to binary (lfl-launcher) the first command "/home/pi/RetroPie/roms/My Favourites" was given manually.
BTW: There is no need to use this binary @pjft did a great job introducing favorites in our Emulations Station :D
-
very informative Cyperghost. Thank You. so basically retropie is written in bash or am i way off?
-
@daveyman123 RetroPie-Setup (the installer script etc) is written in bash and so is the launch script. Components are written in various other languages (C/C++/Python).
-
@cyperghost I don't understand your question.
-
@buzz I call a python programm with $@ within runcommand. What will be the result and how does the python script "knows" how many arguments are given.
So if
$1 - the system (eg: atari2600, nes, snes, megadrive, fba, etc).
$2 - the emulator (eg: lr-stella, lr-fceumm, lr-picodrive, pifba, etc).
$3 - the full path to the rom file.
$4 - the full command line used to launch the emulatorcan I just use
romfile=$3
variable within python and I get my romfile even by using $@? -
@cyperghost
"$@"
is all the parameters. eg it expands to"$1" "$2" "$3"
(for any parameters that exist) so it will pass all the parameters on to the python scripthttps://stackoverflow.com/questions/4824590/propagate-all-arguments-in-a-bash-shell-script#4824637
-
@BuZz
@cyperghost
either of you know why i would have to powercycle my entire raspberry pi to get the "Pimoroni Unicorn Hat" to work more than once i.e. it screws up and lighting is random after one scroll through? -
@daveyman123 no idea.
-
@cyperghost said in Getting the rom name and emulator:
@buzz I call a python programm with $@ within runcommand. What will be the result and how does the python script "knows" how many arguments are given.
So if
$1 - the system (eg: atari2600, nes, snes, megadrive, fba, etc).
$2 - the emulator (eg: lr-stella, lr-fceumm, lr-picodrive, pifba, etc).
$3 - the full path to the rom file.
$4 - the full command line used to launch the emulatorcan I just use
romfile=$3
variable within python and I get my romfile even by using $@?I'm not comfortable with python at all, I only learned it to tweak the joy2key tool and never used it again. But I think the answer for your question can be found here: https://docs.python.org/2/library/sys.html#sys.argv
Maybe this example can answer too:
[PROMPT] $ cat args.py #!/usr/bin/python import sys print '\nnumber of arguments:' print len(sys.argv) print '\nhere are the given arguments:' for arg in sys.argv: print arg print '\nhere is the third argument:' print sys.argv[3] [PROMPT] $ ./args.py one two three number of arguments: 4 here is the given arguments: ./args.py one two three here is the third argument: three [PROMPT] $ ./args.py catch errors number of arguments: 3 here is the given arguments: ./args.py catch errors here is the third argument: Traceback (most recent call last): File "./args.py", line 13, in <module> print sys.argv[3] IndexError: list index out of range
-
@meleu That's it
Thank you -
Would you know why something about launching a game stops my unicorn hat from functioning?
If I launch a game and immediately back out it will continue to scroll through the rom on the unicorn hat.
However,
if the game actually launches the unicorn hat stops.
would there be something interfering with the PINS from retropie?I have the python script running in the background but no difference.
-
@daveyman123 That isn't hard
nano /opt/retropie/configs/all/runcommand-onstart.sh
- Add your script for ex
/home/pi/RetroPie/loop.sh $1 &
That's it
code example
loop.sh
make loop executable bychmod +x loop.sh
#!/bin/bash counter=0 while [ $counter -lt 10 ]; do echo The counter is $counter echo "The romsystem is $1" >> /tmp/counter.log let counter=counter+1 sleep 5 done
That's it ... now in
tmp/counter.log
is 10 times written "The romsystem is ....."
As the ROM is loaded in foreground the bash example in background is logging the system.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.