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

                                            @bizzar721 Well it is the excessive work from @zanac that makes this possible. With GL4ES much more things will happen with better speed and the OpenBOR Video Settings Menus should work as expected....
                                            I just make some code reviews and compile a bit - far away from developing.

                                            But here we come to a possible turning point. The Jamma Pandora BOX uses an Mali MP400 GPU... up to know we relied on working SDL framework and a similar CPU. This worked fine so far. If the binary with the GL4ES patch runs fine we can shake hands because then it should be possible to speedup the whole thing again, due better driver support for the Pie ;)

                                            @zanac Watched some videos about the Jamma Pandora thing. Very interesting, it's a small PCB with JAMMA IO interface and the screen output is CRT with various frequencies for real RetroFeeling. The price for the box itself is not so much ... 60-80 USD. But I think the JAMMA things are not so cheap. All in all it seems very common to a Pie ;) So again ;)

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

                                            Buy a Pie ;) Just round about 35$

                                            :D

                                            But here is a real "PANDORAS BOX" .... portable

                                            About the gaming video you have posted... I have no FB account.

                                            EDIT:
                                            @darknior May you can take a look at the path thing of the OpenBOR PAK version? Source is here: https://github.com/zanac/OpenPB4/tree/master/openbor
                                            I can't find out why directories are stored to UserPath and not next to binary.

                                            EDIT 2:
                                            Function getBasePath in /source/utils.c seem to be responsible for this.

                                            Is working!

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