OpenBOR finally working fine on RETROPIE with ES
-
@oilusionista Therefore we will build diff patches. We download from official git and patch our changes in and then start the compiler. But I doubt that support of Raspberry will vanish that fast... so I do not really understand these concerns. I think the changes done to source code are not massive, mostly the makefile arguments imho. We will see what happens ;)
EDIT: Nice game ;)
-
@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.
-
@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.pak
and 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) -
@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? -
@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.
-
@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. -
@darknior We can compile older sources, too. Maybe 43xx branch. I am sure we can do the same changes here - did not test now.
-
@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 ... -
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/gl4esIn 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 2After this you should run cmake and compile:
cmake . -DBCMHOST=1
make GLFor use the lib i suggest this minimum environment variable:
export LIBGL_FB=2
export LIBGL_FBOMAKECURRENT=1OPENBOR, 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
endifI 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 -O3The 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);
-
@zanac Thank you for sticking around and seeing this through. It shows you take pride in your work.
-
@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 -
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
-
@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.
-
@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);
-
@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 -
@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 -
@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
Thanksgl4es 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/scummvmAfter 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=4If 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!!!
-
new hint.... it seems that is better use -O2 for compile openbor!!!
just replace in makefile patch that i mae O3 with O2 : ) -
@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 -
@cyperghost This is Василий Patch
Changelog:
added lib next to binary
added cflags, change from O3 to O2Makefile
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);
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.