• Recent
  • Tags
  • Popular
  • Home
  • Docs
  • Register
  • Login
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.
  • M
    meleu @daveyman123
    last edited by meleu 20 Jul 2017, 21:14

    @daveyman123 Here are some ideas to let you find the solution yourself...

    Use this code as inspiration for your runcommand-onstart.sh:

    # getting the rom name with no full path and no extension
    rom_name="$(basename "${3%.*}")"
    # running the python script in background
    sudo /path/to/python/code.py "$rom_name" &

    This one as inspiration for your runcommand-onend.sh:

    # killing the python script
    sudo pkill -f "/path/to/python/code.py"

    And this one as inspiration for your python script:

    #!/usr/bin/python
    
    # I don't know if it's right, just used @daveyman123 code as example
    from UHScroll import *
    import unicornhat as unicorn
    
    import time sys
    
    while True:
        # I have no idea if this command is right, I just used @daveyman123 code as example
        unicorn_scroll(sys.argv[1], 'white', 255, 0.2)
    
        # I have no idea if 5 seconds is OK, adapt it to your needs
        time.sleep(5)
    
    
    • Useful topics
    • joystick-selection tool
    • rpie-art tool
    • achievements I made
    D 1 Reply Last reply 20 Jul 2017, 21:26 Reply Quote 0
    • D
      daveyman123 @meleu
      last edited by 20 Jul 2017, 21:26

      @meleu
      there is still the problem of (i dont know if i mentioned it) the unicorn only scrolls through ONCE (even if i include a loop in python) then it will play a random sequence of lights. I.E. it reads "JIM" or "GOLDEN" in "GOLDENEYE". But as soon as the game launches it freezes or plays random lights.

      My fear is it has something to do with the pins being messed with by retropie. I have not tried to replicate the problem on raspbian.. but I may have to try that.

      What I have tried:
      making sure audio isnt interfering with the unicorn hat pins (i.e. setting the audio output to hdmi)
      and obviously have tried making the python script run in the background

      1 Reply Last reply Reply Quote 0
      • S
        Sano
        last edited by Sano 20 Jul 2017, 21:35

        @meleu said in Getting the rom name and emulator:

        sudo /path/to/python/code.py "$rom_name" &

        Try to modify this line like this :

        sudo nohup /path/to/python/code.py "$rom_name" &
        
        1 Reply Last reply Reply Quote 0
        • D
          daveyman123
          last edited by 20 Jul 2017, 21:38

          @Sano
          nohup was nohelp... lol

          something is happening at the level of the pins i believe

          1 Reply Last reply Reply Quote 0
          • S
            Sano
            last edited by Sano 20 Jul 2017, 21:43

            Ok sorry, could you try

            nohup sudo /path/to/python/code.py "$rom_name" &
            

            (possibly with quotes)
            I'm pretty sure it's because the parent process (runcommand-onstart) terminates before game launch, so the child are killed, including your script.
            This could be solved with the use of nohup, if I ever remember the correct syntax with sudo...

            D M 3 Replies Last reply 20 Jul 2017, 21:50 Reply Quote 0
            • D
              daveyman123 @Sano
              last edited by 20 Jul 2017, 21:50

              @sano

              does nothing when i do that

              my hunch is it has to do with the support for GPIO controllers in retropie. I could be wrong

              1 Reply Last reply Reply Quote 0
              • D
                daveyman123
                last edited by 20 Jul 2017, 22:11

                nah thats not it. The driver packages for GPIO controllers isnt installed

                1 Reply Last reply Reply Quote 0
                • D
                  daveyman123
                  last edited by 20 Jul 2017, 22:18

                  I got it to work with a different game "super mario for snes" so... the problem must be in the emulator settings

                  1 Reply Last reply Reply Quote 0
                  • D
                    daveyman123
                    last edited by 20 Jul 2017, 22:31

                    I think ive pretty much figured it out boys thanks to your help

                    first one to link their paypal gets 20 dollars when freelancer clears

                    M 1 Reply Last reply 20 Jul 2017, 23:08 Reply Quote 0
                    • M
                      meleu @Sano
                      last edited by 20 Jul 2017, 22:48

                      @sano said in Getting the rom name and emulator:

                      I'm pretty sure it's because the parent process (runcommand-onstart) terminates before game launch, so the child are killed

                      I'm afraid this isn't true. Once a process is forked it doesn't depends on his parent life (oh these childrens of today...).

                      I didn't test with the actual -onstart script, but tested a similar scenario in command line before posting.

                      • Useful topics
                      • joystick-selection tool
                      • rpie-art tool
                      • achievements I made
                      1 Reply Last reply Reply Quote 1
                      • M
                        meleu @daveyman123
                        last edited by 20 Jul 2017, 23:08

                        @daveyman123 said in Getting the rom name and emulator:

                        first one to link their paypal gets 20 dollars when freelancer clears

                        If you click on my name at right of my avatar you can see it on my profile page. ;-)

                        • Useful topics
                        • joystick-selection tool
                        • rpie-art tool
                        • achievements I made
                        1 Reply Last reply Reply Quote 0
                        • D
                          daveyman123
                          last edited by 20 Jul 2017, 23:45

                          will do!

                          1 Reply Last reply Reply Quote 1
                          • M
                            meleu @Sano
                            last edited by 21 Jul 2017, 19:27

                            @sano Here is a way to prove what I said:

                            [PROMPT]$ cat father.sh
                            #!/bin/bash
                            echo "FATHER: Hello, I am the father."
                            echo "FATHER: Hey son, say hello to the world!"
                            bash son.sh &
                            sleep 10
                            echo "FATHER: Oh no! I am going to die! NOOOOOoooooo..."
                            sleep 1
                            echo "FATHER: bye!"
                            exit
                            
                            [PROMPT]$ cat son.sh
                            #!/bin/bash
                            while true; do
                                echo "SON: Hello World!"
                                sleep 2
                            done
                            
                            [PROMPT]$ bash father.sh
                            FATHER: Hello, I am the father.
                            FATHER: Hey son, say hello to the world!
                            SON: Hello World!
                            SON: Hello World!
                            SON: Hello World!
                            SON: Hello World!
                            SON: Hello World!
                            FATHER: Oh no! I am going to die! NOOOOOoooooo...
                            SON: Hello World!
                            FATHER: bye!
                            
                            [PROMPT]$ SON: Hello World!
                            SON: Hello World!
                            SON: Hello World!
                            SON: Hello World!
                            SON: Hello World!
                            SON: Hello World!
                            SON: Hello World!
                            SON: Hello World!
                            ...
                            
                            • Useful topics
                            • joystick-selection tool
                            • rpie-art tool
                            • achievements I made
                            C 1 Reply Last reply 21 Jul 2017, 19:43 Reply Quote 2
                            • C
                              cyperghost @meleu
                              last edited by 21 Jul 2017, 19:43

                              @meleu I made same intention here
                              Every 5 seconds one entry is written in log file for 10 times. After a minute or of intensive gaming (Joust Arcade!) you can check tmp/counter.log voila... entry of used Arcade system is there 10 times :)

                              1 Reply Last reply Reply Quote 1
                              • S
                                Sano
                                last edited by Sano 21 Jul 2017, 20:01

                                @meleu @cyperghost
                                My bad then, you're right of course ;)

                                Edit : my guess would only be valid (I think) if the user launching the script disconnects afterward, which is not the case here.
                                I was probably misled by the statement that the scrolling stops when the game launch.
                                It was late here anyway, I was drunk, and my cat was distracting me.
                                Well, enough justifications I think. I'm just obviously no good at this :)

                                C 1 Reply Last reply 21 Jul 2017, 20:11 Reply Quote 1
                                • C
                                  cyperghost @Sano
                                  last edited by 21 Jul 2017, 20:11

                                  @sano The father & son example of @meleu is very reasonable.
                                  High laughter for this :)

                                  Where is grandma-bash? Will son-bash be father soon?

                                  M 1 Reply Last reply 21 Jul 2017, 20:24 Reply Quote 0
                                  • M
                                    meleu @cyperghost
                                    last edited by 21 Jul 2017, 20:24

                                    @cyperghost @Sano
                                    One more note: the init process (the famous "PID 1") is the orphanage. When a parent process dies, its orphan children are "adopted" by init.

                                    Play a little with that father & son example and check the process table with the ps -alf. Look at the PPID column of the son.shprocess before and after the father.sh's death. ;)

                                    • Useful topics
                                    • joystick-selection tool
                                    • rpie-art tool
                                    • achievements I made
                                    C 1 Reply Last reply 21 Jul 2017, 20:31 Reply Quote 1
                                    • C
                                      cyperghost @meleu
                                      last edited by 21 Jul 2017, 20:31

                                      @meleu I see, so the PID changes after the father is dead. So it's necessary to check PID during run if I want to elemenate son.sh
                                      That's indeed interesting and I hopefully will remember if I'm in need to kill everlasting bash process!

                                      M 1 Reply Last reply 21 Jul 2017, 20:53 Reply Quote 0
                                      • M
                                        meleu @cyperghost
                                        last edited by 21 Jul 2017, 20:53

                                        @cyperghost said in Getting the rom name and emulator:

                                        @meleu I see, so the PID changes after the father is dead. So it's necessary to check PID during run if I want to elemenate son.sh

                                        No, no! What changes is the PPID (Parent's PID)! The PID never changes!

                                        • Useful topics
                                        • joystick-selection tool
                                        • rpie-art tool
                                        • achievements I made
                                        C 1 Reply Last reply 21 Jul 2017, 20:56 Reply Quote 0
                                        • C
                                          cyperghost @meleu
                                          last edited by cyperghost 21 Jul 2017, 20:56

                                          @meleu Thank you for clearance. But is the PPID in any way important or is there a usecase? (maybe dumb question?)

                                          EDIT:
                                          Answered myself. The PPID gives relationship of calls so you always know which programm started process x or process y. Helpfull indeed!

                                          M 1 Reply Last reply 21 Jul 2017, 21:08 Reply Quote 0
                                          80 out of 82
                                          • First post
                                            80/82
                                            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.

                                            This community forum collects and processes your personal information.
                                            consent.not_received