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

    Retropie 4.x on Odroid C2

    Scheduled Pinned Locked Moved Ideas and Development
    odroidbuild
    92 Posts 15 Posters 50.1k 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.
    • D
      detron
      last edited by

      thank you for your efforts to get RetroPie running on the Odroid C2 .

      I love Retropie, and I own a C2, and think the power it adds will be a great gaming system.

      P 2 Replies Last reply Reply Quote 0
      • P
        phoenix73 @detron
        last edited by

        @detron well I'm just trying to figure how to build it on C2, unsure if it will be easy or not.
        I posted also on Odroid Forum (http://forum.odroid.com/viewtopic.php?f=136&t=23889) to see if someone already tried to build it

        D 1 Reply Last reply Reply Quote 0
        • D
          detron @phoenix73
          last edited by

          @phoenix73

          I still appreciate knowing SOMEONE is trying. I do not have the right knowledge to try it myself.

          1 Reply Last reply Reply Quote 0
          • gizmo98G
            gizmo98 Global Moderator
            last edited by gizmo98

            I expect odroid C2 runs a full X11 environment. I would start from scratch and run RetroPie-Setup with sudo __platform=generic-x11 ./retropie_setup.sh and look what happens. Or add x11 to your __platform_flags.

            1 Reply Last reply Reply Quote 0
            • P
              phoenix73
              last edited by

              I'll have a look to this approach too :)

              1 Reply Last reply Reply Quote 0
              • P
                phoenix73 @detron
                last edited by

                @detron libretro testing ppa (http://ppa.launchpad.net/libretro/testing/ubuntu/pool/) contains many packages for arm64, so it could be something to investigate too. I'll try to rebuild emulationstation deb on Odroid C2 too

                D 1 Reply Last reply Reply Quote 0
                • D
                  detron @phoenix73
                  last edited by

                  @phoenix73

                  thank you. I am very comfortable with linux, but I do not have a good understanding of what truly goes into retroarch and emulationstation setup.

                  good luck, and if you get anywhere, please let me know.

                  thank you again

                  1 Reply Last reply Reply Quote 0
                  • roleoR
                    roleo
                    last edited by

                    Hi.
                    I'm trying to compile retropie using the system.sh proposed in the 1st post.
                    I started with emulationstation and I successfully compiled it.
                    Below my system:

                    • Odroid C2 rev 0.2
                    • Ubuntu standard image: ubuntu64-16.04lts-mate-odroid-c2-20161017

                    I followed the recommended procedure for ODROID C1 except for the last command:

                    sudo apt-get install -y git
                    git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git
                    cd RetroPie-Setup
                    sudo __platform=odroid-c2 ./retropie_setup.sh
                    

                    I changed also the CMakeLists.txt with the correct libMali.so path.

                    #check if we're running on olinuxino
                    MESSAGE("Looking for libMali.so")
                    if(EXISTS "/usr/lib/aarch64-linux-gnu/libMali.so")
                        MESSAGE("libMali.so found")
                        set(GLSystem "OpenGL ES")
                    else()
                        MESSAGE("libMali.so not found")
                    endif()
                    

                    I stopped lightdm and when I run emulationstation I can see the correct graphic screen.

                    1 Reply Last reply Reply Quote 0
                    • roleoR
                      roleo
                      last edited by roleo

                      Hi.
                      Second step.
                      I successfully compile retroarch and lr-mame2003.
                      For retroarch I used the following build_retroarch() in retroarch.sh:

                      function build_retroarch() {
                          local params=(--enable-sdl2)
                          ! isPlatform "x11" && params+=(--disable-x11 --enable-opengles --disable-ffmpeg --disable-sdl --enable-sdl2 --disable-oss --disable-pulse --disable-al --disable-jack)
                          isPlatform "rpi" && params+=(--enable-dispmanx)
                          isPlatform "mali" && params+=(--enable-mali_fbdev)
                          isPlatform "arm" && params+=(--enable-floathard)
                      #    isPlatform "neon" && params+=(--enable-neon)
                          isPlatform "armv8" && params+=(--disable-wayland --disable-vg --disable-miniupnpc)
                          ./configure --prefix="$md_inst" "${params[@]}"
                          sed -i 's/HAVE_OSS_LIB = 1/HAVE_OSS_LIB = 0/g' config.mk
                          sed -i 's/HAVE_VIDEOCORE = 1/HAVE_VIDEOCORE = 0/g' config.mk
                          sed -i 's/OPENGLES_LIBS = -lGLESv2 -lEGL -lGLESv2 -lbcm_host -lvcos -lvchiq_arm/OPENGLES_LIBS = -lGLESv2 -lEGL/g' config.mk
                          make clean
                          make
                          md_ret_require="$md_build/retroarch"
                      }
                      

                      And I patched
                      libretro-common/include/glsym/glsym_es2.h
                      adding:

                      #include <stdint.h>
                      

                      in the first line.

                      For lr-mame2003 the compilation has no problems.

                      I tried a few games and it works!

                      roleo

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

                        @roleo you shouldn't need to modify config.mk afterwards - the raspberry pi link libs/video core stuff should only be added if the raspberry pi dev libs are present on the system - which shouldn't be the case.

                        are you building to run on X or framebuffer ?

                        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

                        roleoR 1 Reply Last reply Reply Quote 0
                        • roleoR
                          roleo @BuZz
                          last edited by roleo

                          @BuZz
                          I know but if I don't modify the config.mk the compilation process doesn't complete.
                          And I didn't find an option to disable videocore from configure.
                          Similar for OSS: the compilation is ok but the linker search for -lossaudio.
                          Maybe I missed a parameter?

                          I'm building on framebuffer, X is stopped.

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

                            I will look into getting an ODroid-c2 board.

                            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

                            roleoR 1 Reply Last reply Reply Quote 0
                            • roleoR
                              roleo @BuZz
                              last edited by

                              @BuZz
                              Is there a donation link?
                              I think there are a lot of users interested.

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

                                @roleo https://retropie.org.uk/donate/

                                I have sent an email to Hardkernel to see if they would be interested in providing any development boards (as it would benefit them too). If not I will buy an ODroid-C2 to start with.

                                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
                                • roleoR
                                  roleo
                                  last edited by roleo

                                  Update.
                                  I compiled also lr-fbalpha adding the following section to makefile.libretro:

                                  else ifeq ($(platform), armv8)
                                      TARGET := $(TARGET_NAME)_libretro.so
                                      fpic := -fPIC
                                      SHARED := -shared -Wl,-no-undefined -Wl,--version-script=$(LIBRETRO_DIR)
                                      PLATFORM_DEFINES += -march=armv8-a+crc -mcpu=cortex-a53 -ffast-math
                                      HAVE_NEON = 1
                                      ENDIANNESS_DEFINES := -DLSB_FIRST
                                      CFLAGS += -DARM
                                  

                                  However I can not compile lr-imame4all.

                                  1 Reply Last reply Reply Quote 0
                                  • roleoR
                                    roleo
                                    last edited by

                                    Update.
                                    lr-fceumm ok without problems.
                                    lr-nestopia ok without problems.
                                    lr-snes9x2010 ok adding the following section to Makefile.libretro:

                                    # ARMv8
                                    else ifneq (,$(findstring armv8,$(platform)))
                                    	EXT    ?= so
                                    	TARGET := $(TARGET_NAME)_libretro.$(EXT)
                                    	SHARED := -shared -Wl,--no-undefined
                                    	fpic := -fPIC
                                    	CC   ?= gcc
                                    	CFLAGS += -march=armv8-a+crc -mcpu=cortex-a53 -DARM
                                    	ASFLAGS += -mcpu=cortex-a53
                                    

                                    lr-imame4all compiles but doesn't work.
                                    No chances with reicast: too asm parts...

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

                                      @roleo I have been generously offered an ODroid-C2 for free from Hardkernel so I will look into adding official support once it arrives. Thanks for your code feedback etc.

                                      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

                                      roleoR D 2 Replies Last reply Reply Quote 1
                                      • roleoR
                                        roleo @BuZz
                                        last edited by

                                        @BuZz
                                        Good news!
                                        I hope I can help you.

                                        1 Reply Last reply Reply Quote 0
                                        • roleoR
                                          roleo
                                          last edited by

                                          Update.
                                          Finally I compiled the lr-imame4all. I encountered two problems:
                                          1 - The libco (src/libretro/libretro-common/libco) gives an error at runtime: "longjmp causes uninitialized stack frame", so I had to use the ucontext.c part instead of sjlj.c modifying libco.c (could be a performance issue).
                                          2 - The file src/libretro/osinline.h contains some asm code that I tried to patch (sorry but I'm not an asm programmer :) ).

                                          This is the code I used for the lr-imame4all.sh script:

                                          function sources_lr-imame4all() {
                                              gitPullOrClone "$md_build" https://github.com/libretro/mame2000-libretro.git
                                              sed -i 's/#include "sjlj.c"/#include "ucontext.c"/g' src/libretro/libretro-common/libco/libco.c
                                              sed -i 's/#include <retro_inline.h>/#include <retro_inline.h>\n#include <stdint.h>/g' src/libretro/osinline.h
                                              sed -i 's/    int res_hi, res_lo;/    int64_t res;/g' src/libretro/osinline.h
                                              sed -i 's/("smull\\t%1,%0,%2,%3"/("smull\\t%x0,%w1,%w2"/g' src/libretro/osinline.h
                                              sed -i 's/: "=r"(res_hi), "=r"(res_lo)/: "=r"(res)/g' src/libretro/osinline.h
                                              sed -i 's/return res_hi;/return res>>32;/g' src/libretro/osinline.h
                                              sed -i 's/( " mov %2, %2, asr #1 \\n"/( " asr %2, %2, #1 \\n"/g' src/libretro/osinline.h
                                          }
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • M
                                            mphil906
                                            last edited by mphil906

                                            Hello,

                                            I was able to compile emulationstation on my C2 successfully, but I get the following error when trying to run it:

                                            lvl0:   Error initializing SDL!
                                                    Failed to connect to the Mir Server
                                            lvl0:   Renderer failed to initialize!
                                            lvl0:   Window failed to intialize!
                                            

                                            This error occurs if lightdm is stopped or running. Any ideas? I'm new so go easy on me.

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