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

    Getting Started with ES Development.

    Scheduled Pinned Locked Moved Ideas and Development
    guidedevelopmenthow-toself-help
    37 Posts 12 Posters 25.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.
    • E
      EctoOne
      last edited by

      It's the first time I looked at this because I have reached a point where I'm out of ideas how to improve my setup. And the only thing I find annoying is the white UI of EmulationStation.
      But I have to say that I'm a little bit disappointed by this post and can't really understand why it is pinned.
      It's just about github and not really about ES development.
      Sure the github part is good and I learned some things but I expected more.

      Like if/what software is needed to edit the files. From what I've seen, they seem like text files to me, so a basic text editor would be enough but are there better ways or special requirements needed?

      Also how do I find out what to edit? In my case, I took a quick look through some of the files and found one file that had something like setcolor plus hex color values. But of course I'm not sure if those are the correct values. Sure, there's some trial and error involved, but that's why I looked at this to get some tips.

      HexH 1 Reply Last reply Reply Quote 0
      • HexH
        Hex
        last edited by

        @EctoOne Do you know how to compile the source code ?

        Edit whatever you want and try compiling. If it compiles, run the executable. Test if you got what you desired. Make a post detailing your achievements if you think many others might like it too.

        It is impossible for me to know what part of the source you need to edit. The source also keeps updating due to the wonderful efforts of the contributors. It is practically impossible for me to write about everything. This shows git stuff because people have problems with git stuff the most. For c++ stuff you have stack overflow.

        You can make a post or thread seeking help with what you want.

        Sent from 20,000 leagues under the sea.

        Powersaver Emulation station : https://github.com/hex007/EmulationStation
        ES dev script : https://github.com/hex007/es-dev/blob/master/es-tests.sh

        1 Reply Last reply Reply Quote 0
        • HexH
          Hex @EctoOne
          last edited by

          @ectoone said in Getting Started with ES Development.:

          Like if/what software is needed to edit the files. From what I've seen, they seem like text files to me, so a basic text editor would be enough but are there better ways or special requirements needed?

          you need a text editor. You can use one of these: notepad, notepad++, Atom, gedit, xcode, vscode, eclipse, Clion and many more.

          Sent from 20,000 leagues under the sea.

          Powersaver Emulation station : https://github.com/hex007/EmulationStation
          ES dev script : https://github.com/hex007/es-dev/blob/master/es-tests.sh

          1 Reply Last reply Reply Quote 0
          • A12C4A
            A12C4
            last edited by A12C4

            @Hex Is there some kind of UML class diagram or any interesting documentation about design stuff anywhere ? I think that would help a lot.

            Grid view wiki

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

              @sx-111 They're described on the 1st page of the project

              EmulationStation has a few dependencies. For building, you'll need CMake, SDL2, Boost (System, Filesystem, DateTime, Locale), FreeImage, FreeType, Eigen3, and cURL. You also should probably install the fonts-droid package which contains fallback fonts for Chinese/Japanese/Korean characters, but ES will still work fine without it (this package is only used at run-time).

              1 Reply Last reply Reply Quote 1
              • C
                Charononus
                last edited by

                So I followed the directions and set up a fork that I can access at https://github.com/korreckj328/EmulationStation

                However, I do have a question. Does the official Retropie fork have the ability to pull the code I changed at this point? Or would something more need to be done?

                I added some code so that it can compile on macOS fyi.

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

                  @Charononus said in Getting Started with ES Development.:

                  However, I do have a question. Does the official Retropie fork have the ability to pull the code I changed at this point? Or would something more need to be done?

                  That's not how collaborative development works - you need to create a Pull Request to the RetroPie's Emulationstation repository in order for the changes you've added to be incorporated upstream.

                  Btw, your fork doesn't seem to compile on macOS, I tested it with macOS 10.13, Apple LLVM version 10.0.0 (clang-1000.11.45.5).

                  C 1 Reply Last reply Reply Quote 0
                  • C
                    Charononus @mitu
                    last edited by

                    @mitu
                    10.14.3 here and compiled with
                    cmake . -D CMAKE_CXX_COMPILER=g++-8

                    (g++-8 from brew)

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

                      @Charononus I don't have g++ installed and with the clang version included in Xcode it doesn't work.

                      C 1 Reply Last reply Reply Quote 0
                      • C
                        Charononus @mitu
                        last edited by

                        I'll have to take a look at clang. In theory I'm not sure why it wouldn't compile with clang and will with g++. Nothing I did was all that major. Just called some AppleScript to get and set the system volume in place of ALSA on linux.

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

                          @Charononus Just FYI, you might want to test it out also with clang, since you might need it to generate an .app with Xcode.

                          C 1 Reply Last reply Reply Quote 0
                          • C
                            Charononus @mitu
                            last edited by Charononus

                            @mitu
                            Yeah that getting that app bundle was the next step as it just compiles as a unix executable at the moment.

                            Actually wow, clang pops up a lot of errors from files I never touched. Very interesting.

                            C 1 Reply Last reply Reply Quote 0
                            • C
                              Charononus @Charononus
                              last edited by

                              @mitu

                              Hey, quite a long time between my posts but I did get it working with Clang now. Still haven't packed the app into a bundle yet.

                              1 Reply Last reply Reply Quote 0
                              • BenMcLeanB
                                BenMcLean
                                last edited by BenMcLean

                                I am trying it now using the Windows Subsystem for Linux but keep running into problems with missing dependencies, even to get past the cmake part. At the moment, I'm trying to figure out how to install freetype. Isn't there some big giant "sudo apt-get install thing1 thing2 thing3 thing4" command someone could write to grab all the dependencies at once instead of needing people to hunt around to find each one?

                                (later edit) Never mind, I found it.
                                sudo apt-get install libsdl2-dev libfreeimage-dev libfreetype6-dev libcurl4-openssl-dev rapidjson-dev libasound2-dev libgl1-mesa-dev build-essential cmake fonts-droid-fallback libvlc-dev libvlccore-dev vlc-bin

                                1 Reply Last reply Reply Quote 0
                                • BenMcLeanB
                                  BenMcLean
                                  last edited by BenMcLean

                                  Alright, now it builds but will it run?
                                  I get this result:

                                  Creating config directory "/home/ben/.emulationstation"
                                  error: XDG_RUNTIME_DIR not set in the environment.
                                  Apr 25 14:21:21 lvl0:   Error initializing SDL!
                                          No available video device
                                  Apr 25 14:21:21 lvl0:   Renderer failed to initialize!
                                  Apr 25 14:21:21 lvl0:   Window failed to initialize!
                                  

                                  I'm not sure running graphical programs is even possible on Windows Subsystem for Linux. I assumed they would be but I guess that wasn't a safe assumption. I'll have to research this more to find out if that's even possible.

                                  (later edit) Apparently, the thing I need is called an "X server" for Windows. I'm trying vcxsrv

                                  1 Reply Last reply Reply Quote 0
                                  • BenMcLeanB
                                    BenMcLean
                                    last edited by BenMcLean

                                    Yes! I got it to run!
                                    EmulationStation first run

                                    I got help from this page here. It explains how to set up VcXsrv and let you run your graphical Linux programs through it.

                                    HexH 1 Reply Last reply Reply Quote 2
                                    • HexH
                                      Hex @BenMcLean
                                      last edited by

                                      @BenMcLean Thats great, you might want to create a post detailing this

                                      Sent from 20,000 leagues under the sea.

                                      Powersaver Emulation station : https://github.com/hex007/EmulationStation
                                      ES dev script : https://github.com/hex007/es-dev/blob/master/es-tests.sh

                                      BenMcLeanB 1 Reply Last reply Reply Quote 0
                                      • BenMcLeanB
                                        BenMcLean @Hex
                                        last edited by

                                        @Hex said in Getting Started with ES Development.:

                                        @BenMcLean Thats great, you might want to create a post detailing this

                                        This page explains the only stuff you need to do different to build on WSL Ubuntu instead of regular Ubuntu.

                                        However, I have been thinking that the features I want to add would make more sense being in the RetroPie setup menu rather than being in EmulationStation so I've been reading through the source code for that. I have found out that this menu uses Joy2Key to translate the joystick movements into key presses but haven't yet managed to figure out what code is creating all the boxes and blue crap around the menu items or providing the interactivity.

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

                                          @BenMcLean said in Getting Started with ES Development.:

                                          but haven't yet managed to figure out what code is creating all the boxes and blue crap around the menu items or providing the interactivity.

                                          It's called dialog - https://linuxgazette.net/101/sunil.html.

                                          BenMcLeanB 1 Reply Last reply Reply Quote 0
                                          • BenMcLeanB
                                            BenMcLean @mitu
                                            last edited by BenMcLean

                                            @mitu said in Getting Started with ES Development.:

                                            It's called dialog - https://linuxgazette.net/101/sunil.html.

                                            Wow. In that case, the feature I want to add isn't even a RetroPie-specific feature at all.

                                            I want to add an on-screen-keyboard option to dialog and then have the RetroPie setup script use it when text entry is required. That would enable entering the wifi password with a game controller.

                                            So I believe I'd need to start here, (or maybe here?) code up my own new version and then get RetroPie onto using that, with a new -osk command line option.

                                            (later edit) I have started a fork of dialog and even got it to make using this guide

                                            BenMcLeanB 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.