kodi-game / game.libretro Goto Github PK
View Code? Open in Web Editor NEWLibretro compatibility layer for the Kodi Game API
License: GNU General Public License v2.0
Libretro compatibility layer for the Kodi Game API
License: GNU General Public License v2.0
❯ git clone https://github.com/kodi-game/game.libretro.git
cd game.libretro
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_PREFIX_PATH=$HOME/kodi \
-DCMAKE_INSTALL_PREFIX=$HOME/workspace/kodi/addons \
-DPACKAGE_ZIP=1 \
..
make
make install
Clonage dans 'game.libretro'...
remote: Enumerating objects: 3416, done.
remote: Counting objects: 100% (602/602), done.
remote: Compressing objects: 100% (224/224), done.
remote: Total 3416 (delta 413), reused 494 (delta 368), pack-reused 2814
Réception d'objets: 100% (3416/3416), 814.45 Kio | 2.76 Mio/s, fait.
Résolution des deltas: 100% (2236/2236), fait.
-- The C compiler identification is GNU 11.4.0
-- The CXX compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:6 (find_package):
By not providing "FindKodi.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Kodi", but
CMake did not find one.
Could not find a package configuration file provided by "Kodi" with any of
the following names:
KodiConfig.cmake
kodi-config.cmake
Add the installation prefix of "Kodi" to CMAKE_PREFIX_PATH or set
"Kodi_DIR" to a directory containing one of the above files. If "Kodi"
provides a separate development package or SDK, be sure it has been
installed.
-- Configuring incomplete, errors occurred!
See also "/home/harry/game.libretro/build/CMakeFiles/CMakeOutput.log".
make: *** Pas de cible spécifiée et aucun makefile n'a été trouvé. Arrêt.
make: *** Aucune règle pour fabriquer la cible « install ». Arrêt.
Any idea ?
To keep track of CI PRs for game add-ons:
Can you please a tag a release?
We would really love to have a release for use in distributions (in my case, specifically Gentoo).
Thanks!
Trying to launch any Nintendo 64 game from IAGL add-on in Kodi results in Kodi crashing.
Launch the game in mupen64 emulator after downloading the game.
Crashes Kodi with a seg fault
I suspect that the addons work without crashing Kodi in older versions of Kodi.
Steps to reproduce the behavior:
Here's the steps I took.
Install all of these using yay.
Install kodi-x11
Install kodi-addon-game-libretro
Install kodi-addon-game-libretro-mupen64plus
Download the IAGL zipfile
In Kodi:
Add the zipfile to get the repo.
Install IAGL from the new repo.
Install Nintendo 64 Controller
Nintendo - Nintendo 64 (Muphen64Plus)
Install IAGL - Internet Archive Game Launcher
In Kodi:
IAGL -> Browse All Lists -> Internet Archives Best Of N64 -> The Legend of Zelda - Ocarina of Time or 007
It seems to happen with every Nintendo 64 game.
Results:
Crashes Kodi every time.
$ kodi --debug
/usr/bin/kodi: line 219: 349385 Segmentation fault (core dumped) ${KODI_BINARY} $SAVED_ARGS
Crash report available at /home/bullshark/kodi_crashlog-20200615_004443.log
Is the save file being opened before checking if it exists? And a save file is expected the first time a game is ran when there has been no saves.
2020-06-15 00:44:38.748 T:140704015163264 ERROR: Failed to open savestate file /home/bullshark/.kodi/userdata/addon_data/plugin.program.iagl/temp_iagl/Legend of Zelda, The - Ocarina of Time (USA) (Rev B).sav
kodi_crashlog-20200615_004443.log
Edit:
Here's another crash log after I installed gdb.
kodi_crashlog-20200615_005007.log
http://odin.root.sx/kodi_crashlog-20200615_005007.log
The debuglog can be found here:
Here are some links or screenshots to help explain the problem:
Just before the crash:
The crash happens immediately after the download for any N64 game.
Here is some additional context or explanation that might help:
Used Operating system:
Manjaro Linux with KDE latest.
$ uname -a
Linux plasma 5.7.0-3-MANJARO #1 SMP PREEMPT Wed Jun 3 03:15:33 UTC 2020 x86_64 GNU/Linux
$ kodi --version
18.7 Git:20200603-nogitfound Media Center Kodi
Copyright (C) 2005-2020 Team Kodi - http://kodi.tv
$ pacman -Q | grep kodi
kodi 18.7.1-3
kodi-addon-game-libretro 1.1.1-5
kodi-addon-game-libretro-mupen64plus 2.5.0.6-14
kodi-addon-visualization-projectm 1:2.2.0-15
kodi-platform 20190726.809c5e9-10
kodi-x11 18.7.1-3
$
Hello,
Can you add the emulator N64 in the kodi game libretro.
You can download the game but you can not open it because there a no emulator.
Thanks
ChaiLove is a game engine for libretro. While I haven't fully tested this, I'd love to have some direction into how to get it working in Retroplayer/KodiGame.
Made the initial Kodi addon work for it over at:
https://github.com/RobLoach/game.libretro.chailove
The beetle-bsnes directory will need a lot of updates:
https://github.com/RobLoach/game.libretro.chailove/tree/master/depends/common/beetle-bsnes
Would love your thoughts on how to get this up and running.
For me the current retroplayer
(5b5a1dd) branch does not compile. I got the same error as for the Travis build:
https://travis-ci.org/kodi-game/game.libretro/jobs/409429919
The Frame Time Callback will help with a few cores...
https://github.com/kodi-game/game.libretro/blob/master/src/libretro/LibretroEnvironment.cpp#L317-L326
Once set, it should be called every game loop, passing in the delta since the last time the loop was run. An example of how this can be run is over at SDLArch:
https://github.com/heuripedes/sdlarch/blob/master/sdlarch.c#L774-L783
Looks like builds for the Ubuntu PPA which is used in preference to the internal kodi addon repos is failing due to unmet dependency on rcheevos. This in turn is making it impossible to install any other libretro addons as they all depend on this. I'm not sure of the best solution as I'm not really familiar with the binary addons build process, but at a glance it looks like if the rcheevos find module fails, it should be built from depends instead rather than the build process bailing.
I'm doing the nightly OSMC builds with Leia. After this update I'm getting the following build errors.
In file included from /mnt/package/mediacenter-next-osmc/src/xbmc-54b1d5a91092e81df7509c882568f68f5bece7a7/cmake/addons/build/game.libretro/src/client.cpp:22:0:
/mnt/package/mediacenter-next-osmc/src/xbmc-54b1d5a91092e81df7509c882568f68f5bece7a7/cmake/addons/build/game.libretro/src/input/ControllerTopology.h:46:5: error: 'game_input_topology' does not name a type
game_input_topology* GetTopology();
^~~~~~~~~~~~~~~~~~~
/mnt/package/mediacenter-next-osmc/src/xbmc-54b1d5a91092e81df7509c882568f68f5bece7a7/cmake/addons/build/game.libretro/src/input/ControllerTopology.h:48:30: error: 'game_input_topology' has not been declared
static void FreeTopology(game_input_topology *topology);
^~~~~~~~~~~~~~~~~~~
/mnt/package/mediacenter-next-osmc/src/xbmc-54b1d5a91092e81df7509c882568f68f5bece7a7/cmake/addons/build/game.libretro/src/input/ControllerTopology.h:56:20: error: 'GAME_PORT_TYPE' has not been declared
bool SetDevice(GAME_PORT_TYPE portType, const std::string &controllerId);
^~~~~~~~~~~~~~
/mnt/package/mediacenter-next-osmc/src/xbmc-54b1d5a91092e81df7509c882568f68f5bece7a7/cmake/addons/build/game.libretro/src/input/ControllerTopology.h:57:23: error: 'GAME_PORT_TYPE' has not been declared
void RemoveDevice(GAME_PORT_TYPE portType);
^~~~~~~~~~~~~~
/mnt/package/mediacenter-next-osmc/src/xbmc-54b1d5a91092e81df7509c882568f68f5bece7a7/cmake/addons/build/game.libretro/src/input/ControllerTopology.h:81:7: error: 'GAME_PORT_TYPE' does not name a type
GAME_PORT_TYPE type;
^~~~~~~~~~~~~~
-- extracting...
src='/mnt/package/mediacenter-next-osmc/src/xbmc-54b1d5a91092e81df7509c882568f68f5bece7a7/cmake/addons/build/download/rtmpdump-fa8646daeb19dfd12c181f7d19de708d623704c0.tar.gz'
dst='/mnt/package/mediacenter-next-osmc/src/xbmc-54b1d5a91092e81df7509c882568f68f5bece7a7/cmake/addons/build/librtmp/src/librtmp'
-- extracting... [tar xfz]
-- extracting... [analysis]
-- extracting... [rename]
-- extracting... [clean up]
-- extracting... done
[ 86%] Performing patch step for 'librtmp'
patching file Makefile
patching file Makefile
Hunk #1 succeeded at 2 with fuzz 2.
/mnt/package/mediacenter-next-osmc/src/xbmc-54b1d5a91092e81df7509c882568f68f5bece7a7/cmake/addons/build/game.libretro/src/client.cpp:427:1: error: 'game_input_topology' does not name a type
game_input_topology* GetTopology()
^~~~~~~~~~~~~~~~~~~
/mnt/package/mediacenter-next-osmc/src/xbmc-54b1d5a91092e81df7509c882568f68f5bece7a7/cmake/addons/build/game.libretro/src/client.cpp:432:19: error: variable or field 'FreeTopology' declared void
void FreeTopology(game_input_topology* topology)
^~~~~~~~~~~~~~~~~~~
/mnt/package/mediacenter-next-osmc/src/xbmc-54b1d5a91092e81df7509c882568f68f5bece7a7/cmake/addons/build/game.libretro/src/client.cpp:432:19: error: 'game_input_topology' was not declared in this scope
/mnt/package/mediacenter-next-osmc/src/xbmc-54b1d5a91092e81df7509c882568f68f5bece7a7/cmake/addons/build/game.libretro/src/client.cpp:432:40: error: 'topology' was not declared in this scope
void FreeTopology(game_input_topology* topology)
^~~~~~~~
[ 86%] No update step for 'librtmp'
[ 86%] Performing configure step for 'librtmp'
CMakeFiles/game.libretro.dir/build.make:62: recipe for target 'CMakeFiles/game.libretro.dir/src/client.cpp.o' failed
make[5]: *** [CMakeFiles/game.libretro.dir/src/client.cpp.o] Error 1
make[5]: Leaving directory '/mnt/package/mediacenter-next-osmc/src/xbmc-54b1d5a91092e81df7509c882568f68f5bece7a7/cmake/addons/build/game.libretro-prefix/src/game.libretro-build'
CMakeFiles/Makefile2:99: recipe for target 'CMakeFiles/game.libretro.dir/all' failed
make[4]: *** [CMakeFiles/game.libretro.dir/all] Error 2
make[4]: Leaving directory '/mnt/package/mediacenter-next-osmc/src/xbmc-54b1d5a91092e81df7509c882568f68f5bece7a7/cmake/addons/build/game.libretro-prefix/src/game.libretro-build'
Makefile:127: recipe for target 'all' failed
make[3]: *** [all] Error 2
make[3]: Leaving directory '/mnt/package/mediacenter-next-osmc/src/xbmc-54b1d5a91092e81df7509c882568f68f5bece7a7/cmake/addons/build/game.libretro-prefix/src/game.libretro-build'
CMakeFiles/game.libretro.dir/build.make:112: recipe for target 'game.libretro-prefix/src/game.libretro-stamp/game.libretro-build' failed
Any pointers as to the issue?
Could this "Angrylion RDP Plus" multithreading fork of the Angrylion renderer be used as an alternative software renderer in Kodi?
https://github.com/ata4/angrylion-rdp-plus
Update from fork "Angrylion RDP Plus" and use as alternative to "multithreaded angrylion" video renderer for Mupen64Plus-Next?
https://github.com/libretro/mupen64plus-libretro-nx/tree/develop/mupen64plus-video-angrylion
Not a good replacement for a GPU implementation but maybe an option for multithreaded software renderer on multi-core CPUs?
https://www.ngemu.com/threads/spread-the-word-angrylion-rdp-plus.200521/
It is designed to work as a video renderer for N64 emulators, including Mupen64Plus-Next (i.e. mupen64 forks and derivatives):
https://github.com/kodi-game/game.libretro.mupen64plus-nx
https://github.com/libretro?q=mupen64&type=all&language=&sort=
Other not currently compatible Nintendo 64 emulators is ParaLLEl N64 and its fork ParaLLeXT which uses GPU only ParaLLEl RDP, but as I understand it they where originally based on Mupen64 Plus and their renderer was also based on Angrylion:
Anyway, the project looks to become active again with a new release this year:
https://github.com/ata4/angrylion-rdp-plus/releases
Read more about it in this blog article on libretro.com from 2017:
So accurate software-based emulation of the N64 has remained an elusive pipe dream for decades. However, it seems things are finally changing now on high-end hardware.
This test was conducted on an Intel i7 7700K running at Boost Mode (4.80GHz). We are using both the OpenGL video driver and the Vulkan video driver for this test, and we are running the game Super Mario 64. The exact spot we are testing at it is at the Princess Peach castle courtyard.
Note that we are using the cxd4 RSP interpreter which, despite the SSE optimizations, would still be pretty slow compared to any RSP dynarec, so these results are impressive to say the least. There are games which dip more than this – for instance, Killer Instinct Gold can run at 48fps on the logo title screen, but on average, if you turn off VI filtering, most games should run at fullspeed with this configuration.
In case you didn’t notice already, Vulkan doesn’t really benefit us much when we do plain software rendering. We are talking maybe a conservative 3fps increase with VI filtering, and about 2fps or maybe even a bit less with VI turned off. Not much to brag about but it could help in case you barely get 60fps and you need a 2+ fps dip to avoid v-sync stutters.
Oddly enough, the sole exception to this is GoldenEye 007, where the tables are actually turned, and OpenGL actually leaps ahead of Vulkan quite significantly, conservatively by about 5fps with VI filter applied, and even higher with no VI filter. I tested this many times over to see if there was maybe a slight discrepancy going on, but I got the exact same results each and every time.
I am trying to compile but I've had quite a bit ot trouble compiling Kodi. The readme for game.libretro says:
First, make sure Kodi's add-on build system is installed somewhere. You can perform a system install (to /usr/local) or a local install (I prefer $HOME/kodi). Specify this when you build Kodi:
./bootstrap
./configure --prefix=$HOME/kodi
make
make install
And if I go to the latest source of Kodi at https://github.com/xbmc/xbmc and clone it, there is no ./bootstrap file so the command is not found.
I am not sure a release will work for me because the game.libretro 2.0.0 release says "Requires Kodi 19 Matrix Version of "Oct. 26, 2019" or later!" and I am stuck on Kodi 18. Is there any version of game.libretro I may be able to use or compile? If I install the flatpak version of Kodi (even as root), it doesn't show as an option for the session in lightdm. If I try to bulid Kodi according to its compiling documentationI can't due to the error at the bottom of this: https://pastebin.com/fXMfSA4m.
Is there some easier way to compile game.libretro or get it into Kodi? Must I compile Kodi? Maybe I will try the deb-src repo next to compile it easier. if you think it is even worth it since it is v18.
Thanks
Recent commit to Garbear's xbmc branch breaks ability to build this addon:
garbear/xbmc@fcb2e1e#diff-7a3216a1f70cc6476dafd600c23fa44c
I have a PR to fix the game_system_av_info issue, but the unified streams break I have yet to fix.
#37
Make this compatibility layer for Kodi Game API add on work with the latest stable Kodi build 20 (Nexus).
Make it work with RetroArch 1.14.0 release
https://github.com/libretro/RetroArch/blob/master/CHANGES.md
support for newer cores [updated]
//Game Boy Advance
mgba core
//Sega Saturn
YabaSanshiro
//Nintendo 64
ParaLLEI N64
Mupen64Plus-Next GLES3
Mupen64Plud-Next GLES2
//Nintendo 3DS
Citra core
//Sony - PlayStation Portable
PPSSPP core
// Nintendo GameCube/ Wii
Dolphin core
Tested recently on Kodi 19.1. Steps to see issue:
I see that there is a settings file and language files generated in:
...path to userdata/addon_data/game.libretro.mame2003_plus/generated/
If I move those files to:
...path to addons/game.libretro.mame2003_plus/resources/
And restart Kodi, then I can configure the addon. It appears that the generated files are not being placed in the correct directory.
I think this is the right repository for this issue as just looking at the source code, it includes the SettingsGenerator functions, but if this isn't the right place please let me know.
Just testing out v19 with the latest game.libretro, I've found that I can inconsistently get Kodi to crash performing the same actions to start a game (on OSX). No specific thing I can figure out that causes the crash, but it appears that if I 'go fast' on the game addon selection dialog, then a crash occurs more often.
Example is loading a cdg / mp3 game using game.libretro.pocketcdg.
Loading the file and passing log
Loading the file and crashing log
I can also get Kodi to crash in the same manner using other game addons (mgba for example was where i first noticed it). I did not get the inconsistent crashing with Kodi v18 or the earlier version of this addon, so I'm not specifically sure if it's a game.libretro issue, but I'm happy to test more if needed.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.