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 194.9k 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 @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
                                        • Z
                                          zanac @cyperghost
                                          last edited by

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

                                          @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$

                                          I cannot use a pie, i run in an embedded board attached to jamma pinout.
                                          https://en.m.wikipedia.org/wiki/Japan_Amusement_Machine_and_Marketing_Association

                                          I use a jamma pandora box (search on web for info) that use allwinner chipset inside

                                          Here you are a video of openbor run on jamma pandora inside My arcade cab (The boy is My son)

                                          https://m.facebook.com/groups/148961237813?view=permalink&id=10157471340597814

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

                                            @darknior @cyperghost @zanac This is exciting - your baby is growing up so fast! ;p

                                            cyperghostC 1 Reply Last reply Reply Quote 2
                                            • 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.