stefan-gr / abendbrot

Desktop oriented overlay for various ebuilds and the occasional gamer
19 stars 13 forks source link

games-emulation/ppsspp-libretro-9999-r2 fails to build #99

Open crocket opened 6 years ago

crocket commented 6 years ago

games-emulation/ppsspp-libretro-1.0_pre20171126 can be built, but it can't run tekken 6. I need the latest possible version of ppsspp-libretro based on ppsspp 1.5.4 and above to play tekken 6. ppsspp-1.5.4 can play tekken 6.

../git-version.cpp:3:37: error: expected ‘,’ or ‘;’ before ‘dce187a’
 const char *PPSSPP_GIT_VERSION = "" dce187a"";
                                     ^~~~~~~
make: *** [Makefile:451: ../git-version.o] Error 1
make: *** Waiting for unfinished jobs....
 * ERROR: games-emulation/ppsspp-libretro-9999-r2::abendbrot failed (compile phase):
 *   emake failed
stefan-gr commented 6 years ago

It's kind of scary fiddling with the eclass without testing. I hope I didn't broke anything.

crocket commented 6 years ago
CH_64 -DHAVE_OPENGL  -DDYNAREC -ffunction-sections -fdata-sections -c -o../git-version.o ../git-version.cpp
../git-version.cpp:3:38: error: too many decimal points in number
 const char *PPSSPP_GIT_VERSION = ""v1.4.2-1594-g507339827"";
                                      ^~~~
../git-version.cpp:3:34: error: unable to find string literal operator ‘operator""v1’ with ‘const char [1]’, ‘long unsigned int’ arguments
 const char *PPSSPP_GIT_VERSION = ""v1.4.2-1594-g507339827"";
                                  ^~~~
make: *** [Makefile:451: ../git-version.o] Error 1
make: *** Waiting for unfinished jobs....
../libretro/LibretroVulkanContext.cpp: In function ‘VkResult CreateSwapchainKHR(VkDevice, const VkSwapchainCreateInfoKHR*, const VkAllocationCallbacks*, VkSwapchainKHR_T**)’:
../libretro/LibretroVulkanContext.cpp:184:45: error: expected ‘(’ before ‘&’ token
  *pSwapchain = static_cast<VkSwapchainKHR *>&chain;
                                             ^
../libretro/LibretroVulkanContext.cpp:184:51: error: expected ‘)’ before ‘;’ token
  *pSwapchain = static_cast<VkSwapchainKHR *>&chain;
                                                   ^
../libretro/LibretroVulkanContext.cpp:184:51: error: invalid static_cast from type ‘VkSwapchainKHR_T*’ to type ‘VkSwapchainKHR_T**’
In file included from ../libretro/LibretroVulkanContext.cpp:8:0:
../libretro/LibretroVulkanContext.cpp: In function ‘bool create_device(retro_vulkan_context*, VkInstance, VkPhysicalDevice, VkSurfaceKHR, PFN_vkGetInstanceProcAddr, const char**, unsigned int, const char**, unsigned int, const VkPhysicalDeviceFeatures*)’:
../Common/Log.h:104:51: warning: format not a string literal and no format arguments [-Wformat-security]
   GenericLog(v, t, __FILE__, __LINE__, __VA_ARGS__); \
                                                   ^
../Common/Log.h:107:33: note: in expansion of macro ‘GENERIC_LOG’
 #define ERROR_LOG(t,...)   do { GENERIC_LOG(LogTypes::t, LogTypes::LERROR, __VA_ARGS__) } while (false)
                                 ^~~~~~~~~~~
../libretro/LibretroVulkanContext.cpp:330:3: note: in expansion of macro ‘ERROR_LOG’
   ERROR_LOG(G3D, vk->InitError().c_str());
   ^~~~~~~~~
../libretro/LibretroVulkanContext.cpp:379:28: error: invalid conversion from ‘VkResult (*)(VkDevice, VkSwapchainKHR_T, uint32_t*, VkImage_T**) {aka VkResult (*)(VkDevice_T*, VkSwapchainKHR_T, unsigned int*, VkImage_T**)}’ to ‘PFN_vkGetSwapchainImagesKHR {aka VkResult (*)(VkDevice_T*, VkSwapchainKHR_T*, unsigned int*, VkImage_T**)}’ [-fpermissive]
  vkGetSwapchainImagesKHR = GetSwapchainImagesKHR;
                            ^~~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:451: ../libretro/LibretroVulkanContext.o] Error 1
 * ERROR: games-emulation/ppsspp-libretro-9999-r2::abendbrot failed (compile phase):
 *   emake failed
stefan-gr commented 6 years ago

That was horrible, it took my laptop half an hour to reach that part. The version error should actually be fixed now and the vulkan thing is probably because upstream is busy fixing that up. There isn't even a way to not build the vulkan component apart from pretending to be osx.

stefan-gr commented 6 years ago

Also, did you try emerging vulkan-loader before this? Even if you don't have a vulkan capable card it should still allow you to build this with it.

crocket commented 6 years ago

After layman --sync-all, it can be compiled.

Can you cut a new release?

crocket commented 6 years ago

ppsspp-libretro-1.0_pre20180317.ebuild can be compiled.... However, I discovered that it takes a few resets on ppsspp-libretro to make tekken 6 work.

On the other hand, tekken 6 can be launched easily on ppsspp, but ppsspp has a few issues that ppsspp-libretro doesn't have.

ppsspp doesn't recognize dualshock 4 over bluetooth. Probably because it doesn't use evdev? tekken 6 intro video is broken on ppsspp while it is not broken on ppsspp-libretro.

stefan-gr commented 6 years ago

Seems like there isn't much we can do about it other than wait for fixes upstream. I'm not sure if the options are still exposed but did you try to use other gpu drivers in the core options?

crocket commented 6 years ago

What I discovered was that I have to press DualShock 4's X button to actually start the game. Now, I realize that ppsspp showed a screen where I had to press X to proceed. That screen was black on ppsspp-libretro because ppsspp-libretro is based on an older verion of ppsspp.

In other words, ppsspp-libretro is fine, but the core needs to be updated in the future to show the initial message instead of a black screen.