Building Solarus on the Gameshell

Started by Dowdheur, February 28, 2019, 10:25:15 AM

Previous topic - Next topic
Hi folks !  :D

My name is Dowdheur and I come from the Gameshell community forum

Gameshell is an open source handheld console originaly made by a kickstarter campaign.

The OS is based on Debian.

We love solarus engine so we're trying to build it from sources on our machines.

I followed the steps of the compilation guide.

But during the building process I fall on this error :




Even we you upgrade the sofware on the GameShell, the package libsdl2-dev is a version too old for building Solarus (2.0.5 vs 2.0.6).

The 2.0.5 version of SDL does not have the function SDL_ComposeCustomBlendMode.

You see this TWICE in src/graphics/sdlrenderer/SDLRenderer.cpp:

return SDL_ComposeCustomBlendMode(
  SDL_BLENDFACTOR_SRC_ALPHA,
  SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA,
  SDL_BLENDOPERATION_ADD,
  SDL_BLENDFACTOR_ONE,
  SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA,
  SDL_BLENDOPERATION_ADD);


We can replace both "custom blend modes" by normal ones:

return SDL_BLENDMODE_BLEND;

After that it should generate an executable called solarus-run.

By the way we have no idea what effect this has (hence, quick and dirty).


So, would you be able to tell us if it will have an impact on the operation of the program?
Or by chance would you have a better solution to offer us?


THANKS !  ;D

Hi Dowdheur,

Those separate blendmodes attempt to fix bugs when compositing semi-transparent surfaces on-top of another (with premultiplied alpha).
By reverting this code to "simple" blendmodes you might experience some graphical inaccuracies. But solarus had those for a long time so it will already be a really enjoyable experience.

Also note that as long as you manage to launch the engine with the opengl (GL ES in your case) backend. The SDL graphic code is not used and you will get the full working transparency stuff.

Anyway, thank you very much to put effort into spreading solarus engine a lovely open-source platform. We love it !

Greg.