RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

    Retroachievements: Custom sh script when returning from game?

    Scheduled Pinned Locked Moved Help and Support
    achievementsscripts
    13 Posts 6 Posters 1.4k 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 @wimpy
      last edited by

      @wimpy https://retropie.org.uk/docs/Runcommand/#runcommand-onstart-and-runcommand-onend-scripts

      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

      W 1 Reply Last reply Reply Quote 0
      • W
        wimpy @BuZz
        last edited by

        @BuZz Cheers.. How I missed that I do not know...!

        1 Reply Last reply Reply Quote 0
        • W
          wimpy
          last edited by

          Finally managed it! :)

          Big area = md_image
          Bottom right corner box (Achievements) = md_marquee

          the md_marquee image (showing the achievement status) is generated using Imagicks and retroachievements API upon closing a game. Any eventual changes since last time is updated in the runcommand-onend.sh script before you re-enter the gamelist in Emulationstation.

          alt text
          marquee example:
          alt text

          The scripts and setup is a bit of a hack at the moment, but it works and I'm happy with that :D

          Anyone have any thoughts about this?

          dionmunkD mituM cyperghostC 3 Replies Last reply Reply Quote 5
          • dionmunkD
            dionmunk @wimpy
            last edited by

            @wimpy Great work! You've definitely taken what theming in ES can do to the next level with this. Pretty awesome.

            1 Reply Last reply Reply Quote 0
            • mituM
              mitu Global Moderator @wimpy
              last edited by

              @wimpy Ingenious ! Looks very nice.

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

                @wimpy really great

                1 Reply Last reply Reply Quote 0
                • W
                  wimpy
                  last edited by wimpy

                  Finally done with this for now :)

                  alt text

                  The gamelist.xml entries have either a default "no achievements for this game" default <marquee> or, if they indeed have achievements, will have a game-specific generated <marquee> image showing achievement-status.

                  These <marquee>imagesare generated each time a game is exited.The runcommand.onend.sh script fires a php script i've written that uses Imagick to generate the image and places it in the marquee-artworkfolder.

                  The solution is not yet "deployable" on others setups at the moment as it heavily custom to my setup (all my games and xtras/artwork etc are in my own custom synopsis system), but once I get this to v2 or v3 it might be possible to lift out of my system and into other setups.

                  My initial setup is to display 33 achievements. Up to 10 unlocked achivements + filling rest of spots with locked. Last unlocked achievement will be displayed focused (bigger).

                  Here are two examples of the <marquee> images:
                  alt text

                  ###########################

                  alt text

                  Future updates I've planned:

                  • Different marquee images layouts
                  • Update script to also generate a custom ${system.name}-ra.png image to be shown on SYSTEM view to show x latest achievements unlocked across all games in specific system.

                  Any other inputs or tips for furthering this setup?

                  Quite happy with this so far and just wanted to update :D

                  1 Reply Last reply Reply Quote 0
                  • stooS
                    stoo
                    last edited by

                    Awesome work.

                    If you ever get this more generalised and deployable on other systems I'll be installing it pretty much immediately.

                    W 1 Reply Last reply Reply Quote 0
                    • W
                      wimpy @stoo
                      last edited by wimpy

                      @stoo That is cool to hear and that is my "endgame"-goal with this project :)

                      1 Reply Last reply Reply Quote 0
                      • W
                        wimpy
                        last edited by

                        Right now my system relies on me matching games one-by-one against the RA's gameid to my local gameid in my database.

                        Does anyone know if there is a way for me to read the gamehash retroachievement is using in retroarch inside the runcommand-onend.sh file?

                        (I know I can calculate the hash from "$3 - the full path to the rom file.", but if I understand retroachievements hash-system correctly it does not always use the hash of the romfile itself, but some calculated inside RA after reading the rom with/without header.. which might differ from a bash-calculated hash of the file itself..?)

                        If that is possible it might be possible for me to create a more general "hashlist=>retroachievement-gameid" list instead of having to rely on my personal synopsis system, which in turn makes this a more portable solution.

                        Here is an example of a 1:1 match that allows me to automatically match my rom file-hash against hashlists from RetroAchievements-Api..
                        alt text

                        However; With Super Mario Bros. for NES where one supported hash is 811b027eaf99c2def7b933c5208636de (check http://retroachievements.org/viewtopic.php?t=282) it does not match anything from the RetroAchievements-Api as it's using one of these inside RetroArch:
                        OLD RA Checksum: ff02b25112d3a3163db10e332841b02c
                        NEW RA Checksum: 8e3630186e35d477231bf8fd50e54cdd
                        These are not hashes I can calculate myself it seems.

                        Why the API does not return the hash 811b027eaf99c2def7b933c5208636de I am yet to know, but I've made enquires as to why and/or if it can be fixed in the Api.. but if that does not pan out this would/could be fixed if I was able to get the "hash used inside retroarch for retroachievements"..

                        Hope someone understands my ramblings :D

                        1 Reply Last reply Reply Quote 0
                        • W
                          wimpy
                          last edited by

                          For those interested Ive not updated this script to not only show retroachievements, but also any eventual savestates found for the game on the retropie system.

                          alt text

                          It also updates as soon as you exit a game.

                          W 1 Reply Last reply Reply Quote 1
                          • W
                            wimpy @wimpy
                            last edited by

                            reason the png looks like that is because i made to fit into my updated theme.

                            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.