RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    Getting the rom name and emulator

    Scheduled Pinned Locked Moved General Discussion and Gaming
    pi model v3pythonscriptretropiesetup
    82 Posts 5 Posters 18.8k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • BuZzB
      BuZz administrators @daveyman123
      last edited by BuZz

      @daveyman123

      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

      To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

      cyperghostC 1 Reply Last reply Reply Quote 0
      • cyperghostC
        cyperghost @BuZz
        last edited by

        @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 definated emulator=$1.

        Can I resolve the $@ command and say emlulator=$1 romname=$2

        What's is the better method to handle those calls?

        BuZzB 1 Reply Last reply Reply Quote 0
        • cyperghostC
          cyperghost @daveyman123
          last edited by cyperghost

          @daveyman123
          You can look to this >> lfl-launcher.source and see lines 33-37

          These 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

          D 1 Reply Last reply Reply Quote 0
          • D
            daveyman123 @cyperghost
            last edited by

            @cyperghost

            very informative Cyperghost. Thank You. so basically retropie is written in bash or am i way off?

            BuZzB 1 Reply Last reply Reply Quote 0
            • BuZzB
              BuZz administrators @daveyman123
              last edited by

              @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).

              To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

              1 Reply Last reply Reply Quote 0
              • BuZzB
                BuZz administrators @cyperghost
                last edited by

                @cyperghost I don't understand your question.

                To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

                cyperghostC 1 Reply Last reply Reply Quote 0
                • cyperghostC
                  cyperghost @BuZz
                  last edited by cyperghost

                  @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 emulator

                  can I just use romfile=$3 variable within python and I get my romfile even by using $@?

                  BuZzB meleuM 2 Replies Last reply Reply Quote 0
                  • BuZzB
                    BuZz administrators @cyperghost
                    last edited by

                    @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 script

                    https://stackoverflow.com/questions/4824590/propagate-all-arguments-in-a-bash-shell-script#4824637

                    To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

                    D 1 Reply Last reply Reply Quote 0
                    • D
                      daveyman123 @BuZz
                      last edited by

                      @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?

                      BuZzB 1 Reply Last reply Reply Quote 0
                      • BuZzB
                        BuZz administrators @daveyman123
                        last edited by

                        @daveyman123 no idea.

                        To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

                        1 Reply Last reply Reply Quote 0
                        • meleuM
                          meleu @cyperghost
                          last edited by meleu

                          @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 emulator

                          can 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
                          
                          • Useful topics
                          • joystick-selection tool
                          • rpie-art tool
                          • achievements I made
                          cyperghostC 1 Reply Last reply Reply Quote 1
                          • cyperghostC
                            cyperghost @meleu
                            last edited by

                            @meleu That's it
                            Thank you

                            D 1 Reply Last reply Reply Quote 0
                            • D
                              daveyman123 @cyperghost
                              last edited by

                              @cyperghost

                              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.

                              cyperghostC 1 Reply Last reply Reply Quote 0
                              • cyperghostC
                                cyperghost @daveyman123
                                last edited by cyperghost

                                @daveyman123 That isn't hard

                                1. nano /opt/retropie/configs/all/runcommand-onstart.sh
                                2. Add your script for ex /home/pi/RetroPie/loop.sh $1 &

                                That's it

                                code example loop.sh
                                make loop executable by chmod +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.

                                D 2 Replies Last reply Reply Quote 1
                                • D
                                  daveyman123 @cyperghost
                                  last edited by

                                  @cyperghost
                                  almost done writing it up
                                  if this works youre a genius!

                                  1 Reply Last reply Reply Quote 0
                                  • meleuM
                                    meleu
                                    last edited by meleu

                                    @daveyman123 can you tell me WTF is an unicorn hat?
                                    I want to believe that you are not talking about this:
                                    unicornhat

                                    @cyperghost I remember that you said you didn't learn programming in a "formal" way. But I would like to make you care more about the importance of indentation.

                                    Please, I don't want to sound like the smart guy teaching you the right way to code. If your code works for you, then it's fine. But I know that you like to share code with the community (giving and receiving contributions), and for this purpose indentation is a basic requirement. ;-)

                                    • Useful topics
                                    • joystick-selection tool
                                    • rpie-art tool
                                    • achievements I made
                                    cyperghostC 1 Reply Last reply Reply Quote 1
                                    • SanoS
                                      Sano
                                      last edited by Sano

                                      More like this I think : https://shop.pimoroni.com/products/unicorn-hat
                                      But yours is way more fun :D

                                      meleuM 1 Reply Last reply Reply Quote 0
                                      • meleuM
                                        meleu @Sano
                                        last edited by

                                        @sano said in Getting the rom name and emulator:

                                        But yours is way more fun

                                        haha! both models are kinda psychodelic! :D

                                        • Useful topics
                                        • joystick-selection tool
                                        • rpie-art tool
                                        • achievements I made
                                        1 Reply Last reply Reply Quote 0
                                        • D
                                          daveyman123 @cyperghost
                                          last edited by

                                          @cyperghost
                                          here is the python script. I think its reading the log just fine.

                                          from UHScroll import *
                                          import sys
                                          import time
                                          import os
                                          import unicornhat as unicorn
                                          infile = r"/tmp/counter.log"
                                          
                                          #print len(sys.argv)
                                          #emulator_name = $1
                                          #emulator_name = os.environ["$1"]
                                          #emulator_name = os.path.basename(os.path.normpath(sys.argv[3]))
                                          with open(infile) as f:
                                              f = f.readlines()
                                          
                                          for line in f:
                                                  rom_name = line
                                                  unicorn_scroll(rom_name,'white',255,0.2)`
                                          1 Reply Last reply Reply Quote 0
                                          • D
                                            daveyman123
                                            last edited by

                                            and here is the loop bash script

                                            #!/bin/bash
                                            counter=0
                                            while [ $counter -lt 10 ]; do
                                            echo The counter is $counter
                                            echo "$3" >> /tmp/counter.log
                                            let counter=counter+1
                                            sleep 5
                                            sudo python /opt/retropie/configs/all/onstart2.py
                                            sleep 5
                                            done
                                            
                                            

                                            and here is the startup script (runcommand-onstart.sh)

                                            /home/pi/RetroPie/loop.sh $1 &
                                            sudo python onstart2.py "$1" &
                                            cyperghostC 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            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.