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

    OpenBOR finally working fine on RETROPIE with ES

    Scheduled Pinned Locked Moved Ideas and Development
    openbortrick
    353 Posts 32 Posters 182.7k 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.
    • O
      oilusionista @cyperghost
      last edited by oilusionista

      @cyperghost Thanks!
      About the official build, we can point people to here to get the PIE version. I am even promoting this on some youtube channels :)
      We just don't want to bite more that can chew.

      Plus, you can ask to join the official Dev team if you want to.

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

        @oilusionista Well that is nice offer thank you.
        I would stick to the diff-patch way and I think the OpenBOR-dev team can promote the usage of the Pie. I saw the latest changes done by @zanac and this were just a few code lines... So it is clear how to maintain.

        About the users.... Well you can't compare the Pie port with a XBOX or PS port. The Pie was developed to be a learning platform in computing. So I say that every person who works with a Pie gots a minimal knowledge of unix systems. You must clearly divide between image bakers and computer enthusiasts and the enthusiasts are more common to the Pie platform. So a solid port with good support/testers is very likely. Sadly OpenBOR was up to now a "niche" for this platform and for RetroPie.

        It was @darknior who brought OpenBOR to a wider audience in this forum because he has done a small patch that offers Command line Input like OpenBOR Asterix & Obelix.pakand this is so necessary ... because EmulationStation ... our frontend lists files with a suffix as system and just parses the commands...
        Then @BiZzAr721 and @hansolo77 created a list of working mods, this made me aware of OpenBOR and I wrote some scripts to autoconfigurate OpenBOR with different settings and did the call to runcommand which offers LOG support and more opertunites for setup. And now @zanac made newest versions available via GL4ES wrapper with some testing done by various people ... and that's the story of the OpenBOR development... (with some missing details for sure)

        1 Reply Last reply Reply Quote 3
        • darkniorD
          darknior
          last edited by

          @cyperghost i have try the game "TMNT Rescue Paloosa" the last beta, and this one working fine but when you have more than 1 or 2 ennemies on screen the game is very very slow :( And i don't use video filter ...
          This game use many many big script to improve OpenBOR engine :)
          I think it is the problem here, maybe the original resolution too ? I don't know if OpenBOR can be optimized for PI proc?

          Life is game, just play it !

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

            @darknior There is space to optimize. This now runs with SDL but with the right wrapper settings in GL4ES it is maybe possible to select OpenGL.

            darkniorD 1 Reply Last reply Reply Quote 1
            • darkniorD
              darknior @cyperghost
              last edited by

              @cyperghost Like you i think we must have the two versions of OpenBOR on PI :(
              Like they do on PC with many Windows version for each games ...

              I must use 3400 for

              • Asterix & Obelix
              • Bare Knucles 6 (but it crash some time...)
              Function getentityproperty must have a string property name.
              Script function 'getentityproperty' returned an exception, check the manual for details.
              
              • Bare Knucles Vacum v4.1 (but crash during loading of a script) :(

              All the new games working fine with the last version ...
              I will try to find time to test each game one by one ...

              We will always have this problem with some games, made with a specific OpenBOR version we don't have on PI ... :(
              Or maybe we can find some one who can help to fix games for the old or the new version.

              Life is game, just play it !

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

                @darknior We can compile older sources, too. Maybe 43xx branch. I am sure we can do the same changes here - did not test now.

                darkniorD 1 Reply Last reply Reply Quote 1
                • darkniorD
                  darknior @cyperghost
                  last edited by

                  @cyperghost Yes, thanks, i think you are right et we must have some other OpenBOR versions like the 43xx too.
                  It was the problem of OpenBOR from the beginning, it evolve but there is no retro compatibility with games :(
                  Or the games don't write for what number version they are created ...

                  Life is game, just play it !

                  Z 1 Reply Last reply Reply Quote 0
                  • Z
                    zanac @darknior
                    last edited by

                    As i promised.... here you are what i done, sorry i have not too much time to write all in a clear way but i'm sure that you will understand reading... if in doubt just ask!

                    GL4ES, just try my fork:
                    https://github.com/zanac/gl4es

                    In CMakeLists.txt added:
                    set(NOX11 ON)
                    set(NOEGL ON)
                    add_definitions(-marm -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=hard -ffast-math -fomit-frame-pointer)

                    the NOX11 and NOEGL should be tested, i added these lines last weekend and have just seen that in allwinner board work better ('cause with these i removed some dependencies if you use GL with framebuffer)

                    In src/gl/init.c
                    I changed defualt to ES 2.0:
                    #define DEFAULT_ES 2

                    After this you should run cmake and compile:

                    cmake . -DBCMHOST=1
                    make GL

                    For use the lib i suggest this minimum environment variable:
                    export LIBGL_FB=2
                    export LIBGL_FBOMAKECURRENT=1

                    OPENBOR, i don't make a fork, but it's rather easy to patch the build_pandora, if you have time just create a new build_rasbperry with these tricks!!!

                    ifdef BUILD_PANDORA
                    TARGET = $(VERSION_NAME).elf
                    TARGET_FINAL = $(VERSION_NAME)
                    TARGET_PLATFORM = PANDORA
                    BUILD_OPENGL = 1
                    BUILD_WEBM = 1
                    BUILD_LINUX = 1
                    BUILD_SDL = 1
                    BUILD_GFX = 1
                    BUILD_PTHREAD = 1
                    BUILD_SDL_IO = 1
                    BUILD_TREMOR = 1
                    BUILDING = 1
                    CC = gcc
                    INCLUDES = $(PNDDEV)/include
                    $(PNDDEV)/include/SDL
                    OBJTYPE = elf
                    LIBRARIES = $(PNDDEV)/lib
                    ifeq ($(BUILD_PANDORA), 0)
                    BUILD_DEBUG = 1
                    endif
                    endif

                    I also patched CFLAGS for arm optimization:

                    CFLAGS += $(addprefix -I", $(addsuffix ", $(INCS))) $(ARCHFLAGS) -D$(TARGET_PLATFORM)
                    CFLAGS += -g -Wall -Werror -fsigned-char -std=gnu99
                    CFLAGS += -marm -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=hard -fomit-frame-pointer -ffast-math -O3

                    The lib should link GL:

                    LIBS += -Wl,-rpath,$(LIBRARIES) -lSDL2 -lSDL2_gfx -lGL

                    The only source that i bad patched now is opengl.c:

                    in sdl/opengl.c

                    I made these changes:
                    // create an OpenGL compatibility context, not a core or ES context
                    #ifndef WIN // except on Windows, where some Nvidia drivers really don't like us doing this
                    //zanac, these attributes don't work well in allwinner (rasbperry too?)
                    //SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_COMPATIBILITY);
                    #endif

                        //zanac, it seems that you should always create a new context without delete the old one, this happen in allwinner (rasbperry too?)
                        //if((context = SDL_GL_GetCurrentContext()))
                        //      SDL_GL_DeleteContext(context);
                    
                    cyperghostC 1 Reply Last reply Reply Quote 3
                    • BiZzAr721B
                      BiZzAr721
                      last edited by

                      @zanac Thank you for sticking around and seeing this through. It shows you take pride in your work.

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

                        @zanac Can you please post in a better format? I wasn't able to compile and catched one error...

                        Please use three backticks ``` in beginning and ending of codeblocks to get proper format ;)

                        OKAY GOT IT

                        Please remove LIBS provided from @zanac first build from lib directory....
                        Use the install instructions done here

                        1 Reply Last reply Reply Quote 0
                        • M
                          moonston333
                          last edited by

                          hi all just reading through this openbor section. im trying to get it working on pi3. ive got all my paks is there a tutorial on how to install it onto my pi thanks

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

                            @moonston333 Please use install instructions done here
                            Please remove the binaries provided in the google download if you want to compile on your own.... you will catch errors.

                            We are still work in progress.

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

                              @cyperghost I will present Василий Patch next days for OpenBOR

                              Борис is here

                              Makefile
                              
                              ifdef BUILD_PANDORA
                              TARGET 	        = $(VERSION_NAME).elf
                              TARGET_FINAL    = $(VERSION_NAME)
                              TARGET_PLATFORM = PANDORA
                              BUILD_LINUX     = 1
                              BUILD_SDL       = 1
                              BUILD_GLES      = 1
                              BUILD_OPENGL    = 1
                              BUILD_LOADGL    = 1
                              BUILD_WEBM      = 1
                              BUILD_GFX       = 1
                              BUILD_PTHREAD   = 1
                              BUILD_SDL_IO    = 1
                              BUILD_TREMOR    = 1
                              BUILDING        = 1
                              CC  	        = gcc
                              INCLUDES        = $(PNDDEV)/include \
                                                $(PNDDEV)/include/SDL
                              OBJTYPE         = elf
                              LIBRARIES       = $(PNDDEV)/lib
                              ifeq ($(BUILD_PANDORA), 0)
                              BUILD_DEBUG     = 1
                              endif
                              endif
                              
                              ...
                              ...
                              ifdef BUILD_PANDORA
                              STRIP 	        = strip $(TARGET) -o $(TARGET_FINAL)
                              endif
                              
                              ...
                              ...
                              
                              CFLAGS 	       += $(addprefix -I", $(addsuffix ", $(INCS))) $(ARCHFLAGS) -D$(TARGET_PLATFORM)
                              CFLAGS 	       += -g -Wall -Werror -fsigned-char -std=gnu99
                              CFLAGS         += -marm -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=hard -fomit-frame-pointer -ffast-math -O3
                              
                              ...
                              ...
                              
                              ifdef BUILD_SDL
                              ifeq ($(findstring DGE, $(SDKPATH)), DGE)
                              LIBS           += -lSDL -lSDL_gfx -lts
                              else
                              LIBS           += -Wl,-rpath,$(LIBRARIES) -lSDL2 -lSDL2_gfx -lGL
                              endif
                              endif
                              
                              sdl/opencl.c
                              // create an OpenGL compatibility context, not a core or ES context
                              #ifndef WIN // except on Windows, where some Nvidia drivers really don't like us doing this
                              //zanac, these attributes don't work well in allwinner (rasbperry too?)
                              //SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_COMPATIBILITY);
                              #endif
                              
                                  //zanac, it seems that you should always create a new context without delete the old one, this happen in allwinner (rasbperry too?)
                                  //if((context = SDL_GL_GetCurrentContext()))
                                  //      SDL_GL_DeleteContext(context);
                              
                              1 Reply Last reply Reply Quote 2
                              • BiZzAr721B
                                BiZzAr721
                                last edited by

                                @darknior Maybe opengl4es will be able to benefit Residualvm as well


                                Salvador Liébana was one of the devs who got Diable & others running on Pi

                                darkniorD 1 Reply Last reply Reply Quote 1
                                • darkniorD
                                  darknior @BiZzAr721
                                  last edited by

                                  @bizzar721 WOAW it's possible to play this game on PI ??????
                                  We can also maybe play to "Return to the future" ???
                                  Incredible, maybe it can help yes, if you have some informations, create an other discussion please and give the link here, i'm very interested, i'm a BIG fan of ScummVM too :p
                                  Thanks

                                  Life is game, just play it !

                                  Z 1 Reply Last reply Reply Quote 0
                                  • Z
                                    zanac @darknior
                                    last edited by

                                    @darknior said in OpenBOR finally working fine on RETROPIE with ES:

                                    @bizzar721 WOAW it's possible to play this game on PI ??????
                                    We can also maybe play to "Return to the future" ???
                                    Incredible, maybe it can help yes, if you have some informations, create an other discussion please and give the link here, i'm very interested, i'm a BIG fan of ScummVM too :p
                                    Thanks

                                    gl4es is just a wrapper that translate some "open gl" function to "open gl es 2", if you want to play 3d games you need that software use "open gl es 2" (gles2 for friends) natively!

                                    About scummvm.... as i said it is possible to run it under libretro core, so it use gles2 natively using retroarch!!!
                                    Just download: https://github.com/libretro/scummvm

                                    After this just go to the folder "backends/platform/libretro/build" and type "make -j 4" :) It will compile (in about 7-8 hours!!!) a working core for allwinner/rasbperry!!!

                                    For improve scummvm speed i suggest to hack the makefile and use neon+arm+cortex optimization... i use these:
                                    TOOLSET = arm-linux-gnueabihf-
                                    TARGET := $(TARGET_NAME)libretro.so
                                    SHARED := -shared -Wl,--no-undefined
                                    DEFINES += -fPIC -Wno-multichar -D_ARM_ASSEM

                                    LDFLAGS += -shared -Wl,--version-script=../link.T -fPIC
                                    CC = gcc
                                    USE_VORBIS = 0
                                    USE_THEORADEC = 0
                                    USE_TREMOR = 1
                                    HAVE_MT32EMU = 0
                                    DEFINES += -marm -mcpu=cortex-a9 -marm -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=hard -ffast-math -fomit-frame-pointer -O3
                                    DEFINES += -mfloat-abi=hard
                                    DEFINES += -DARM
                                    HAVE_NEON = 1
                                    DEFINES += -DSIZEOF_SIZE_T=4

                                    If you want i can share the libretro_scummv.so core compiled in this way, it work very well i use it and is very great!!!

                                    cyperghostC BiZzAr721B darkniorD 3 Replies Last reply Reply Quote 2
                                    • Z
                                      zanac
                                      last edited by

                                      @zanac

                                      new hint.... it seems that is better use -O2 for compile openbor!!!
                                      just replace in makefile patch that i mae O3 with O2 : )

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

                                        @zanac I would suggest to use sperate libGL for each game.

                                        add Makefile

                                        LIBRARIES       = ./lib
                                        

                                        and create directory lib in OpenBOR dir and place libGL here

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

                                          @cyperghost This is Василий Patch

                                          Changelog:
                                          added lib next to binary
                                          added cflags, change from O3 to O2

                                          Makefile

                                          Makefile
                                          
                                          ifdef BUILD_PANDORA
                                          TARGET 	        = $(VERSION_NAME).elf
                                          TARGET_FINAL    = $(VERSION_NAME)
                                          TARGET_PLATFORM = PANDORA
                                          BUILD_LINUX     = 1
                                          BUILD_SDL       = 1
                                          BUILD_GLES      = 1
                                          BUILD_OPENGL    = 1
                                          BUILD_LOADGL    = 1
                                          BUILD_WEBM      = 1
                                          BUILD_GFX       = 1
                                          BUILD_PTHREAD   = 1
                                          BUILD_SDL_IO    = 1
                                          BUILD_TREMOR    = 1
                                          BUILDING        = 1
                                          CC  	        = gcc
                                          INCLUDES        = $(PNDDEV)/include \
                                                            $(PNDDEV)/include/SDL
                                          OBJTYPE         = elf
                                          LIBRARIES       = ./lib
                                          ifeq ($(BUILD_PANDORA), 0)
                                          BUILD_DEBUG     = 1
                                          endif
                                          endif
                                          
                                          ...
                                          ...
                                          ifdef BUILD_PANDORA
                                          STRIP 	        = strip $(TARGET) -o $(TARGET_FINAL)
                                          endif
                                          
                                          ...
                                          ...
                                          
                                          CFLAGS 	       += $(addprefix -I", $(addsuffix ", $(INCS))) $(ARCHFLAGS) -D$(TARGET_PLATFORM)
                                          CFLAGS 	       += -g -Wall -Werror -fsigned-char -std=gnu99
                                          CFLAGS         += -marm -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=hard -fomit-frame-pointer -ffast-math -O2
                                          
                                          ...
                                          ...
                                          
                                          ifdef BUILD_SDL
                                          ifeq ($(findstring DGE, $(SDKPATH)), DGE)
                                          LIBS           += -lSDL -lSDL_gfx -lts
                                          else
                                          LIBS           += -Wl,-rpath,$(LIBRARIES) -lSDL2 -lSDL2_gfx -lGL
                                          endif
                                          endif
                                          

                                          sdl/opengl.c

                                          // create an OpenGL compatibility context, not a core or ES context
                                          #ifndef WIN // except on Windows, where some Nvidia drivers really don't like us doing this
                                          //zanac, these attributes don't work well in allwinner (rasbperry too?)
                                          //SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_COMPATIBILITY);
                                          #endif
                                          
                                              //zanac, it seems that you should always create a new context without delete the old one, this happen in allwinner (rasbperry too?)
                                              //if((context = SDL_GL_GetCurrentContext()))
                                              //      SDL_GL_DeleteContext(context);
                                          
                                          1 Reply Last reply Reply Quote 2
                                          • BiZzAr721B
                                            BiZzAr721 @zanac
                                            last edited by

                                            @zanac said in OpenBOR finally working fine on RETROPIE with ES:

                                            If you want i can share the libretro_scummv.so core compiled in this way, it work very well i use it and is very great!!!

                                            I would love for you to share the libretro_scummv.so core. Although eventually, learning how to compile is something I want to learn how to do. Thanks

                                            @darknior
                                            Using residualVM from the experimental section I am able to play

                                            • Escape from Monkey Island
                                            • Grim Fandango
                                            • Myst 3

                                            The pi takes a big hit running them, but they are playable
                                            ResidualVM itself still has bugs

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