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.6k 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.
    • cyperghostC
      cyperghost @zanac
      last edited by

      @zanac found the patch you made

      You forced videomode to case 0
      Can you recompile with use case 255 instead? I think this will work, too and you change just one setting ;)

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

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

        I think about using diff and patch tool so the git will be openbor main branch and patches are provided from here.

        It's the BEST solution for sure :)
        And the diff patch can be add to the Retropie Setup ;)

        Life is game, just play it !

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

          @darknior yes I think so. I just compared the changes from openbor C code. It is really a small patch. The second change was done to SDL section which I haven't checked so far.

          So we will provide patches and do likely use archived openbor versions. But for the sake of using the main openbor branch I think it is worth to act like this. Advantage we can patch other things like CLI fir ex in those files.

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

            @cyperghost Yes that's it :)
            I love the idea
            And the last version permit to recover Gamepads when they shut down, it is fantastic and will change our life lol
            Like on RetroArch :p

            Life is game, just play it !

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

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

              The second change was done to SDL section which I haven't checked so far.

              Can you explain what was done with SDL? I remember there was something wrong in some versions, I can't remember.

              cyperghostC 2 Replies Last reply Reply Quote 0
              • Z
                zerojay
                last edited by

                Are all these changes going to be available in source code form as well? I would like to have these running on my Odroid for instance.

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

                  @oilusionista as far ASD I checked there are hardcoded values for resolution. I did not check all the files but it seems just little modification.

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

                    @zerojay they are already available check the postings from @zanac

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

                      These days i cannot try make new patch suggested but my poc is public even source, just try all you want

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

                      @zerojay they are already available check the postings from @zanac

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

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

                        These days i cannot try make new patch suggested but my poc is public even source, just try all you want

                        +1 for this

                        Take your time I will step in the next days

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

                          So here is a small How To to compile a bare OpenBOR v3.0 rev 6412
                          Tested with current RetroPie image v 4.4 (md5sum: 56988addb60361a2257a61c69d9fceac) on RPi 3B 1.2

                          We need following dependencies before
                          enter sudo apt install libsdl2-gfx-dev libvorbisidec-dev libvpx-dev

                          1. Download archive @zanac with wget http://raw.githubusercontent.com/zanac/OpenPB4/master/openbor/openbor-engine-gl.tar.gz
                          2. Extract it with tar -xvzf openbor-engine-gl.tar.gz
                          3. EnterFile directory with cd engine-gl
                          4. Now compile the whole thing make BUILD_PANDORA=1

                          To play:
                          Just put one PAK file into Paks folder. This will automatically start the single title. If you insert more PAKs into this, the selection menu will be displayed

                          Todo:

                          • Raise resolution
                          • Raise colordepth
                          • Make optionmenu according to RPi possibilites
                          • Debounce Joypad (can someone confirm?)
                          • Make sound louder
                          • ....

                          It's far away from complete but with enough manpower this thing will work.
                          Need some time for code review ;)


                          tagline
                          @BiZzAr721 @darknior @zerojay @oilusionista

                          1 Reply Last reply Reply Quote 2
                          • BiZzAr721B
                            BiZzAr721
                            last edited by BiZzAr721

                            I probably will not be able to test until tomorrow evening, but I will as soon as possible!

                            EDIT
                            It failed on make with error:

                            Linking PANDORA Port: OpenBOR.elf...
                            /usr/bin/ld: /usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/libSDL2.a(SDL_rpimouse.o): undefined reference to symbol 'vc_dispmanx_element_remove'
                            //usr/lib/arm-linux-gnueabihf/libSDL2-2.0.so.0: error adding symbols: DSO missing from command line
                            collect2: error: ld returned 1 exit status
                            Makefile:661: recipe for target 'OpenBOR.elf' failed
                            make: *** [OpenBOR.elf] Error 1
                            

                            I was using the image I was testing on - I uninstalled OpenBOR through RetroPie Menu then restarted before running commands. Sorry, I did not get a chance to retry. I also realized I wasn't logged in with root.

                            Tried again, this time with root and had an issue with dependencies. Tried apt --fix-broken install like it said and then when I ran sudo apt install libsdl2-gfx-dev libvorbisidec-dev libvpx-dev again I received

                            The following packages have unmet dependencies:
                             libsdl2-gfx-dev : Depends: libsdl2-dev but it is not going to be installed
                            E: Unable to correct problems, you have held broken packages.
                            

                            Maybe I need to start from 100% clean image again

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

                              @bizzar721 I think you have used the libvpx file from @zanac opengl archive and put it to location libvpx.so.1 => /usr/lib/arm-linux-gnueabihf/vfp/neon/libvpx.so.1

                              please delete or rename that file and directory structure.
                              This lib is the last step before creating ELF file to binary.

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

                                One little problem that i encoutered on allwinner is that the GPU used is compatible only to GLES-2.0, and therefore openbor use OpenGL, this means that if i try to use hardware filters with GL it crash :(

                                With my solution openbor run in SDL and software filters and run very well... if in a future developers will implement a layer that wrap GL function to more then a backend (GL or GLES-2.0) we will be able to use also gpu hardware for bilinear filter!

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

                                  @zanac Okay prepared a patch in unified format. There developers see your changes. Thank you for preparing this one. I hope that this will be the kick-off for new development.

                                  This is Patchversion 1: Codename Анна

                                  --- sdl/menu.c	Fri Aug 10 10:15:18 2018
                                  +++ sdl/menu.c	Fri Aug 31 08:10:54 2018
                                  @@ -696,6 +696,7 @@
                                   {
                                       int i;
                                       int delay = 500;
                                  +    return;
                                   
                                       if(savedata.logo) return;
                                   
                                  --- sdl/video.c	Fri Aug 10 10:15:18 2018
                                  +++ sdl/video.c	Fri Aug 31 08:10:02 2018
                                  @@ -68,12 +68,13 @@
                                   #endif
                                   
                                   	SDL_GetCurrentDisplayMode(0, &video_info);
                                  -	nativeWidth = video_info.w;
                                  -	nativeHeight = video_info.h;
                                  +	nativeWidth = 384;
                                  +	nativeHeight = 224;
                                   	printf("debug:nativeWidth, nativeHeight, bpp, Hz  %d, %d, %d, %d\n", nativeWidth, nativeHeight, SDL_BITSPERPIXEL(video_info.format), video_info.refresh_rate);
                                   
                                   	SDL_initFramerate(&framerate_manager);
                                   	SDL_setFramerate(&framerate_manager, 200);
                                  +	printf("debug:nativeWidth, nativeHeight, bpp, Hz  %d, %d, %d, %d\n", nativeWidth, nativeHeight, SDL_BITSPERPIXEL(video_info.format), video_info.refresh_rate);
                                   }
                                   
                                   void video_set_window_title(const char* title)
                                  @@ -86,10 +87,12 @@
                                   
                                   int SetVideoMode(int w, int h, int bpp, bool gl)
                                   {
                                  +        w = 384;
                                  +        h = 224;
                                   	int flags = SDL_WINDOW_SHOWN | SDL_WINDOW_INPUT_FOCUS;
                                   	static bool last_gl = false;
                                  -	static int last_x = SDL_WINDOWPOS_UNDEFINED;
                                  -	static int last_y = SDL_WINDOWPOS_UNDEFINED;
                                  +	static int last_x = 0;//SDL_WINDOWPOS_UNDEFINED;
                                  +	static int last_y = 0;//SDL_WINDOWPOS_UNDEFINED;
                                   
                                   	if(gl) flags |= SDL_WINDOW_OPENGL;
                                   	if(savedata.fullscreen) flags |= SDL_WINDOW_FULLSCREEN_DESKTOP;
                                  @@ -232,9 +235,7 @@
                                   	SDL_UpdateTexture(texture, NULL, surface->data, surface->pitch);
                                   	blit();
                                   
                                  -#if WIN || LINUX
                                   	SDL_framerateDelay(&framerate_manager);
                                  -#endif
                                   
                                   	return 1;
                                   }
                                  --- source/scriptlib/ScriptVariant.c	Fri Aug 10 10:15:18 2018
                                  +++ source/scriptlib/ScriptVariant.c	Wed Aug 22 12:53:24 2018
                                  @@ -926,6 +926,7 @@
                                       {
                                       case VT_DECIMAL:
                                           svar->dblVal = -(svar->dblVal);
                                  +		break;
                                       case VT_INTEGER:
                                           svar->lVal = -(svar->lVal);
                                       default:
                                  --- Makefile	Fri Aug 10 10:15:18 2018
                                  +++ Makefile	Fri Aug 31 08:11:36 2018
                                  @@ -22,6 +22,7 @@
                                   # Defines
                                   #----------------------------------------------------------------------------------------------------
                                   
                                  +#define BUILD_PANDORA
                                   
                                   ifdef BUILD_PSP
                                   TARGET          = $(VERSION_NAME)
                                  @@ -135,16 +136,20 @@
                                   
                                   ifdef BUILD_PANDORA
                                   TARGET 	        = $(VERSION_NAME).elf
                                  -TARGET_FINAL    = $(VERSION_NAME)
                                  +TARGET_FINAL    = $(VERSION_NAME)-gl
                                   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  	        = $(PNDDEV)/bin/arm-none-linux-gnueabi-gcc
                                  +CC  	        = gcc
                                   INCLUDES        = $(PNDDEV)/include \
                                                     $(PNDDEV)/include/SDL
                                   OBJTYPE         = elf
                                  @@ -199,7 +204,7 @@
                                   STRIP           = $(PREFIX)strip $(TARGET) -o $(TARGET_FINAL)
                                   endif
                                   ifdef BUILD_PANDORA
                                  -STRIP 	        = $(PNDDEV)/bin/arm-none-linux-gnueabi-strip $(TARGET) -o $(TARGET_FINAL)
                                  +STRIP 	        = strip $(TARGET) -o $(TARGET_FINAL)
                                   endif
                                   ifdef BUILD_WII
                                   STRIP           = elf2dol $< $@
                                  @@ -444,6 +449,7 @@
                                   
                                   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
                                   
                                   
                                   ifndef BUILD_DARWIN
                                  --- openbor.c	Fri Aug 10 10:15:18 2018
                                  +++ openbor.c	Thu Aug 23 14:10:26 2018
                                  @@ -36635,22 +36635,22 @@
                                   #endif
                                   
                                   VIDEOMODES:
                                  -    videomodes.mode    = videoMode;
                                  +    videomodes.mode    = 0;//videoMode;
                                       videomodes.filter  = savedata.swfilter;
                                       switch (videoMode)
                                       {
                                           // 320x240 - All Platforms
                                       case 0:
                                  -        videomodes.hRes    = 320;
                                  -        videomodes.vRes    = 240;
                                  +        videomodes.hRes    = 384;
                                  +        videomodes.vRes    = 224;
                                           videomodes.hScale  = 1;
                                           videomodes.vScale  = 1;
                                           videomodes.hShift  = 0;
                                           videomodes.vShift  = 0;
                                  -        videomodes.dOffset = 231;
                                  -        PLAYER_MIN_Z       = 160;
                                  -        PLAYER_MAX_Z       = 232;
                                  -        BGHEIGHT           = 160;
                                  +        videomodes.dOffset = 220;
                                  +        PLAYER_MIN_Z       = 140;
                                  +        PLAYER_MAX_Z       = 220;
                                  +        BGHEIGHT           = 140;
                                           break;
                                   
                                           // 480x272 - All Platforms
                                  
                                  Z 1 Reply Last reply Reply Quote 2
                                  • Z
                                    zanac @cyperghost
                                    last edited by

                                    @cyperghost i tweaked the source again, today with gl4es lib and some small change i was able to make a version that run fullscreen with GL filters at full fps speed! Tomorrow i will try to share gl4es binary, openbor binary and a new source patched.. In My allwinner run much better dont know on rasbperry but i think that that Board is much similar.

                                    cyperghostC 3 Replies Last reply Reply Quote 3
                                    • cyperghostC
                                      cyperghost @zanac
                                      last edited by cyperghost

                                      @zanac I was able to compile old OpenBOR-3400 with full PAK and full load/save feature from the source you've provided I've also patched @darknior CLI patch in. So we have a full running OpenBOR maschine with working Video Menu, PAK support, load/save feature, highscore.
                                      Maybe you can help out. All userdata is stored to homedirectory. Do you know a patch to locate those files next to binary? Working!! Watch out user rights!

                                      You can download binary from my github account: https://github.com/crcerror/RetroPie-OpenBOR-scripts/tree/master/binary

                                      • PAK support
                                      • Highscore support
                                      • load/save feature working

                                      Everything is working!

                                      ATTENTION UNSUPPORTED!!
                                      Tagging @BiZzAr721 @darknior
                                      Thx @zanac

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

                                        @zanac I would be glad to test if you are ready.

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

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

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

                                          The second change was done to SDL section which I haven't checked so far.

                                          Can you explain what was done with SDL? I remember there was something wrong in some versions, I can't remember.

                                          You can see the changes done to video.c in sdl directory ;) It is a hardcoded resolution posted here

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

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

                                            My allwinner run much better [with GL4ES] dont know on rasbperry but i think that that Board is much similar.

                                            Buy a Pie ;) Just round about 35$

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