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

    problem with mupen64plus libretro with odroid xu4

    Scheduled Pinned Locked Moved Help and Support
    mupen64plusodroid xu4
    32 Posts 2 Posters 2.2k 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.
    • karaK
      kara
      last edited by

      Hello community, I am on Odroid XU4Q, I start in Linux and I can not install the emulator mupen64plus_libretro
      I looked in all forums, applied many methods but still no solution, the compilation refuses to be done correctly

      What does it take for this emulator to install correctly?
      I am running Linux Ubuntu 18.04.1 4.14 in minimal version

      Thanks for your help !

      ** BUILDING mupen64plus_libretro.so FOR PLATFORM odroid unix **
      g++ -o mupen64plus_libretro.so ./GLideN64/src/Combiner.o ./GLideN64/src/CommonPluginAPI.o ./GLideN64/src/Config.o ./GLideN64/src/convert.o ./GLideN64/src/DepthBuffer.o ./GLideN64/src/F3D.o ./GLideN64/src/F3DDKR.o ./GLideN64/src/F3DEX.o ./GLideN64/src/F3DPD.o ./GLideN64/src/F3DGOLDEN.o ./GLideN64/src/F3DBETA.o ./GLideN64/src/F3DSETA.o ./GLideN64/src/F3DEX2.o ./GLideN64/src/F3DEX2MM.o ./GLideN64/src/F3DEX2CBFD.o ./GLideN64/src/FBOTextureFormats.o ./GLideN64/src/FrameBuffer.o ./GLideN64/src/FrameBufferInfo.o ./GLideN64/src/GBI.o ./GLideN64/src/gDP.o ./GLideN64/src/GLideN64.o ./GLideN64/src/gSP.o ./GLideN64/src/Keys.o ./GLideN64/src/L3D.o ./GLideN64/src/L3DEX2.o ./GLideN64/src/L3DEX.o ./GLideN64/src/N64.o ./GLideN64/src/OpenGL.o ./GLideN64/src/Performance.o ./GLideN64/src/RDP.o ./GLideN64/src/RSP.o ./GLideN64/src/S2DEX2.o ./GLideN64/src/S2DEX.o ./GLideN64/src/Turbo3D.o ./GLideN64/src/ZSort.o ./GLideN64/src/ShaderUtils.o ./GLideN64/src/SoftwareRender.o ./GLideN64/src/Textures.o ./GLideN64/src/TextDrawerStub.o ./GLideN64/src/TextureFilterHandler.o ./GLideN64/src/PostProcessor.o ./GLideN64/src/VI.o ./GLideN64/src/BufferCopy/ColorBufferToRDRAM.o ./GLideN64/src/BufferCopy/DepthBufferToRDRAM.o ./GLideN64/src/BufferCopy/RDRAMtoColorBuffer.o ./GLideN64/src/DepthBufferRender/ClipPolygon.o ./GLideN64/src/DepthBufferRender/DepthBufferRender.o ./GLideN64/src/GLUniforms/UniformSet.o ./GLideN64/src/common/CommonAPIImpl_common.o ./custom/GLideN64/MupenPlusPluginAPI.o ./custom/GLideN64/mupenplus/Config_mupenplus.o ./custom/GLideN64/mupenplus/OpenGL_mupenplus.o ./custom/GLideN64/mupenplus/CommonAPIImpl_mupenplus.o ./custom/glsm/glsm.o ./GLideN64/src/Log.o ./GLideN64/src/GLideNHQ/TextureFilters.o ./GLideN64/src/GLideNHQ/TextureFilters_2xsai.o ./GLideN64/src/GLideNHQ/TextureFilters_hq2x.o ./GLideN64/src/GLideNHQ/TextureFilters_hq4x.o ./GLideN64/src/GLideNHQ/TextureFilters_xbrz.o ./GLideN64/src/GLideNHQ/TxCache.o ./GLideN64/src/GLideNHQ/TxDbg.o ./GLideN64/src/GLideNHQ/TxFilter.o ./GLideN64/src/GLideNHQ/TxFilterExport.o ./GLideN64/src/GLideNHQ/TxHiResCache.o ./GLideN64/src/GLideNHQ/TxImage.o ./GLideN64/src/GLideNHQ/TxQuantize.o ./GLideN64/src/GLideNHQ/TxReSample.o ./GLideN64/src/GLideNHQ/TxTexCache.o ./GLideN64/src/GLideNHQ/TxUtil.o ./custom/GLideN64/CRC.o ./GLideN64/src/3DMath.o ./GLideN64/src/OGL3X/GLSLCombiner_ogl3x.o ./GLideN64/src/BufferCopy/ColorBufferToRDRAM_GL.o ./GLideN64/src/BufferCopy/ColorBufferToRDRAM_BufferStorageExt.o ./libretro-common/libco/libco.o ./xxHash/xxhash.o ./libretro-deps/libpng/png.o ./libretro-deps/libpng/pngerror.o ./libretro-deps/libpng/pngget.o ./libretro-deps/libpng/pngmem.o ./libretro-deps/libpng/pngpread.o ./libretro-deps/libpng/pngread.o ./libretro-deps/libpng/pngrio.o ./libretro-deps/libpng/pngrtran.o ./libretro-deps/libpng/pngrutil.o ./libretro-deps/libpng/pngset.o ./libretro-deps/libpng/pngtest.o ./libretro-deps/libpng/pngtrans.o ./libretro-deps/libpng/pngwio.o ./libretro-deps/libpng/pngwrite.o ./libretro-deps/libpng/pngwtran.o ./libretro-deps/libpng/pngwutil.o ./mupen64plus-rsp-hle/src/alist.o ./mupen64plus-rsp-hle/src/alist_audio.o ./mupen64plus-rsp-hle/src/alist_naudio.o ./mupen64plus-rsp-hle/src/alist_nead.o ./mupen64plus-rsp-hle/src/audio.o ./mupen64plus-rsp-hle/src/cicx105.o ./mupen64plus-rsp-hle/src/hle.o ./mupen64plus-rsp-hle/src/jpeg.o ./mupen64plus-rsp-hle/src/memory.o ./mupen64plus-rsp-hle/src/mp3.o ./mupen64plus-rsp-hle/src/musyx.o ./mupen64plus-rsp-hle/src/re2.o ./mupen64plus-rsp-hle/src/plugin.o ./custom/mupen64plus-rsp-cxd4/module.o ./mupen64plus-rsp-cxd4/su.o ./mupen64plus-rsp-cxd4/vu/add.o ./mupen64plus-rsp-cxd4/vu/divide.o ./mupen64plus-rsp-cxd4/vu/logical.o ./mupen64plus-rsp-cxd4/vu/multiply.o ./mupen64plus-rsp-cxd4/vu/select.o ./mupen64plus-rsp-cxd4/vu/vu.o ./mupen64plus-core/src/ai/ai_controller.o ./mupen64plus-core/src/api/callbacks.o ./custom/mupen64plus-core/api/config.o ./mupen64plus-core/src/api/debugger.o ./custom/mupen64plus-core/api/vidext_libretro.o ./custom/mupen64plus-core/main/main.o ./custom/mupen64plus-core/api/frontend_libretro.o ./mupen64plus-core/src/backends/audio_out_backend.o ./mupen64plus-core/src/backends/clock_backend.o ./mupen64plus-core/src/backends/controller_input_backend.o ./mupen64plus-core/src/backends/rumble_backend.o ./mupen64plus-core/src/backends/storage_backend.o ./mupen64plus-core/src/main/cheat.o ./mupen64plus-core/src/main/util.o ./mupen64plus-core/src/main/device.o ./mupen64plus-core/src/main/md5.o ./mupen64plus-core/src/main/profile.o ./mupen64plus-core/src/main/rom.o ./mupen64plus-core/src/main/savestates.o ./mupen64plus-core/src/main/storage_file.o ./mupen64plus-core/src/main/zip/zip.o ./mupen64plus-core/src/main/zip/unzip.o ./mupen64plus-core/src/main/zip/ioapi.o ./mupen64plus-core/src/memory/memory.o ./mupen64plus-core/src/pi/cart_rom.o ./mupen64plus-core/src/pi/flashram.o ./mupen64plus-core/src/pi/pi_controller.o ./mupen64plus-core/src/pi/sram.o ./mupen64plus-core/src/plugin/get_time_using_C_localtime.o ./mupen64plus-core/src/plugin/rumble_via_input_plugin.o ./custom/mupen64plus-core/plugin/plugin_libretro.o ./mupen64plus-core/src/plugin/dummy_video.o ./mupen64plus-core/src/plugin/dummy_audio.o ./mupen64plus-core/src/plugin/dummy_input.o ./mupen64plus-core/src/plugin/dummy_rsp.o ./mupen64plus-core/src/r4300/r4300.o ./mupen64plus-core/src/r4300/cached_interp.o ./mupen64plus-core/src/r4300/cp0.o ./mupen64plus-core/src/r4300/cp1.o ./mupen64plus-core/src/r4300/exception.o ./mupen64plus-core/src/r4300/instr_counters.o ./mupen64plus-core/src/r4300/interupt.o ./mupen64plus-core/src/r4300/mi_controller.o ./mupen64plus-core/src/r4300/pure_interp.o ./mupen64plus-core/src/r4300/r4300_core.o ./mupen64plus-core/src/r4300/recomp.o ./mupen64plus-core/src/r4300/reset.o ./mupen64plus-core/src/r4300/tlb.o ./mupen64plus-core/src/rdp/fb.o ./mupen64plus-core/src/rdp/rdp_core.o ./mupen64plus-core/src/ri/rdram.o ./mupen64plus-core/src/ri/rdram_detection_hack.o ./mupen64plus-core/src/ri/ri_controller.o ./mupen64plus-core/src/rsp/rsp_core.o ./mupen64plus-core/src/si/af_rtc.o ./mupen64plus-core/src/si/cic.o ./mupen64plus-core/src/si/eeprom.o ./mupen64plus-core/src/si/game_controller.o ./mupen64plus-core/src/si/mempak.o ./mupen64plus-core/src/si/n64_cic_nus_6105.o ./mupen64plus-core/src/si/pif.o ./mupen64plus-core/src/si/rumblepak.o ./mupen64plus-core/src/si/si_controller.o ./mupen64plus-core/src/vi/vi_controller.o ./GLideN64/src/osal/osal_files_unix.o ./mupen64plus-core/src/r4300/empty_dynarec.o ./libretro/libretro.o ./custom/mupen64plus-core/plugin/emulate_game_controller_via_libretro.o ./libretro-common/memmap/memalign.o ./custom/mupen64plus-core/plugin/audio_libretro/audio_backend_libretro.o ./libretro-common/audio/resampler/audio_resampler.o ./libretro-common/audio/resampler/drivers/sinc_resampler.o ./libretro-common/audio/resampler/drivers/nearest_resampler.o ./libretro-common/audio/resampler/drivers/null_resampler.o ./libretro-common/file/config_file.o ./libretro-common/file/config_file_userdata.o ./libretro-common/file/file_path.o ./libretro-common/hash/rhash.o ./libretro-common/compat/compat_strl.o ./libretro-common/compat/compat_posix_string.o ./libretro-common/compat/compat_strcasestr.o ./libretro-common/audio/conversion/float_to_s16.o ./libretro-common/audio/conversion/s16_to_float.o ./libretro-common/features/features_cpu.o ./libretro-common/file/retro_stat.o ./libretro-common/lists/string_list.o ./libretro-common/string/stdstring.o ./libretro-common/streams/file_stream.o ./libretro-common/glsym/glsym_gl.o ./libretro-common/glsym/rglgen.o   -shared -Wl,--version-script=./libretro/link.T -Wl,--no-undefined -lpthread -fPIC -O2 -lz -lGL
      ./libretro-common/audio/resampler/drivers/sinc_resampler.o: In function `process_sinc_neon':
      sinc_resampler.c:(.text+0x218): undefined reference to `process_sinc_neon_asm'
      ./libretro-common/audio/conversion/float_to_s16.o: In function `convert_float_to_s16_neon':
      float_to_s16.c:(.text+0xa0): undefined reference to `convert_float_s16_asm'
      ./libretro-common/audio/conversion/s16_to_float.o: In function `convert_s16_to_float_neon':
      s16_to_float.c:(.text+0x196): undefined reference to `convert_s16_float_asm'
      collect2: error: ld returned 1 exit status
      Makefile:393: recipe for target 'mupen64plus_libretro.so' failed
      make: *** [mupen64plus_libretro.so] Error 1
      Removing additional swap
      ~/RetroPie-Setup
      Could not successfully build lr-mupen64plus - N64 emu - Mupen64Plus + GLideN64 for libretro (/home/pi/RetroPie-Setup/tmp/build/lr-mupen64plus/mupen64plus_libretro.so not found).
      
      H 1 Reply Last reply Reply Quote 0
      • H
        hhromic @kara
        last edited by hhromic

        @kara this is a known issue, check here: https://github.com/libretro/mupen64plus-libretro/issues/87

        There is also a new lr-mupen64plus-nextcore in development that updates the older core. Maybe you can give it a try too: https://retropie.org.uk/forum/topic/21093/lr-mupen64plus-next-experimental-scriptmodule-for-testing

        The developer is much more active on the new core so any fixes to the build for ODROID are probably going to be fixed there than in the old core. Your feedback can be very helpful for the community.

        1 Reply Last reply Reply Quote 0
        • karaK
          kara
          last edited by

          thank you very much for your quick response, but this solution does not work at home, always the same errors at compilation, I have no solutions to mount this core, it lacks references "process_sinc_neon_asm" "convert_float_s16_asm" and "convert_s16_float_asm" at the compilation! what are they related to? mystery!

          H 1 Reply Last reply Reply Quote 0
          • H
            hhromic @kara
            last edited by

            @kara what exactly did you do with the solution referenced? can you describe your steps?

            Your problem is no mistery, you are missing compiler flags that should be set by the Makefile.
            Most of us don't have an ODROID to test ourselves so is kind of blind helping :) That's why if you provide more and precise information, the better!

            1 Reply Last reply Reply Quote 0
            • karaK
              kara
              last edited by

              I will resume step by step this solution and I'll keep you informed, but the first try, it did not work, I do not know much about Retropie compilation despite some basic Unix, I'm a little lost. What flags are you talking about?

              1 Reply Last reply Reply Quote 0
              • karaK
                kara
                last edited by kara

                it still does not work, now I have more and more compilation errors... and yet I followed the topic word by word ...

                H 1 Reply Last reply Reply Quote 0
                • H
                  hhromic @kara
                  last edited by hhromic

                  @kara thanks for testing, you will have to be patient for debugging this :)

                  I suggest you to start from scratch, can you clone the upstream repository doing exactly this:

                  cd $HOME
                  git clone https://github.com/libretro/mupen64plus-libretro
                  cd mupen64plus-libretro
                  

                  Now patch the source code doing exactly this (you should just copy/paste the following carefully into the console):

                  patch -p1 << "__EOF__"
                  diff --git a/Makefile.orig b/Makefile
                  index 6d2846c..35c08a3 100644
                  --- a/Makefile.orig
                  +++ b/Makefile
                  @@ -30,8 +30,6 @@ else ifneq (,$(findstring armv,$(platform)))
                       ifeq (,$(findstring classic_,$(platform)))
                           override platform += unix
                       endif
                  -else ifneq (,$(findstring odroid,$(platform)))
                  -   override platform += unix
                   endif
                  
                   # system platform
                  @@ -182,8 +180,8 @@ else ifneq (,$(findstring odroid,$(platform)))
                      ifneq (,$(findstring ODROIDC,$(BOARD)))
                         # ODROID-C1
                         CPUFLAGS += -mcpu=cortex-a5
                  -   else ifneq (,$(findstring ODROID-XU3,$(BOARD)))
                  -      # ODROID-XU3 & -XU3 Lite
                  +   else ifneq (,$(findstring ODROID-XU,$(BOARD)))
                  +      # ODROID-XU3 & -XU3 Lite and -XU4
                         ifeq "$(shell expr `gcc -dumpversion` \>= 4.9)" "1"
                            CPUFLAGS += -march=armv7ve -mcpu=cortex-a15.cortex-a7
                         else
                  __EOF__
                  

                  This should get the source patched correctly. Now compile the core using this:

                  make platform=odroid WITH_DYNAREC=arm HAVE_NEON=1 FORCE_GLES=1
                  

                  If it works, then you will have a compiled mupen64plus_libretro.so file. If it doesn't work, please post the log output here so we can take a look. If the log is too big, please use pastebin.

                  Once we confirm the right fix, we can fix the scriptmodule later. Good Luck!

                  1 Reply Last reply Reply Quote 0
                  • karaK
                    kara
                    last edited by

                    @hhromic thank you for your kindness, I will test all that as soon as I have a little time. I will also post all compilation results of modules that do not install on odroid xu4.

                    1 Reply Last reply Reply Quote 1
                    • karaK
                      kara
                      last edited by

                      I'm not as good as you in linux, I do not know how to make a paste of windows to linux odroid, I went through a text file with a chmod + x, I executed the script, it makes me mistakes (patch unexpectedly ends in middle of line), can you just tell me what are the lines to change in the MakeFile? it will be faster!

                      1 Reply Last reply Reply Quote 0
                      • karaK
                        kara
                        last edited by

                        everything seems obvious to you but for someone like me who is not familiar with the linux system, it's really hard to understand all that, even if I know a little programming !

                        H 1 Reply Last reply Reply Quote 0
                        • H
                          hhromic @kara
                          last edited by hhromic

                          @kara relax, don't panic. I'm trying to help you here. No need to be rude, i.e. I'm not as good as you in linux or everything seems obvious to you.

                          As you are trying to compile things from source, I assumed you had some minor experience with linux, sorry for that.

                          Anyway, after cloning the repository, you edit the Makefile file in the top-level directory and remove these lines (should be lines 33 and 34):

                          else ifneq (,$(findstring odroid,$(platform)))
                             override platform += unix
                          

                          Then, further down find these lines (should be lines 185 and 186):

                             else ifneq (,$(findstring ODROID-XU3,$(BOARD)))
                                # ODROID-XU3 & -XU3 Lite
                          

                          And replace them with these lines:

                             else ifneq (,$(findstring ODROID-XU,$(BOARD)))
                                # ODROID-XU3 & -XU3 Lite and -XU4
                          

                          The patch I posted before says exactly this. Lines starting with - mean what to remove and lines starting with + indicate what to add in their place. The numbers between @@ indicate where to find these lines in the file to be modified.

                          Don't forget that this is an untested patch (you are testing it!) so hopefully it works for you, and if that is the case we can fix it for everyone. Otherwise we keep investigating.

                          1 Reply Last reply Reply Quote 1
                          • karaK
                            kara
                            last edited by

                            I apologize. I'm just a little stressed, I would like to build a recent image of Retropie that works, and my weak knowledge makes me panic sometimes. All of my apologies. Thank you in any case for your patience and your precious help!

                            1 Reply Last reply Reply Quote 1
                            • karaK
                              kara
                              last edited by kara

                              The compilation of glsm is not done, many errors, many undeclared variables

                              custom/glsm/glsm.cpp: In function 'void bindFBO(GLenum)':
                              custom/glsm/glsm.cpp:251:7:error: 'glBindFramebuffer' was not declared in this scope
                              glBindFrameBuffer(GL_FRAMEBUFFER, gl_state.framebuf[0].desired_location)

                              ...

                              H 1 Reply Last reply Reply Quote 0
                              • H
                                hhromic @kara
                                last edited by

                                @kara can you try to compile with this:

                                make platform=unix-odroid WITH_DYNAREC=arm HAVE_NEON=1 FORCE_GLES=1
                                
                                1 Reply Last reply Reply Quote 0
                                • karaK
                                  kara
                                  last edited by

                                  always the same problem with unreported variables of glsm.cpp

                                  H 2 Replies Last reply Reply Quote 0
                                  • H
                                    hhromic @kara
                                    last edited by

                                    @kara can you post the full output log somewhere?
                                    Maybe you are missing the opengl libraries in your system.

                                    1 Reply Last reply Reply Quote 0
                                    • H
                                      hhromic @kara
                                      last edited by hhromic

                                      @kara can you try these commands:

                                      apt-get --assume-yes remove libgles2-mesa-dev
                                      apt-get --assume-yes install libgles2-mesa-dev
                                      apt-get --assume-yes remove libgles1-mesa-dev
                                      apt-get --assume-yes install libgles1-mesa-dev
                                      

                                      And if they installed new packages, try again with the original make invocation (without "unix-" and just "odroid").

                                      1 Reply Last reply Reply Quote 0
                                      • karaK
                                        kara
                                        last edited by

                                        Great ! it works ! thank you so much ! That was it ! It was missing the latest version of opengl! Congratulations, a problem solved under odroid XU4!

                                        H 1 Reply Last reply Reply Quote 1
                                        • H
                                          hhromic @kara
                                          last edited by

                                          @kara great to hear!

                                          Can you confirm me you used the following command in the successful build?

                                          make platform=odroid WITH_DYNAREC=arm HAVE_NEON=1 FORCE_GLES=1
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • karaK
                                            kara
                                            last edited by kara

                                            Yes, with this command ! another small question please, where should I put the generated file mpen64plus_libretro.so? Thanks a lot !

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