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

    [dev] Little Favourite Launcher (lfl) v.085 - User Menu release

    Scheduled Pinned Locked Moved Ideas and Development
    favoritefavouritesfavorite eslflcyperghost
    8 Posts 1 Posters 2.5k 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.
    • cyperghostC
      cyperghost
      last edited by cyperghost

      lfl-create the FAVOURITE Creater for RetroPie

      ... and of course it can launch the FAVOURITES

      coded by cyperghost
      06/21/17

      Get all versions on GitHub

      DOWNLOAD HERE

      Source Code Pastebin

      How does it looks like?

      Like a folder with FAVs inside ... Sorted by system :D
      0_1498058912644_Clipboard01.jpg

      What is this now? Tell me!

      A small tutorial with pictures I've written here

      This piece of software automatically creates favourites to your beloved ROMs and store it in your favourite folder.

      All you need to tell lfl-create is

      1. Where are your Favourites stored?
      2. What ROM do you want to run?
      3. What is the systems name?
      4. What cmdline is used to run a ROM (optional as last ressort if nothing works!)

      So if you tell lfl-create you want to favourise Tetris for GB then do it like this.

      ./lfl-create "/home/pi/RetroPie/roms/My Favourites" "/home/pi/RetroPie/roms/gb/Tetris (JUE) 1.1.gb" "gb"
      

      After this a FAV file is created into folder My Favourites and it is named GB - Tetris (JUE) 1.1.FAV

      What are FAV files?

      FAV is a creation by me. In old old old times as the internet was empty space it was used to be good style to use description and info files on BB-systems. You could read them and later (during night) you activated a download to get the software you wanted. The DIZ and NFO files were a short description of the distributor of the software and also offered version number, system depedencies and other useful information.

      The the retro idea was born to use description files for a favourite launcher system.

      If we open that file every information is introduced here

      First line gives the full ROM-path
      Second line gives system Name
      Third line gives command call - this is only for deep digging if there is a failure 
      
      /home/pi/RetroPie/roms/gb/Tetris (JUE) 1.1.gb
      gb
      (empty)
      

      The name lfl-create is indeed a bit misleading! It's not just a creator it is also a lauchner and is able to decode the FAV files and run them
      like the runcommand.sh does.

      Prerequisite #1

      Push RetroPie-Setup to version 4.2.8 (version from 06/16/17)
      Go to RetroPie menu and select and run "RetroPie Setup", Update RetroPie-Setup
      This will cause to get a "User Menu" in runcommand.sh if we press a button during the grey loading box appears....

      Prerequisite #2

      Create a system "My Favourites" in es_system.cfg
      Therefore edit es_systems.cfg in path /etc/emulationstation/ and add code block via nano /etc/emulationstation/es_systems.cfg

        <system>
          <name>favourites</name>
          <fullname>Favourites</fullname>
          <path>/home/pi/RetroPie/roms/My Favourites</path>
          <extension>.fav .FAV</extension>
          <command>/opt/retropie/supplementary/runcommand/lfl-create %ROM%</command>
          <platform>all</platform>
          <theme>favourites</theme>
        </system>
      

      Prerequisite #3

      Compile the source code or copy the delivered binary to /opt/retropie/supplementary/runcommand/
      the binary should be named lfl-create, please check if settings managment is right - file must be executable

      Prerequisite #4

      Content of runcommand_system.txt is available here
      Copy file runcommand_systems.txt to your favourite folder.
      This file is necessary because here are the launching commands for each system deposited.

      If your favourite folder is also located in the ROM folder then the FAVs files are available wie SMB in Windows systems. So use network folders in Windows to copy runcommand_systems.txt in the right place.

      I think that future versions of lfl-create should be able to read out the commands through es_system.cfg directly but well I'm not affinated to do this in the right time now. I know that this is a dirty quirk.

      But the advantages are clear: There is no difference between lauchching the ROM directly from it's system selection or if you run it by FAV call.

      Prerequisite #5

      Last step ... madame e misseu
      The wonderfull User Menu!
      create folder runcommand-menu in /opt/retropie/configs/all

      Place the two usermenuscripts from down in /opt/retropie/configs/allruncommand-menu

      Content of Create Favourite.sh

      #!/bin/bash
      #Add favourites to definated folder
      #by cyperghost 06/21/17
      #FAV folder is the first parameter given to binary lfl-create
      #for ex. lfl-create "/home/pi/RetroPie/My Favourites" let's store all favourites to "My Favourites"
      #
      #Usage and parameters:
      #Scripts get called like this: bash "$script" "$system" "$emulator" "$rom" "$command"
      #So script is the root dir, $system=$1, $emulator=$2, $rom=$3 and $command=$4 
      
      # full command
      # first parameter gives location to your favourite folder ... be sure last character is /
      # Please don't change order of parameters! This will cause conflicts!
      
      /opt/retropie/supplementary/runcommand/lfl-create "/home/pi/RetroPie/roms/My Favourites/" "$3" "$1" "$4"
      sleep 5
      

      Content of Delete Favourite.sh

      #!/bin/bash
      #Delete favourites to definated folder
      #by cyperghost 06/21/17
      #FAV folder is the first parameter given to binary lfl-create
      #for ex. lfl-create "/home/pi/RetroPie/My Favourites" deletes the "$SYSTEM - $rom.FAV" entry in "My Favourites"
      #the only difference is that at last parameter the -del command is written
      #
      #Usage and parameters:
      #Scripts get called like this: bash "$script" "$system" "$emulator" "$rom" "$command"
      #So script is the root dir, $system=$1, $emulator=$2, $rom=$3 and $command=$4 
      
      # full command
      # first parameter gives location to your favourite folder ... be sure last character is /
      # Please don't change order of parameters! This will cause conflicts!
      
      /opt/retropie/supplementary/runcommand/lfl-create "/home/pi/RetroPie/roms/My Favourites/" "$3" "$1" "-DEL"
      sleep 5
      

      Take care of owners rights! User Pi and status X (=755) must be setted.

      Restart Emulationstation!
      Enjoy your Favourites

      BTW: You can create more than one favourites folder - one for the MAME ROW, one for Arcade/NeoGeo, one for Consoles, one for HPC....

      With best wishes and feel free to ask or give contributions
      Please respect the work of others!

      1 Reply Last reply Reply Quote 2
      • cyperghostC
        cyperghost
        last edited by cyperghost

        Version history


        Intital version 0.1 created on 06/08/17

        • Just launching ability and a test what can be done in simple coding
        • Just released for laughing....
        • Never released official! The name lfl-create was used in future version

        version 0.15 created 06/12/17

        • Initial version for lfl-create $ROM $SYSTEM and $COMMAND were used and processed
        • Created a FAV file with only $COMMAND inside
        • launch was initiated just via BASH call from ES
        • Worked also but is dirty and gives a lot of errors
        • First version for public

        version 0.55 created 06/13/17

        • Heavy rework because of using runcommand_systems.txt to initiate 1:1 behaviour to runcommand. sh usual launch
        • lfl-creates acts as launcher and creater now
        • Nicer looking favnames (SYSTEM - romname)
        • Favnames or now lowercase
        • FAVs can called by bash if there is no description available (rename .sh files from ports to .fav and copy them to Favourite folder)

        Version 0.65 created 06/15/17

        • FAVs can now be deleted by double adding ROM to favourite, First add > creates FAV file, second add > deletes fav, third add > creates....
        • FAVs deletion will be indicated by small text message!
        • Never released

        Version 0.75 created 06/21/17

        • Added -DEL Parameter to delete FAVs (if they exists), instead of $4 or $Command use "-del"
        • Never released a bit bogus in the code (to much if and then)

        version 0.85 created 06/21/17

        • Nicer selections via case values
        • Gives output to the user what is happening

        FAV file deleted
        FAV file created
        FAV file already there - do nothing!


        Answer and Question

        Which language did you use?
        This was written in FreeBasic 0.9 for ARMv6 devices
        There is no speed difference between a native compiled C binary

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

          Content of runcommand_systems.txt

          Please place this file into your favourite folder locations. If you have two folder of favourites then copy this file in the two folders. I know that's a quirk I should remove but therefore I first have to parse XML files (which is not very difficult) but this takes a bit of time.

          This file is necessary to get 1:1 runcommand launch!

          Content of runcommand_systems.txtlocate to your favourite folder maybe home/pi/RetroPie/roms/My Favourites
          You might see that it is just an extraction of our well knowen es_systems.cfg

          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ amstradcpc %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ arcade %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ atari2600 %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ atari7800 %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ atarilynx %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ fba %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ fds %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ gamegear %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ gb %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ gba %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ gbc %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ mame-libretro %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ mame-mame4all %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ mastersystem %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ megadrive %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ msx %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ n64 %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ neogeo %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ nes %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ ngp %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ ngpc %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ pcengine %ROM%
          bash %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ psp %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ psx %ROM%
          sudo /home/pi/RetroPie-Setup/retropie_packages.sh retropiemenu launch %ROM% &lt;/dev/tty &gt;/dev/tty
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ sega32x %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ segacd %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ sg-1000 %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ snes %ROM%
          /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ vectrex %ROM%
          bash %ROM%
          
          1 Reply Last reply Reply Quote 0
          • cyperghostC
            cyperghost
            last edited by cyperghost

            reserved

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

              How To

              1. Restart from lfl-create

              1. Create emptly fav-file with any programm you want maybe Relaunch.fav
              2. Add in first line: touch /tmp/es-restart; pkill -f "/opt/retropie/supplementary/.*/emulationstation([^.]|$)"
              3. Restart ES one time manually
              4. Now you can Restart ES via Favourites if you need rescan of directories to discover new ROMs or FAVs

              2. Stop Musik (if mpg123 is installed)

              1. Create emptly fav-file with any programm you want maybe Stop Musik.fav
              2. Add in first line: pkill -STOP mpg123
              1 Reply Last reply Reply Quote 0
              • cyperghostC
                cyperghost
                last edited by cyperghost

                How To create Favourites

                1. Choose your ROM and start as usual

                2. If grey box appears press a button

                3. Select U for User Menu

                4. Select Add to Favourite

                5. Favourite added - ready to go

                Bild Text

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

                  I think I can push this programm to finish (means version 1.0) with all features included that was in my first intension as I designed that program.

                  The v085 is a big step in the right position the only thing that lacks for now is the need for external readout from runcommand_systems.txt. For v100 it would be better to get the runcommands directly from es_systems.cfg

                  My intension was that the program should be as flexible as it could. So I regard the program as flexible as it should and so the path of the es_systems.cfg won't be hard coded in the binary rather given by parameter during start.

                  But this is - in my humble opinion - only a cosmetic effect...

                  1 Reply Last reply Reply Quote 1
                  • cyperghostC
                    cyperghost
                    last edited by cyperghost

                    lfl-create is now on github

                    Feel free to use https://github.com/crcerror/lfl-create

                    May the forks be with you

                    1 Reply Last reply Reply Quote 1
                    • 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.