Giter VIP home page Giter VIP logo

garbear / xbmc Goto Github PK

View Code? Open in Web Editor NEW

This project forked from xbmc/xbmc

132.0 28.0 53.0 883.72 MB

XBMC Main Repository

Home Page: http://xbmc.org

License: Other

C++ 87.23% C 2.79% Python 0.90% Shell 0.22% CSS 0.14% HTML 0.52% JavaScript 2.37% Makefile 0.60% C# 0.09% Objective-C 0.45% CMake 2.22% Objective-C++ 1.40% Java 0.11% NSIS 0.04% GLSL 0.20% Groovy 0.17% Batchfile 0.19% M4 0.15% HLSL 0.10% Perl 0.13%
hacktoberfest

xbmc's Introduction

retroplayer

Overview

RetroPlayer is a new player core for Kodi Entertainment Center. It is similar to the video and audio players, but it plays games instead of movies and music.

Design and Components

RetroPlayer: Player core that plays games on the virtual file system (VFS) using game add-ons. Despite its name, it can play all types of games, not just retro ones. It borrows many ideas from the video player. Games can be paused, fast-forwarded, and rewound in realtime (watch little Mario run backwards!). Instead of bookmarks, save states are created and allow for quick browsing of the game's play history.

Game Add-ons: Standalone games, emulators and game streamers. From day one, RetroPlayer has been compatible with the libretro ecosystem.

Peripheral Add-ons: Add-ons that expose hardware devices to Kodi. Communication with devices takes place over a bus. The peripheral add-on API is a virtual bus, alongside USB and PCI, that allows third parties to expose hardware devices to Kodi.

Joystick input: Various joystick APIs (DirectX, XInput, SDL, etc.) provide access to raw hardware events, like button presses and axis positions. The joystick input system maps these to physical elements on the controller, such as the X button, left trigger or right analog stick. The gesture recognition from touch input has been converted to monitor holding, double-pressing, analog stick rotation and (someday) accelerometer gestures.

Media readers: Plugging a cartridge into Retrode-like devices can display game metadata and automatically launch the game. Removing a cartridge from the media reader can take a save-state so that the next time the game is inserted, gameplay begins from where it left off. Games can be cached indefinitely, so there is no need to insert the cartridge a second time (although it's possibly quicker than browsing for the cached game!). Game filenames aren't available, so game metadata is extracted from the ROM itself using PyRomInfo.

Many of these features are still works-in-progress, so fork the code and help out!

Building Kodi and games

Build Kodi per usual. If you are developing binary add-ons using a local prefix, specifying it during the cmake step:

mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$HOME/kodi
make -j8

Joystick support is now provided through a binary add-on. Follow the out-of-tree instructions at https://github.com/xbmc/peripheral.joystick.

Game add-ons are hosted separately at https://github.com/kodi-game. If you would like to compile all game add-ons in one fell swoop, create a build directory out-of-tree and run the following commands:

cmake -DADDONS_TO_BUILD=game.* \
      -DCMAKE_BUILD_TYPE=Debug \
      -DCMAKE_INSTALL_PREFIX=$HOME/workspace/kodi/addons \
      -DPACKAGE_ZIP=1 \
      $HOME/workspace/kodi/cmake/addons
make

where $HOME/workspace/kodi symlinks to the directory you cloned Kodi into.

xbmc's People

Contributors

ace20022 avatar afedchin avatar alwinesch avatar davetblake avatar davilla avatar elupus avatar enen92 avatar fernetmenta avatar fritsch avatar fuzzard avatar garbear avatar jenkins4kodi avatar jmarshallnz avatar karlson2k avatar koying avatar ksooo avatar lrusak avatar martijnkaijser avatar memphiz avatar mkortstiege avatar montellese avatar notspiff avatar opdenkamp avatar peak3d avatar popcornmix avatar rechi avatar ronie avatar tamland avatar wsnipex avatar xhaggi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xbmc's Issues

Ubuntu 20.04 Kodi 19.1.0 Failed to initialize game.libretro.genplus

Bug report

Describe the bug

Here is a clear and concise description of what the problem is:

I have installed Kodi, installed kodi-game-libretro, installed and configured controllers, added rom paths to game section.

but when I try to launch a rom nothing appears to happen at all, but there are entries in the kodi log (down below in log section):

Expected Behavior

I thought the roms would launch, or get an error that indicates what the issue might be. I am not sure where to start, the error log tells me it was unable to initialize but not the reason why.

Actual Behavior

The rom never loads, the screen seems to not change at all, as if it never tried, but it obviously did because the log says so.

Possible Fix

Additionally, if I load my roms by exiting kodi and using retroarch, then I am able to load them and play.

To Reproduce

Steps to reproduce the behavior:
here was my install routine:

sudo add-apt-repository ppa:team-xbmc/ppa
sudo add-apt-repository ppa:libretro/stable

sudo apt update

sudo apt install kodi retroarch
sudo apt install kodi-game-libretro kodi-game-libretro-fceumm kodi-game-libretro-bsnes-mercury-performance kodi-game-libretro-tgbdual kodi-game-libretro-vba-next kodi-game-libretro-desmume kodi-game-libretro-beetle-psx

I installed and configured the additional controllers within kodi.

Debuglog

grc tail -f ~/.kodi/temp/kodi.log

2021-06-15 17:32:56.872 T:2341     INFO <general>: RetroPlayer[PROCESS]: Created process info for X11
2021-06-15 17:32:56.872 T:2341    ERROR <general>: ADDON: Could not locate game.libretro.genplus.so
2021-06-15 17:32:56.872 T:2341    ERROR <general>: ADDON: Dll Sega - MS/GG/MD/CD (Genesis Plus GX) - Client returned bad status (4) from Create and is not usable
2021-06-15 17:32:58.978 T:2341    ERROR <general>: RetroPlayer[PLAYER]: Failed to initialize game.libretro.genplus

Your Environment

Used Operating system:

  • Android

  • iOS

  • tvOS

  • Linux

  • OSX

  • Windows

  • Windows UWP

  • Operating system version/name: Ubuntu 20.04.2 with KDE Plasma

  • Kodi version: 19.1.0

[Enhancement] xbmc.joystickSuspend()

Title says most of it.
Similar to Kodi's python module functions xbmc.audioSuspend() and xbmc. audioResume()

Rationale:
I can think of a lot of reasons an addon would want to temporarily suspend joystick input (or prevent it all together), but one of the main reasons is to avoid input to Kodi when it's not in focus on the screen (i.e user temporarily brings another application in focus and uses the joystick)

Bonus points if the function can specify by controller type

Launching Fails if no savestates are present in latest nightly

Bug report

Describe the bug

Here is a clear and concise description of what the problem is:

Launching will fail in the latest release RetroPlayer 20 (2023-02-01) if no savestates are present
https://forum.kodi.tv/showthread.php?tid=173361&pid=3139497#pid3139497

Adding an issue here for visibility. Feel free to close this if you've already resolved

Expected Behavior

Here is a clear and concise description of what was expected to happen:

Launching will not fail if no savestates are present

Actual Behavior

If no savestates are present, the log shows:

No compatible game client selected

Even though there are compatible gameclients

Possible Fix

It seems something was broken with the latest savestate implementation that missed accounting for no savestates?

To Reproduce

Steps to reproduce the behavior:

  1. Start Kodi RetroPlayer 20 (2023-02-01)
  2. Validate a specific game addon is loaded
  3. Launch a compatible game with no savestate present

Debuglog

The debuglog can be found here:

Screenshots

Here are some links or screenshots to help explain the problem:

Additional context or screenshots (if appropriate)

Here is some additional context or explanation that might help:

Your Environment

Used Operating system:

  • Android

  • iOS

  • tvOS

  • Linux

  • OSX

  • Windows

  • Windows UWP

  • Operating system version/name:

  • Kodi version: RetroPlayer 20 (2023-02-01)

note: Once the issue is made we require you to update it with new information or Kodi versions should that be required.
Team Kodi will consider your problem report however, we will not make any promises the problem will be solved.

RetroPlayer M 19.0 issues

Target: v19.0

  • Core issues
  • Cheat support (request)
  • Netplay
    • Game streaming
      • Fix OpenSSL dependency in game.moonlight on all platforms
  • Save states
  • Achievements

[Feature Request] vfs.libarchive

vfs.libarchive is not yet included (for OSX). Coincidentally it's not in the nightly builds either. I've tried to build it myself but can't get it to compile (although I'm fairly certain thats just my lack of knowledge with compiling on a mac).

xbmc.player ignoring m3u

Issue:
Attempting to launch a game from m3u via IAGL is failing / being ignored.

Relevant IAGL Code:

xbmc.log(msg='IAGL:  Gameclient for Retroplayer set to: %(current_gameclient)s' % {'current_gameclient': current_gameclient}, level=xbmc.LOGNOTICE)
xbmc.log(msg='IAGL:  Attempting to play the following file through Retroplayer: %(url)s' % {'url': self.launch_filenames[0]}, level=xbmc.LOGNOTICE)
xbmc.Player().play(xbmc.translatePath(self.launch_filenames[0]),game_listitem)

Log:

NOTICE: IAGL:  Gameclient for Retroplayer set to: game.libretro.beetle-psx
NOTICE: IAGL:  Attempting to play the following file through Retroplayer: /Users/xxx/Library/Application Support/Kodi/userdata/addon_data/plugin.program.iagl/temp_iagl/Alone_in_the_Dark_The_New_Nightmare_USA/Alone in the Dark - The New Nightmare (USA).m3u

After the play call is sent, I see no attempt in the Kodi log to try and play the file. Pointing to the m3u through the Kodi GUI (via a Games Source) will launch the file just fine.

Password Issue

Bug report

Describe the bug

Here is a clear and concise description of what the problem is:

Expected Behavior

Here is a clear and concise description of what was expected to happen:

Actual Behavior

Possible Fix

To Reproduce

Steps to reproduce the behavior:

Debuglog

The debuglog can be found here:

Screenshots

Here are some links or screenshots to help explain the problem:

Additional context or screenshots (if appropriate)

Here is some additional context or explanation that might help:

Your Environment

Used Operating system:

  • Android

  • iOS

  • tvOS

  • Linux

  • OSX

  • Windows

  • Windows UWP

  • Operating system version/name:

  • Kodi version:
    Hello
    I came acrossed transifex login credentials.
    I logged in to TeamXBMC on transifex
    I was going to add my self to the team but thats not fair.... lol
    So I logged out and I can't make a pull request over at TeamXBMC / alanwww1
    To tell u to change the password and such.
    plz unblock me from pull requests / issue reports.

@alanwww1
@garbear

note: Once the issue is made we require you to update it with new information or Kodi versions should that be required.
Team Kodi will consider your problem report however, we will not make any promises the problem will be solved.

Keypresses not recognized after Playback stop

Not sure if this should reside in your branch or Kodi's at this point. Feel free to delete if it doesn't belong here.

Issue: Current Kodi v18 Beta 1 version seems like it will not give up keyboard control after a game was played and then stopped.

To recreate issue: Open up IAGL, Launch a game (Stella game in the log example), Press some keys, Bring up the OSD and select Exit. Attempting to use Enter on the keyboard after the game is exited no longer works (Note: it does in Alpha 3)

Also note this issue doesn't seem to occur if you start a game, and then bring up the OSD (with the mouse) and do not press some keys.

Additional notes after some more testing: With the latest beta, this seems to happen less often, but it does still sometimes happen. I can't find a reliable way to recreate this issue. I do notice that when this issue occurs, the viewtype of the listitems on the screen change from Folders to Icons, implying to me that Kodi is changing the listitem isFolder is being changed from True to False

Version Tested:

21:39:16.962 T:140735187836928  NOTICE: -----------------------------------------------------------------------
21:39:16.962 T:140735187836928  NOTICE: Starting Kodi (18.0-BETA1 Git:20180814-fc9faf32d5). Platform: OS X x86 64-bit
21:39:16.962 T:140735187836928  NOTICE: Using Debug Kodi x64 build
21:39:16.962 T:140735187836928  NOTICE: Kodi compiled Aug 14 2018 by Clang 9.0.0 (clang-900.0.37) for OS X x86 64-bit version 10.9.0 (1090)
21:39:16.962 T:140735187836928  NOTICE: Running on Apple Inc. MacBookPro12,1 with OS X 10.11.6, kernel: Darwin x86 64-bit version 15.6.0
21:39:16.962 T:140735187836928  NOTICE: FFmpeg version/source: 4.0.2-Kodi
21:39:16.963 T:140735187836928  NOTICE: Host CPU: Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz, 4 cores available

Log:

21:41:56.137 T:140735187836928   DEBUG: SECTION:UnloadDll(/Applications/Kodi_Retroplayer.app/Contents/Resources/Kodi/addons/game.libretro/game.libretro.1.0.38.dylib)
21:41:56.137 T:140735187836928    INFO: ADDON: Dll Destroyed - Atari - 2600 (Stella)
21:41:56.139 T:140735187836928   DEBUG: RetroPlayer[PLAYER]: Playback ended
21:41:56.139 T:140735187836928   DEBUG: OnPlayBackEnded: CApplication::OnPlayBackEnded
21:41:56.139 T:140735187836928   DEBUG: RetroPlayer[PLAYER]: Closing file
21:41:56.139 T:123145306673152   DEBUG: CAnnouncementManager - Announcement: OnStop from xbmc
21:41:56.139 T:140735187836928   DEBUG: RetroPlayer[PLAYER]: Playback ended
21:41:56.140 T:140735187836928   DEBUG: OnPlayBackEnded: CApplication::OnPlayBackEnded
21:41:56.140 T:123145306673152   DEBUG: GOT ANNOUNCEMENT, type: 1, from xbmc, message OnStop
21:41:56.140 T:140735187836928   DEBUG: CGUIWindowManager::PreviousWindow: Deactivate
21:41:56.140 T:123145306673152   DEBUG: CAnnouncementManager - Announcement: OnStop from xbmc
21:41:56.140 T:140735187836928   DEBUG: ------ Window Deinit (VideoFullScreen.xml) ------
21:41:56.140 T:123145306673152   DEBUG: GOT ANNOUNCEMENT, type: 1, from xbmc, message OnStop
21:41:56.140 T:140735187836928   DEBUG: ------ Window Deinit (GameOSD.xml) ------
21:41:56.140 T:140735187836928   DEBUG: CGUIWindowManager::PreviousWindow: Activate new
21:41:56.141 T:140735187836928   DEBUG: ------ Window Init (MyVideoNav.xml) ------
21:41:56.141 T:140735187836928   DEBUG: Window MyVideoNav.xml was already loaded
21:41:56.142 T:140735187836928   DEBUG: Alloc resources: 0.73ms
21:41:56.142 T:140735187836928   ERROR: Control 55 in window 10025 has been asked to focus, but it can't
21:41:56.164 T:140735187836928   DEBUG: CGUIMediaWindow::GetDirectory (plugin://plugin.program.iagl/game_list/list_all/Atari_2600_Bestof_ZachMorris/1)
21:41:56.164 T:140735187836928   DEBUG:   ParentPath = [plugin://plugin.program.iagl/game_list/list_all/Atari_2600_Bestof_ZachMorris/1]
21:41:56.166 T:123145324457984   DEBUG: CAddonDatabase::SetLastUsed[plugin.program.iagl] took 2 ms
21:41:56.168 T:140735187836928   DEBUG: Loading items: 25, directory: plugin://plugin.program.iagl/game_list/list_all/Atari_2600_Bestof_ZachMorris/1 sort method: 0, ascending: false
21:41:56.170 T:123145308819456   DEBUG: Thread BackgroundLoader start, auto delete: false
21:41:56.171 T:123145317482496   DEBUG: Skin Helper Service --> Kodi_Monitor: sender xbmc - method: Player.OnStop  - data: {"end":true,"item":{"type":"unknown"}}
21:41:56.179 T:123145309970432   DEBUG: Previous line repeats 1 times.
21:41:56.179 T:123145309970432   DEBUG: ffmpeg[70000074E000]: Invalid return value 0 for stream protocol
21:41:56.179 T:123145308819456   DEBUG: Previous line repeats 1 times.
21:41:56.180 T:123145308819456   DEBUG: Thread BackgroundLoader 123145308819456 terminating
21:41:56.181 T:123145309356032   DEBUG: ffmpeg[7000006B8000]: Invalid return value 0 for stream protocol
21:41:56.181 T:123145324457984   DEBUG: Previous line repeats 1 times.
21:41:56.181 T:123145324457984   DEBUG: ffmpeg[70000151F000]: Invalid return value 0 for stream protocol
21:41:56.188 T:123145312653312   DEBUG: Previous line repeats 1 times.
21:41:56.188 T:123145312653312   DEBUG: ffmpeg[7000009DD000]: Invalid return value 0 for stream protocol
21:41:56.191 T:123145324457984   DEBUG: Previous line repeats 1 times.
21:41:56.191 T:123145324457984   DEBUG: ffmpeg[70000151F000]: Invalid return value 0 for stream protocol
21:41:56.192 T:123145309356032   DEBUG: Previous line repeats 1 times.
21:41:56.192 T:123145309356032   DEBUG: ffmpeg[7000006B8000]: Invalid return value 0 for stream protocol
21:41:56.194 T:123145309970432   DEBUG: Previous line repeats 1 times.
21:41:56.194 T:123145309970432   DEBUG: ffmpeg[70000074E000]: Invalid return value 0 for stream protocol
21:41:56.201 T:123145324457984   DEBUG: Previous line repeats 1 times.
21:41:56.201 T:123145324457984   DEBUG: ffmpeg[70000151F000]: Invalid return value 0 for stream protocol
21:41:56.203 T:123145309970432   DEBUG: Previous line repeats 1 times.
21:41:56.204 T:123145309970432   DEBUG: ffmpeg[70000074E000]: Invalid return value 0 for stream protocol
21:41:56.205 T:123145309356032   DEBUG: Previous line repeats 1 times.
21:41:56.205 T:123145309356032   DEBUG: ffmpeg[7000006B8000]: Invalid return value 0 for stream protocol
21:41:56.206 T:123145312653312   DEBUG: Previous line repeats 1 times.
21:41:56.206 T:123145312653312   DEBUG: ffmpeg[7000009DD000]: Invalid return value 0 for stream protocol
21:41:56.215 T:123145309970432   DEBUG: Previous line repeats 1 times.
21:41:56.216 T:123145309970432   DEBUG: ffmpeg[70000074E000]: Invalid return value 0 for stream protocol
21:41:56.216 T:123145324457984   DEBUG: Previous line repeats 1 times.
21:41:56.217 T:123145324457984   DEBUG: ffmpeg[70000151F000]: Invalid return value 0 for stream protocol
21:41:56.218 T:123145309356032   DEBUG: Previous line repeats 1 times.
21:41:56.218 T:123145309356032   DEBUG: ffmpeg[7000006B8000]: Invalid return value 0 for stream protocol
21:41:56.219 T:123145307209728   DEBUG: CActiveAE::ClearDiscardedBuffers - buffer pool deleted
21:41:56.219 T:123145309356032   DEBUG: ffmpeg[7000006B8000]: Invalid return value 0 for stream protocol
21:41:56.220 T:123145312653312   DEBUG: ffmpeg[7000009DD000]: Invalid return value 0 for stream protocol
21:41:56.236 T:123145318555648   DEBUG: Previous line repeats 1 times.
21:41:56.236 T:123145318555648   DEBUG: Skin Helper Widgets --> Kodi_Monitor: sender xbmc - method: Player.OnStop  - data: {"end":true,"item":{"type":"unknown"}}
21:41:56.913 T:140735187836928   DEBUG: Previous line repeats 1 times.
21:41:56.914 T:140735187836928   DEBUG: Keyboard: scancode: 0x7c, sym: 0x0113, unicode: 0xf703, modifier: 0x0
21:41:56.914 T:140735187836928   DEBUG: HandleKey: right (0xf083) pressed, action is Right
21:41:56.918 T:140735187836928   DEBUG: ------ Window Deinit (Pointer.xml) ------
21:41:56.980 T:140735187836928   DEBUG: Keyboard: scancode: 0x7c, sym: 0x0113, unicode: 0x0000, modifier: 0x0
21:41:57.181 T:140735187836928   DEBUG: Keyboard: scancode: 0x7d, sym: 0x0112, unicode: 0xf701, modifier: 0x0
21:41:57.182 T:140735187836928   DEBUG: HandleKey: down (0xf081) pressed, action is Down
21:41:57.185 T:123145312653312   DEBUG: ffmpeg[7000009DD000]: Invalid return value 0 for stream protocol
21:41:57.186 T:123145309970432   DEBUG: Previous line repeats 1 times.
21:41:57.186 T:123145309970432   DEBUG: ffmpeg[70000074E000]: Invalid return value 0 for stream protocol
21:41:57.186 T:123145309356032   DEBUG: ffmpeg[7000006B8000]: Invalid return value 0 for stream protocol
21:41:57.186 T:123145309970432   DEBUG: ffmpeg[70000074E000]: Invalid return value 0 for stream protocol
21:41:57.186 T:123145309356032   DEBUG: ffmpeg[7000006B8000]: Invalid return value 0 for stream protocol
21:41:57.188 T:123145324457984   DEBUG: ffmpeg[70000151F000]: Invalid return value 0 for stream protocol
21:41:57.195 T:123145312653312   DEBUG: Previous line repeats 1 times.
21:41:57.195 T:123145312653312   DEBUG: ffmpeg[7000009DD000]: Invalid return value 0 for stream protocol
21:41:57.199 T:123145309356032   DEBUG: Previous line repeats 1 times.
21:41:57.199 T:123145309356032   DEBUG: ffmpeg[7000006B8000]: Invalid return value 0 for stream protocol
21:41:57.200 T:123145309970432   DEBUG: Previous line repeats 1 times.
21:41:57.200 T:123145309970432   DEBUG: ffmpeg[70000074E000]: Invalid return value 0 for stream protocol
21:41:57.205 T:123145309356032   DEBUG: Previous line repeats 1 times.
21:41:57.206 T:123145309356032   DEBUG: ffmpeg[7000006B8000]: Invalid return value 0 for stream protocol
21:41:57.207 T:123145309970432   DEBUG: Previous line repeats 1 times.
21:41:57.207 T:123145309970432   DEBUG: ffmpeg[70000074E000]: Invalid return value 0 for stream protocol
21:41:57.280 T:140735187836928   DEBUG: Previous line repeats 3 times.
21:41:57.281 T:140735187836928   DEBUG: Keyboard: scancode: 0x7d, sym: 0x0112, unicode: 0x0000, modifier: 0x0
21:41:57.300 T:123145324457984   DEBUG: ffmpeg[70000151F000]: Invalid return value 0 for stream protocol
21:41:57.383 T:123145309356032   DEBUG: Previous line repeats 1 times.
21:41:57.383 T:123145309356032   DEBUG: ffmpeg[7000006B8000]: Invalid return value 0 for stream protocol
21:41:57.797 T:140735187836928   DEBUG: Previous line repeats 1 times.
21:41:57.797 T:140735187836928   DEBUG: Keyboard: scancode: 0x7b, sym: 0x0114, unicode: 0xf702, modifier: 0x0
21:41:57.798 T:140735187836928   DEBUG: HandleKey: left (0xf082) pressed, action is Left
21:41:57.930 T:140735187836928   DEBUG: Keyboard: scancode: 0x7b, sym: 0x0114, unicode: 0x0000, modifier: 0x0
21:41:58.176 T:140735187836928   DEBUG: Keyboard: scancode: 0x7d, sym: 0x0112, unicode: 0xf701, modifier: 0x0
21:41:58.176 T:140735187836928   DEBUG: HandleKey: down (0xf081) pressed, action is Down
21:41:58.180 T:123145309356032   DEBUG: ffmpeg[7000006B8000]: Invalid return value 0 for stream protocol
21:41:58.281 T:140735187836928   DEBUG: Previous line repeats 1 times.
21:41:58.281 T:140735187836928   DEBUG: Keyboard: scancode: 0x7d, sym: 0x0112, unicode: 0x0000, modifier: 0x0
21:41:58.565 T:140735187836928   DEBUG: Keyboard: scancode: 0x24, sym: 0x000d, unicode: 0x000d, modifier: 0x0
21:41:58.681 T:140735187836928   DEBUG: Keyboard: scancode: 0x24, sym: 0x000d, unicode: 0x0000, modifier: 0x0
21:41:58.681 T:140735187836928   DEBUG: HandleKey: return (0xf00d) pressed, action is Select
21:41:58.683 T:140735187836928 WARNING: CGUIMediaWindow::OnClick - updating in progress
21:41:59.564 T:140735187836928   DEBUG: Keyboard: scancode: 0x24, sym: 0x000d, unicode: 0x000d, modifier: 0x0
21:41:59.749 T:140735187836928   DEBUG: Keyboard: scancode: 0x24, sym: 0x000d, unicode: 0x0000, modifier: 0x0
21:41:59.749 T:140735187836928   DEBUG: HandleKey: return (0xf00d) pressed, action is Select
21:41:59.751 T:140735187836928 WARNING: CGUIMediaWindow::OnClick - updating in progress
21:42:00.301 T:123145324457984   DEBUG: ffmpeg[70000151F000]: Invalid return value 0 for stream protocol
21:42:00.304 T:140735187836928   DEBUG: Previous line repeats 1 times.
21:42:00.304 T:140735187836928   DEBUG: ------ Window Init (Pointer.xml) ------
21:42:00.470 T:140735187836928   DEBUG: ------ Window Deinit (Pointer.xml) ------
21:42:01.438 T:123145312653312   DEBUG: ffmpeg[7000009DD000]: Invalid return value 0 for stream protocol
21:42:03.805 T:123145309970432   DEBUG: Previous line repeats 1 times.
21:42:03.805 T:123145309970432   DEBUG: ffmpeg[70000074E000]: Invalid return value 0 for stream protocol
21:42:05.488 T:123145309356032   DEBUG: Previous line repeats 1 times.
21:42:05.488 T:123145309356032   DEBUG: ffmpeg[7000006B8000]: Invalid return value 0 for stream protocol
21:42:07.636 T:140735187836928   DEBUG: Previous line repeats 1 times.

Build with CMake

Hi @garbear,

I hope it's ok to misuse an issue for the topic, but I'd have a question on your binary addons extension.

When you build Kodi with CMake you can now develop binary addons against it by just building an addon with cmake -DKODI_BUILD_DIR=<kodi build dir> -DCMAKE_PREFIX_PATH=<kodi build dir>/build <myaddon source dir>. This also deploys the addon in the kodi build dir, so that Kodi finds it. If I apply xbmc#9804 and xbmc#9671, this also works with your retroplayer branch. I've tested game.libretro and peripheral.joystick.

Do you or maybe @notspiff have an idea how we could do the same thing for the cores? Their CMake file just do a find_package(<LIBRETRO CORE>) which fails because the core has not been built.

What I'm looking for is basically a simple way to build and deploy a core in debug mode to launch it for debugging with a self compiled kodi.

Thanks much,
Christian

No AUR anymore?

This project isn't available on AUR anymore.

This could be a problem during AUR update and the new need of metadata file.

I would be happy to get this project through yaourt back.

Thanks Merlink

"RetroPlayer Nexus 20.0 issues" tracking issue needed?

@garbear Do you have an issue tracking changelog for RetroPlayer Nexus 20.0 issues similar to the ones have for 19.0 and 18.0?

#88

#80

Noticed that kodi.tv news page has a new article about Kodi "Nexus" Beta 1 and was surprised that the article did not mention any changelog commits about Kodi Game / RetroPlayer and Libretro or games/gaming input related features for which there have been many commits too since Matrix:

https://kodi.tv/article/kodi-nexus-beta-1/

Question about changelogs also posted in the Kodi forum here:

https://forum.kodi.tv/showthread.php?tid=370617

DirectX and Xinput both enabled by default

Hi,

With a joystick such as the ds4 for ps4, Direct input goes bonkers when configuring the joystick for an emulator. Xinput seems to work fine as a wrapper with the same hardware (ds4),though .

thought you would like to know

Jeremy

Parent directory '..' listitem does not exit addon

This may just be how my addon is (poorly) written, as I'm not able to recreate this issue in any other addon I tested (SuperFavorites, Youtube). Feel free to close this if this is just how Kodi works now.

Version tested:

14:59:16.547 T:140735305183232  NOTICE: Starting Kodi (18.0-ALPHA1 Git:20180215-276e1a4). Platform: OS X x86 64-bit
14:59:16.548 T:140735305183232  NOTICE: Using Debug Kodi x64 build
14:59:16.548 T:140735305183232  NOTICE: Kodi compiled Feb 15 2018 by Clang 9.0.0 (clang-900.0.37) for OS X x86 64-bit version 10.8.0 (1080)
14:59:16.548 T:140735305183232  NOTICE: Running on Apple Inc. MacBookPro12,1 with OS X 10.11.6, kernel: Darwin x86 64-bit version 15.6.0
14:59:16.548 T:140735305183232  NOTICE: FFmpeg version/source: 3.4.1-Kodi
14:59:16.549 T:140735305183232  NOTICE: Host CPU: Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz, 4 cores available

Issue: Pressing the '..' Kodi directory item when in an addon does not go to the parent directory and close the addon as expected. Testing the same addon (IARL) in v17 the behavior is different.

Log:
[First press of '..' listitem]

09:03:31.579 T:140735305183232   DEBUG: ------ Window Init (Pointer.xml) ------
09:03:31.630 T:140735305183232   DEBUG: ------ Window Deinit (Pointer.xml) ------
09:03:37.311 T:140735305183232   DEBUG: ------ Window Init (Pointer.xml) ------
09:03:38.785 T:140735305183232   DEBUG: ProcessMouse: trying mouse action leftclick
09:03:38.786 T:140735305183232   DEBUG: CGUIMediaWindow::GetDirectory (plugin://plugin.program.iarl/)
09:03:38.786 T:140735305183232   DEBUG:   ParentPath = [plugin://]
09:03:38.788 T:123145304526848   DEBUG: CAddonDatabase::SetLastUsed[plugin.program.iarl] took 2 ms
09:03:38.788 T:123145311580160   DEBUG: StartScript - calling plugin Internet Archive ROM Launcher('plugin://plugin.program.iarl/','9','','resume:false')
09:03:38.788 T:123145302839296   DEBUG: Thread LanguageInvoker start, auto delete: false
09:03:38.788 T:123145302839296    INFO: initializing python engine.
09:03:38.789 T:123145302839296   DEBUG: CPythonInvoker(25, /Users/ZC/Library/Application Support/Kodi/addons/plugin.program.iarl/addon.py): start processing
09:03:38.802 T:123145302839296   DEBUG: -->Python Interpreter Initialized<--
...
09:03:39.444 T:123145302839296    INFO: CPythonInvoker(25, /Users/ZC/Library/Application Support/Kodi/addons/plugin.program.iarl/addon.py): script successfully run
09:03:39.496 T:123145305063424   DEBUG: Thread BackgroundLoader start, auto delete: false
09:03:39.504 T:123145305063424   DEBUG: Thread BackgroundLoader 123145305063424 terminating
09:03:39.534 T:123145302839296    INFO: Python script stopped
09:03:39.534 T:123145302839296   DEBUG: Thread LanguageInvoker 123145302839296 terminating
09:03:39.723 T:140735305183232   DEBUG: ------ Window Deinit (DialogBusy.xml) ------

[Second press of '..' listitem]

09:03:40.711 T:140735305183232   DEBUG: ProcessMouse: trying mouse action leftclick
09:03:40.712 T:140735305183232   DEBUG: CGUIMediaWindow::GetDirectory ()
09:03:40.712 T:140735305183232   DEBUG:   ParentPath = []
09:03:40.721 T:123145302839296   DEBUG: Thread BackgroundLoader start, auto delete: false
09:03:40.725 T:123145302839296   DEBUG: Thread BackgroundLoader 123145302839296 terminating
09:03:41.319 T:140735305183232   DEBUG: ------ Window Deinit (Pointer.xml) ------

typos in keymaps/joystick.xml

hi!

found some other typos in keymaps/joystick.xml

--- system/keymaps/joystick.xml 2015-01-11 10:18:30.000000000 +0100
+++ system/keymaps/joystick.xml 2015-01-11 10:21:32.000000000 +0100
@@ -57,7 +57,7 @@


  •  <rsick></rstick>
    
  •  <rstick></rstick>
    


    ActivateWindow(Home)

    @@ -67,14 +67,14 @@
    Left
    Right

  •  <left_joy_up>Up</up>
    
  •  <left_joy_down>Down</down>
    
  •  <left_joy_left>Left</left>
    
  •  <left_joy_right>Right</right>
    
  •  <right_joy_up>Up</up>
    
  •  <right_joy_down>Down</down>
    
  •  <right_joy_left>Left</left>
    
  •  <right_joy_right>Right</right>
    
  •  <left_joy_up>Up</left_joy_up>
    
  •  <left_joy_down>Down</left_joy_down>
    
  •  <left_joy_left>Left</left_joy_left>
    
  •  <left_joy_right>Right</left_joy_right>
    
  •  <right_joy_up>Up</right_joy_up>
    
  •  <right_joy_down>Down</right_joy_down>
    
  •  <right_joy_left>Left</right_joy_left>
    
  •  <right_joy_right>Right</right_joy_right>
    
====

if it is not too much requested would you please update to kodi-14.0 stable or even git master?
thank you very much for your GREAT work! :}

Failed to Play Game

Issue: Selecting any core (eg. 2048, DOSBOX, ScummVM, etc) in Games causes "Failed to Play Game" message

Version Tested:

-----------------------------------------------------------------------
09:46:32.481 T:140735305183232  NOTICE: Starting Kodi (18.0-ALPHA1 Git:20180215-276e1a4). Platform: OS X x86 64-bit
09:46:32.481 T:140735305183232  NOTICE: Using Debug Kodi x64 build
09:46:32.481 T:140735305183232  NOTICE: Kodi compiled Feb 15 2018 by Clang 9.0.0 (clang-900.0.37) for OS X x86 64-bit version 10.8.0 (1080)
09:46:32.481 T:140735305183232  NOTICE: Running on Apple Inc. MacBookPro12,1 with OS X 10.11.6, kernel: Darwin x86 64-bit version 15.6.0
09:46:32.481 T:140735305183232  NOTICE: FFmpeg version/source: 3.4.1-Kodi
09:46:32.482 T:140735305183232  NOTICE: Host CPU: Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz, 4 cores available

Log:

09:44:57.868 T:140735305183232    INFO: GAME: ------------------------------------
09:44:57.868 T:140735305183232    INFO: GAME: Loaded DLL for game.libretro.2048
09:44:57.868 T:140735305183232    INFO: GAME: Client: 2048 at version 1.0.0
09:44:57.868 T:140735305183232    INFO: GAME: Valid extensions:
09:44:57.868 T:140735305183232    INFO: GAME: Supports VFS:                  yes
09:44:57.868 T:140735305183232    INFO: GAME: Supports standalone execution: yes
09:44:57.868 T:140735305183232    INFO: GAME: ------------------------------------
09:44:57.869 T:140735305183232   DEBUG: RetroPlayer[AUDIO]: Initializing audio
09:44:57.869 T:140735305183232   DEBUG: RetroPlayer[VIDEO]: Initializing video
09:44:57.869 T:140735305183232   DEBUG: RetroPlayer[RENDER]: Initializing render manager
09:44:57.869 T:140735305183232   DEBUG: RetroPlayer[INPUT]: Initializing input
09:44:57.869 T:140735305183232   DEBUG: PERIPHERALS: Event poll handle registered
09:44:57.869 T:140735305183232    INFO: RetroPlayer[PLAYER]: Opening: game://game.libretro.2048/
09:44:57.869 T:140735305183232 WARNING: CreateLoader - unsupported protocol(game) in game://game.libretro.2048/
09:44:57.869 T:140735305183232   DEBUG: ------ Window Init (DialogConfirm.xml) ------

[Enhancement] Add game.libretro.XXX settings to in-game OSD

It would be beneficial to add a row item to the in-game OSD to quickly bring up the current game.libretro.core settings

As an example:
In DOSBOX, for Win3.1 games, I needed to change the settings for game.libretro.dosbox dosbox_machine_type to svga_s3 (not the default), and for other DOS games I had to set it back to vgaonly.

In the current implementation, I would have to go into Addons>My Addons>Game Addons>Emulators>DOSBOX>Settings to change that. It would be much easier if I could access the settings after the core is started. Note that a reboot / restart of the core might be needed after some of the settings are changed.

Adding a link to the core settings from the in-game OSD would be akin to Retroarches "Quick Menu" settings.

Game add-ons trying to build uae4arm on amd64?

Hi,

Trying to build beta2 game.* add-ons on amd64 (Ubuntu 18.04).

Fresh checkout, following a script here:

#!/bin/bash

#ADDONS=game.libretro*
ADDONS=game.*
BRANCH=retroplayer-18beta2-20180914
WORKSPACE=/home/kodi/repos/kodibuild

#sudo rm -rfv $WORKSPACE
# uncomment if you want to remove automatically
#rm -rfv $WORKSPACE
git clone -b $BRANCH https://github.com/garbear/xbmc $WORKSPACE

mkdir $WORKSPACE/build-addons
cd $WORKSPACE/build-addons
cmake -DADDONS_TO_BUILD=$ADDONS \
      -DCMAKE_BUILD_TYPE=Debug \
      -DCMAKE_INSTALL_PREFIX=$WORKSPACE/addons \
      -DPACKAGE_ZIP=1 \
      $WORKSPACE/cmake/addons
make -j2

Bombs out here:

src/audio.cpp: In function โ€˜void audio_reset()โ€™:
src/audio.cpp:944:28: warning: overflow in implicit constant conversion [-Woverflow]
      cdp->per = PERIOD_MAX - 1;
./src/md-retro/maccess.h: Assembler messages:
./src/md-retro/maccess.h:23: Error: no such instruction: `ldrh %ax,[%rax]'
./src/md-retro/maccess.h:24: Error: no such instruction: `rev16 %ax,%ax'
Makefile:194: recipe for target 'src/audio.o' failed
make[6]: *** [src/audio.o] Error 1
CMakeFiles/uae4arm.dir/build.make:110: recipe for target 'uae4arm/src/uae4arm-stamp/uae4arm-build' failed
make[5]: *** [uae4arm/src/uae4arm-stamp/uae4arm-build] Error 2
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/uae4arm.dir/all' failed
make[4]: *** [CMakeFiles/uae4arm.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make[3]: *** [all] Error 2
CMakeFiles/uae4arm.dir/build.make:110: recipe for target 'build/uae4arm/src/uae4arm-stamp/uae4arm-build' failed
make[2]: *** [build/uae4arm/src/uae4arm-stamp/uae4arm-build] Error 2
CMakeFiles/Makefile2:687: recipe for target 'CMakeFiles/uae4arm.dir/all' failed
make[1]: *** [CMakeFiles/uae4arm.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Mouse support for game add-ons

I'll outline mouse support for anyone who would like to work on this, I know @fetzerch was interested.

Mouse support is fully implemented in game.libretro. The libretro API requests mouse input via RETRO_DEVICE_ID_MOUSE_X/Y here. This reads mouse data; the data is written by the Game API event GAME_INPUT_EVENT_RELATIVE_POINTER here. The challenge is to implement this mouse event in Kodi.

Fortunately, a solution exists in the form of keyboard input. 99% of mouse implementation will be copying keyboard code. I'll start at the GAME_INPUT_EVENT_KEY event here and work backwards to see what we need for mouse input.

The GAME_INPUT_EVENT_KEY is generated by CGameClientKeyboard here. This means we need a CGameClientMouse class.

CGameClientKeyboard implements the KEYBOARD::IKeyboardHandler interface at xbmc/input/keyboard/IKeyboardHandler.h interface. Similarly, we'll need to create a MOUSE::IMouseHandler interface at xbmc/input/mouse/IMouseHandler.h. Count yourself lucky - not everyone gets to create a new source code folder in Kodi ๐Ÿ˜‰

When a game is opened, if <supports_keyboard> is true, then CGameClient::OpenKeyboard() is called. We need a <supports_mouse> parameter and a corresponding CGameClient::OpenMouse() function.

When OpenKeyboard() is called, the keyboard handler is created and registers itself via CInputManager::RegisterKeyboardHandler() here. We need a CInputManager::RegisterMouseHandler() function and a vector to store mouse handlers.

100% of key presses pass through CInputManager::OnKey() here. We need to find a location where all mouse events pass (hint: CInputManager::ProcessMouse()). Then, similar to key presses, if a registered mouse handler returns true, we prevent the input from reaching Kodi.

And that's basically it. Keyboard input required some refactoring (#6779), so expect CInputManager to need some refactoring for mouse hooking as well. This will probably be the most difficult part, as everything else is very straight-forward.

Missing Disc Swap feature

The basic feature of changing discs when emulating playstation is missing.

I posted this at xbmc-retroplayer, not sure what is the exact difference between the two, so I just post it here again.

Player Manager

Player Manager design requirements

Early screenshot:

SNES 5 players

Hypothetical example of depth-first player assignment:

hubs

Discussion: https://forum.kodi.tv/showthread.php?tid=295463&pid=2676758#pid2676758

Datasets:

Avatar add-on:

Controller add-ons:

Controller feature support:

Topology support

New skin controls:

  • Player panel (<control type="playerpanel">)
    • Skin XML
    • Deserialize to C++
  • Controller panel (control type="controllerpanel">)
    • Skin XML
    • Deserialize to C++

Controller panel:

  • Topology tree to grid conversion (announcement)
  • Game API support
  • Player manager
  • Controller topology listprovider
  • Dimensions resize to fit controller topology
  • Y-alignment (top, bottom)

Avatar panel:

  • Player numbers
  • Animations (idle, move, fall)
  • Snap-to-grid

Common properties:

  • Navigation between panels follows motion

Menus:

  • #133
  • Context menu when selecting controller

Avatar menu:

  • Change player (fades focus texture, avatar follows focus as it moves across players)
  • View profile
  • Choose profile
  • Assign controller
  • Controller settings

Controller menu:

  • Map device (opens controller dialog for this controller)
  • Choose device (if port can use multiple devices or models)
  • View info (opens add-on info)

New dialogs:

  • Player profile info
  • Player profile selection dialog
  • Assign controller dialog
  • Peripherals dialog with player's peripherals
  • Controller profile selection dialog

Player profile info dialog:

  • Profile picture with button to change it
  • Button to rename profile
  • Saved games widget
  • Achievements (someday)
  • Attached controllers widget

Emulator integration:

Attempting to play YouTube video results in error

Version tested: RetroPlayer 18 alpha1 2018-02-11

To Recreate: Attempt to play youtube video in youtube addon. Error window pops up stating 'Failed to Play Game'

Video URL in the log below was truncated for brevity, but the error occurs regardless of the video you choose.

21:41:34.115 T:123145303453696   DEBUG: CAddonSettings[plugin.video.youtube]: loading setting definitions
21:41:34.115 T:123145303453696   DEBUG: CAddonSettings[plugin.video.youtube]: trying to load setting definitions from old format...
21:41:34.117 T:123145303453696   DEBUG: CAddonSettings[plugin.video.youtube]: loading setting values
21:41:34.118 T:123145303453696   DEBUG: [plugin.video.youtube] Selecting YouTube config "All"
21:41:34.118 T:123145303453696   DEBUG: [plugin.video.youtube] User is not logged in
21:41:34.119 T:123145303453696   DEBUG: [plugin.video.youtube] No data for video 'UXZcY6vrceI' cached
21:41:34.120 T:123145303453696   DEBUG: [plugin.video.youtube] [data] v3 request: |GET| path: |videos| params: |{'part': 'snippet,contentDetails', 'id': u'UXZcY6vrceI'}| post_data: |None|
21:41:36.044 T:140735305183232   DEBUG: CCurlFile::GetMimeType - https://xxx -> video/mp4
21:41:36.048 T:123145309356032   DEBUG: Thread GUIDialogCache 123145309356032 terminating (autodelete)
21:41:36.052 T:140735305183232   DEBUG: CPlayerCoreFactory::GetPlayers(https://xxx)
21:41:36.052 T:140735305183232   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: system rules
21:41:36.052 T:140735305183232   DEBUG: CPlayerSelectionRule::GetPlayers: matches rule: system rules
21:41:36.052 T:140735305183232   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: mms/udp
21:41:36.052 T:140735305183232   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: lastfm/shout
21:41:36.052 T:140735305183232   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: rtmp
21:41:36.053 T:140735305183232   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: rtsp
21:41:36.053 T:140735305183232   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: streams
21:41:36.053 T:140735305183232   DEBUG: CPlayerSelectionRule::GetPlayers: matches rule: streams
21:41:36.053 T:140735305183232   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: aacp/sdp
21:41:36.053 T:140735305183232   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: mp2
21:41:36.054 T:140735305183232   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: dvd
21:41:36.054 T:140735305183232   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: sdp/asf
21:41:36.054 T:140735305183232   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: nsv
21:41:36.054 T:140735305183232   DEBUG: CPlayerSelectionRule::GetPlayers: considering rule: radio
21:41:36.054 T:140735305183232   DEBUG: CPlayerCoreFactory::GetPlayers: matched {0} rules with players
21:41:36.054 T:140735305183232   DEBUG: CPlayerCoreFactory::GetPlayers: adding videodefaultplayer (VideoPlayer)
21:41:36.054 T:140735305183232   DEBUG: CPlayerCoreFactory::GetPlayers: for video=1, audio=0
21:41:36.054 T:140735305183232   DEBUG: CPlayerCoreFactory::GetPlayers: for video=1, audio=1
21:41:36.055 T:140735305183232   DEBUG: CPlayerCoreFactory::GetPlayers: added {0} players
21:41:38.331 T:140735305183232   DEBUG: ------ Window Deinit (DialogConfirm.xml) ------
21:41:38.342 T:140735305183232    INFO: RetroPlayer: No compatible game client selected, aborting playback

Unfinished features

The following features are projects I started, but won't finish by the final v18 release. I'm linking to the source branches (rebased on v18) to keep track of them.

Saved game manager

saved games

Not much progress there. The branch is retroplayer-saves.

Player manager

See #87. Much progress, but still a lot to do. The branch is retroplayer-players.

Rewind/fast-forward dialog

A project to make rewind and fast-forward accessible.

rewind button

I've started the dialog, and started working on the RetroPlayer changes. Not many more changes required, but it's a good opportunity to work on RetroPlayer's core architecture.

rewind dialog

The branch is retroplayer-rewind.

game.libretro addons create files in Application directory

Version tested:

14:59:16.547 T:140735305183232  NOTICE: Starting Kodi (18.0-ALPHA1 Git:20180215-276e1a4). Platform: OS X x86 64-bit
14:59:16.548 T:140735305183232  NOTICE: Using Debug Kodi x64 build
14:59:16.548 T:140735305183232  NOTICE: Kodi compiled Feb 15 2018 by Clang 9.0.0 (clang-900.0.37) for OS X x86 64-bit version 10.8.0 (1080)
14:59:16.548 T:140735305183232  NOTICE: Running on Apple Inc. MacBookPro12,1 with OS X 10.11.6, kernel: Darwin x86 64-bit version 15.6.0
14:59:16.548 T:140735305183232  NOTICE: FFmpeg version/source: 3.4.1-Kodi
14:59:16.549 T:140735305183232  NOTICE: Host CPU: Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz, 4 cores available

Issue: 2048 created the following files in the application directory. I would expect these to be saved in the userdata directory:
game.libretro.xml
game.libretro.sav

Contents of game.libretro.xml

<?xml version="1.0" ?>
<savestate>
    <path>game.libretro.sav</path>
    <type>auto</type>
    <label>02/17/2018 3:01:12 PM</label>
    <size>680</size>
    <gameclient>game.libretro.2048</gameclient>
    <gamepath>game.libretro.2048</gamepath>
    <gamecrc></gamecrc>
    <frames>78</frames>
    <wallclock>1.218750</wallclock>
    <timestamp>2018-02-17 15:01:12</timestamp>
    <thumbnail></thumbnail>
</savestate>

Associated log:

15:01:09.447 T:140735305183232   DEBUG: AddOnLog: 2048: Setting libretro pixel format "XRGB8888"
15:01:09.447 T:140735305183232    INFO: GAME: ---------------------------------------
15:01:09.447 T:140735305183232    INFO: GAME: Base Width:   376
15:01:09.448 T:140735305183232    INFO: GAME: Base Height:  464
15:01:09.448 T:140735305183232    INFO: GAME: Max Width:    376
15:01:09.448 T:140735305183232    INFO: GAME: Max Height:   464
15:01:09.448 T:140735305183232    INFO: GAME: Aspect Ratio: 1.000000
15:01:09.448 T:140735305183232    INFO: GAME: FPS:          60.000000
15:01:09.448 T:140735305183232    INFO: GAME: Sample Rate:  30000.000000
15:01:09.448 T:140735305183232    INFO: GAME: Region:       NTSC
15:01:09.448 T:140735305183232    INFO: GAME: ---------------------------------------
15:01:09.448 T:140735305183232   DEBUG: GAME: Correcting audio and video by 1.066667 to avoid resampling
15:01:09.448 T:140735305183232   DEBUG: GAME: Audio sample rate normalized to 32000
15:01:09.448 T:140735305183232   DEBUG: GAME: Video frame rate scaled to 64.000000
15:01:09.449 T:140735305183232    INFO: GAME: In-game saves (save ram) loaded from special://masterprofile/Savestates/InGameSaves/game.libretro.2048.sav
15:01:09.449 T:140735305183232   DEBUG: GAME: No in-game saves (rtc) to load
...
15:01:12.784 T:140735305183232   DEBUG: RetroPlayer[PLAYER]: Closing file
15:01:12.784 T:140735305183232   DEBUG: Saving savestate to game.libretro.sav
15:01:12.784 T:140735305183232   DEBUG: RetroPlayer[SAVE]: Saved state to game.libretro.sav
15:01:12.784 T:123145305063424   DEBUG: Thread GameLoop 123145305063424 terminating
15:01:12.785 T:140735305183232    INFO: GAME: In-game saves (save ram) written to special://masterprofile/Savestates/InGameSaves/game.libretro.2048.sav
15:01:12.785 T:140735305183232   DEBUG: GAME: No in-game saves (rtc) to save
15:01:12.785 T:140735305183232   DEBUG: AddOnLog: 2048: Settings port "1" (libretro port 0) to controller "" (libretro device ID 0)
15:01:12.786 T:140735305183232   DEBUG: SECTION:UnloadDll(/Applications/Kodi_Retroplayer.app/Contents/Resources/Kodi/addons/game.libretro/game.libretro.1.0.36.dylib)
15:01:12.786 T:140735305183232    INFO: ADDON: Dll Destroyed - 2048

Other game.libretro addons that do this:
Mr. Boom
fMSX
ScummVM

README add link to build dependencies

What about adding a link to KODI build dependencies in the README ?

It would be useful to non experienced programmer like me. Yes, I tried to compile this fork of kodi, without downloading the dependencies ๐Ÿ˜“


However I'll write what I did to get a successful run of ./configure
on Arch Linux, maybe it would be useful for someone:

sudo pacman -Syu
sudo pacman -Sy swig boost nasm yasm gperf zip

./configure PYTHON_VERSION=2
# need to specify the Python version, otherwise this error will appear:
#    TypeError: unorderable types: str() >= int()

[Enhancement] Symlink for game.libretro addon resources/system folders

Bug report

Describe the bug

Here is a clear and concise description of what the problem is:

Every game.libretro addon has an individual resources/system folder (if required)

Expected Behavior

Here is a clear and concise description of what was expected to happen:

Not expected, but proposed behavior is to have a Kodi game setting for a 'common' folder, in addition to the individual game.libretro folders. Retroarch has a common system folder, and that makes configuration much easier for the user.

Actual Behavior

Each game.libretro addon generates and uses unique folders.

Possible Fix

Update Kodi to allow optional Game setting for a 'common' system folder

note: Once the issue is made we require you to update it with new information or Kodi versions should that be required.
Team Kodi will consider your problem report however, we will not make any promises the problem will be solved.

Retroplayer Stretch Mode on Raspberry Pi

Bug report

Describe the bug

Here is a clear and concise description of what the problem is:

There are a few reports from RPi users that changing the 'Stretch Mode' (Aspect Ratio) when using retroplayer can lead to an overall aspect ratio setting in Kodi that causes most everything to be offscreen. After this setting is applied, because everything is offscreen, the user can't reset the mode to something that works.
Reference:
zach-morris/plugin.program.iagl#234
https://forum.kodi.tv/showthread.php?tid=332966&pid=3108738#pid3108738

Expected Behavior

Here is a clear and concise description of what was expected to happen:

The stretch modes presented when using Retroplayer on RPi are modes that would support everything remaining on screen.

Actual Behavior

The stretch mode can cause the entire display in Kodi to be wonky.

Possible Fix

Unsure, but likely hide unsupported modes, or the modes are actually being set incorrectly on RPi.

To Reproduce

Steps to reproduce the behavior:

  1. Load up LE on an RPi
  2. Start a game
  3. Change stretch mode

Debuglog

The debuglog can be found here:
Not available, only reporting this for other users. I unfortunately do not have an RPi to test on (they're impossible to get right now :-( )

Screenshots

Here are some links or screenshots to help explain the problem:

See screenshots in this post:
https://forum.kodi.tv/showthread.php?tid=332966&pid=3108710#pid3108710

Additional context or screenshots (if appropriate)

Here is some additional context or explanation that might help:

Your Environment

Used Operating system:

  • Android

  • iOS

  • tvOS

  • Linux

  • OSX

  • Windows

  • Windows UWP

  • Operating system version/name:

  • Kodi version: Kodi V19, LibreElec on an RPi

note: Once the issue is made we require you to update it with new information or Kodi versions should that be required.
Team Kodi will consider your problem report however, we will not make any promises the problem will be solved.

[linux] Binary addons loading from wrong directory

Addons built in linux using make -C tools/depends/target/binary-addons PREFIX=$HOME/kodi are not loaded properly. I have only tested game.libretro.nestopia and game.libretro.2048, but they both look for the shared object file in the wrong directory.

Here are the relevant lines from running make -C tools/depends/target/binary-addons PREFIX=$HOME/kodi ADDONS="game.libretro.nestopia"

Install the project...
-- Install configuration: "Release"
-- Installing: /home/anthony/kodi/lib/kodi/addons/game.libretro.nestopia/game.libretro.nestopia.so
-- Installing: /home/anthony/kodi/share/kodi/addons/game.libretro.nestopia

Instead of looking into the /lib folder, the system attempts to load the library from the /share folder, as seen in $HOME/.kodi/temp/kodi.log

13:32:21 T:140160131368896   DEBUG: SECTION:LoadDLL(/home/anthony/kodi/lib/kodi/addons/game.libretro/game.libretro.so)
13:32:21 T:140160131368896   DEBUG: Loading: /home/anthony/kodi/lib/kodi/addons/game.libretro/game.libretro.so
13:32:21 T:140160131368896   ERROR: AddOnLog: NES (Nestopia): Unable to load /home/anthony/kodi/share/kodi/addons/game.libretro.nestopia/game.libretro.nestopia.so: cannot open shared object file: No such file or directory
13:32:21 T:140160131368896   ERROR: AddOnLog: NES (Nestopia): Failed to load /home/anthony/kodi/share/kodi/addons/game.libretro.nestopia/game.libretro.nestopia.so
13:32:21 T:140160131368896   ERROR: ADDON: Dll NES (Nestopia) - Client returned bad status (6) from Create and is not usable

This can be fixed by manually copying over the shared object from the /lib folder into the /share folder.

build all add-ons of a single type

@wsnipex, @Montellese, @notspiff: Is there any way to build all game add-ons in one command? right now my build command looks like rm .installed-macosx10.10_x86_64-target ; make ADDONS="peripheral.joystick game.libretro game.libretro.2048 game.libretro.beetle-bsnes game.libretro.beetle-pce-fast game.libretro.bnes game.libretro.dosbox game.libretro.fceumm game.libretro.genplus game.libretro.mupen64plus game.libretro.nestopia game.libretro.quicknes game.libretro.yabause"

Reinforcement Learning Bots

Introduction

Here, I introduce the Emulation Equation, a game-theoretic equation for emulation.

The equation represents all emulation, allows for powerful features, and all gameplay (human or otherwise) becomes data for training an artificially-intelligent game-playing agent.

For demonstration purposes, I've split the explanation into two theories:

  • The Special Theory of Emulation explains the fundamentals, and presents a simplified emulation equation. Using this, all emulation and many powerful features are possible.

  • The General Theory of Emulation uses the same fundamentals, and presents an extended emulation equation. Using this, all gameplay (human or otherwise) becomes data for training a reinforcement learner.

For the physics nerds, this is analogous to how Einstein introduced relativity:

  • In 1905, the Special Theory of Relativity explained moving bodies without gravity
  • In 1915, the General Theory of Relativity explained moving bodies in the presence of gravity

Background

Reinforcement learning is popular in game-playing AI because the reward signal is often sparse (not evident every frame) and depends on actions taken much earlier in the game.

The Q-learning algorithm is well-suited for teaching reinforcement learners how to play a video game because it does not require a model of the environment, which would be difficult to create for even the most basic computing machine.

Recall the algorithm from Q-learning:

Q-learning

Understanding that is out of the scope of this documentation. Just know that it learns over "emulation equations", which describe a series of frames in the discrete time domain.

Here I present two theories of emulation. The Special Theory of Emulation is the smallest equation needed for emulation. The General Theory of Emulation expands on this equation, allowing it to be used for Q-learning.

Special Theory of Emulation

The Special Theory of Emulation presents the smallest equation (the emulation equation) needed to represent all emulation.

Emulation variables

Game-theoretic emulation uses two variables:

State: S

  • State consists of video, audio, and memory regions (RAM, SRAM, Real-time clock).

Action: A

  • Action is the combined state of all input devices.

Time series

Emulation occurs at discrete time steps, so every time step has its own instance of these variables:

S == S_t
A == A_t

The emulation history is therefore a time series of tuples containing these two variables:

(S0, A0, S1, A1, ...)

Emulation model

Time steps occur by applying a set of functions to the emulation variables:

PlayFrame()

  • The PlayFrame() function takes the previous state, along with the most recent action, and produces a new state

GetInput()

  • The GetInput() function takes the previous action, along with the most recent state, and produces a new action

Emulation equation

The emulation equation is a time series model consisting of the initial conditions, as well as the model used for each time step.

The initial condition of all variables is the empty set:

S_0 = 0
A_0 = 0

The variables then evolve by applying the functions in sequence:

S_t+1 = PlayFrame(S_t, A_t)
A_t+1 = GetInput(S_t+1, A_t)

Summary

The emulation equation describes something fundamental in every emulator; play a frame, get input, repeat.

Interestingly, this fundamental concept was not a priori. It emerged as a model from solving an algorithm.

Surprising facts also appear. A0 is empty; the first frame is played with all buttons unpressed. Upon deeper inspection, this results because Q-learners get no value from an Action without a prior State observation.

Next, we present the General Theory of Emulation, which expands on these fundamentals to include two new concepts needed in the Q-learning algorithm.

The General Theory of Emulation

The general theory of emulation extends the emulation equation so that it can be used for Q-learning.

Note: I also wanted to choose strategies for my Q-learners, such as "walk up" or "reach level 2". I extended Q-learning to depend on a Policy variable in the time series. When the strategy is the identity function (no strategy), this extended learning algorithm decays to Q-learning.

Emulation variables

Reinforcement learning adds two variables:

Reward: R

  • Reward is used to train the function approximator that infers an action from the observed state. The reward can come from sniffing RAM, such as the achievements at http://retroachievements.org, or reading a value from video memory using OCR.

Policy: pi

  • Policy is used by the agent to choose the next move. The goal of reinforcement learning is to choose the policy that maximizes the reward.

Time series

Emulation occurs at discrete time steps, so every time step has its own instance of these variables:

S == S_t
R == R_t
pi == pi_t
A == A_t

The emulation history is therefore a time series of tuples containing these four variables:

(S0, R0, ฯ€0, A0, S1, R1, ฯ€1, A1, ...)

Emulation model

Reinforcement learning also needs two more functions:

GetReward()

  • The GetReward() function takes the previous reward, along with the most recent values of the other variables, and produces a new reward

Strategize()

  • The Strategize() function takes the previous policy, along with the most recent values of the other variables, and produces a new policy

Emulation equation

The emulation equation is a time series model consisting of the initial conditions, as well as the model used for each time step.

The initial condition of all variables is the empty set:

S_0 = 0
R_0 = 0
pi_0 = 0
A_0 = 0

The variables then evolve by applying the functions in sequence:

S_t+1 = PlayFrame(S_t, R_t, pi_t, A_t)
R_t+1 = GetReward(S_t+1, R_t, pi_t, A_t)
pi_t+1 = Strategize(S_t+1, R_t+1, pi_t, A_t)
A_t+1 = GetInput(S_t+1, R_t+1, pi_t+1, A_t)

Generic USB controller and Logitech Precision controller not working

Bug report

Describe the bug

I have a Nvidia Shield (the older one not the new) running SW9.1.1 and I have been trying to set up some joysticks to work with the retroplayer. I was not really able to make it work.ย I came across this thread on kodi forum: https://forum.kodi.tv/showthread.php?tid=373412 while searching for solution.

The games works with the Shield Controller if that is the only one connected (apart from the virtual-search and the shiled-ask-remote). But as soon as I attach one of the USB joysticks everything stops working...

All the joysticks work solely as kodi remote controller (i.e. any button press is an enter). In the players view I can see the following:
20231026_230040
20231026_230314

This is the only constellation that works
20231026_233958

I think if I was able to change the controller assignment to the ports it could be a solution, as when the Shield Controller works it is assigned to Port 1, but any other joysitck is assigned to none.ย 

Expected Behavior

I expect controllers to work

Actual Behavior

Joysticks are not recognised and only act as general kodi remote

Debuglog

The debuglog can be found here:
logs: https://paste.kodi.tv/ubicejaquf.kodi

Your Environment

Used Operating system:

  • Android

  • iOS

  • tvOS

  • Linux

  • OSX

  • Windows

  • Windows UWP

  • Operating system version/name: 9.1.1 Shield Experience

  • Kodi version: kodi-20231024-ef080027-retroplayer-21beta1-arm64-v8a.apk

note: Once the issue is made we require you to update it with new information or Kodi versions should that be required.
Team Kodi will consider your problem report however, we will not make any promises the problem will be solved.

Ubuntu ppa?

Does one exist? I am using 16.04 (Update 18.04)

Retroplayer 21 Rock Pi 4 Plus Storage Partion problem in Image

Bug report

Describe the bug

Here is a clear and concise description of what the problem is:

Images where problem occurs:
LibreELEC-RK3399.arm-12.0-retroplayer-20231024-45dbbcd3-rock-pi-4-plus.img.gz
LibreELEC-RK3399.arm-12.0-retroplayer-20231210-61dc79dc-rock-pi-4-plus.img.gz
After initial power on with resizing of partitions, receive the following error:
*** Error in mount_storage: mount_common: Could not mount UUID=5a7f8cd4-ed2b-4edd-b6a5-3bef0c8801c4 ***

Starting debugging shell for boot step: mount_storage... type exit to quit

Image LibreELEC-RK3399.arm-11.0-retroplayer-20231205-178d04a4-rock-pi-4-plus.img.gz works properly.

Expected Behavior

Here is a clear and concise description of what was expected to happen:

Expect the Rock Pi 4 plus to boot into Kodi

Actual Behavior

Receive error:
*** Error in mount_storage: mount_common: Could not mount UUID=5a7f8cd4-ed2b-4edd-b6a5-3bef0c8801c4 ***

Starting debugging shell for boot step: mount_storage... type exit to quit

Possible Fix

To Reproduce

Steps to reproduce the behavior:

  1. Download LibreELEC-RK3399.arm-12.0-retroplayer-20231210-61dc79dc-rock-pi-4-plus.img.gz
  2. Extract Image
  3. Use USB Image Writer in Linux Mint Mate 21.2 Victoria to burn image to 64gb MicroSD card that works with other images.
  4. Place SD card in unit and power on.

Debuglog

The debuglog can be found here:

Screenshots

Here are some links or screenshots to help explain the problem:

Additional context or screenshots (if appropriate)

Here is some additional context or explanation that might help:

Your Environment

Used Operating system:

  • Android

  • iOS

  • tvOS

  • Linux

  • macOS

  • Windows

  • Windows UWP

  • Operating system version/name:

  • Kodi version:

note: Once the issue is made we require you to update it with new information or Kodi versions should that be required.
Team Kodi will consider your problem report however, we will not make any promises the problem will be solved.

RetroPlayer Leia 18.0 issues

Target: v18.0

Controller bugs

Bugs for Leia

Bugs for final Krypton Release

Target: v17.0

Target: v17.1

Target: v17.6

  • Incompatible with Android TV Remote Control (report)
  • Erratic input with Xbox 360 controller on Android

Bugs from interim fixes xbmc#10630

Input

  • Joysticks not being detected on android startup (xbmc#10689)
  • Restart needed to enable/disable peripheral add-ons (xbmc#10690, xbmc#10734)
  • Missing lock in CAddonButtonMap (xbmc#10691)
  • Broken Shield controller if add-on isn't present (xbmc#10695)
  • Problems with accelerometers (report and linux solution) (xbmc#10725, xbmc#10910)
  • PS4 controllers skip because button presses are sent when trigger is partially pressed (xbmc#10910)
  • Deadlock when updating peripheral add-ons (xbmc#10726)
  • Button map doesn't refresh when the user hits reset (xbmc#10735)
  • Possible crash when controllers are unplugged (xbmc#10740)
  • Incompatible with Unified Remote server (report, support thread)
  • Constant joystick discovery on Windows (report, peripheral.joystick#62)
  • 100% cpu when scanning for joystick events after 6 days (xbmc#10921)
  • User should be able to open controller dialog with controllers unplugged (xbmc#10923)
  • Use 300ms rumble on weak motor for notifications (xbmc#10929)
  • Incompatible with xpadder (report)
  • All controllers vibrate whenever a new one is plugged in (report)
  • Launching a game by holding A causes all hell to break loose (report)
  • Missing a mod="longpress" parameter for joystick.xml keymap (xbmc#12366)
  • If Kodi crashes, the controller could vibrate without stopping (report)
  • No navigation sounds for controllers (report)
  • Mapping axis to Select sends one command per frame, locking the GUI (sample buttonmap)

UX

Bugs from initial controller PR xbmc#8807

Blocking issues

  • Compilation on all platforms (RPi needs an #ifdef HAS_LIBUDEV around the touchscreen fix)
  • Android support (thread) (thanks montellese)
  • The controller window's "get more" button fails silently (report)
  • Breaks some EventServer clients (Apple IR Remotes, some Yatse buttons, etc) (report)
  • Erratic button presses while mapping buttons (report)
  • Empty keyboard settings breaks GUI (report) (thanks montelllese)
  • Missing scroll bars in controller dialog (thanks hitcher)
  • Broken volume commands (report)
  • Open separate PR for [guilib] fix (done: PR 8932)
  • Open separate PR for [addon] changes (thanks montellese)
  • Broken controller input on RPi and some linux boxes (report)
  • Erratic controller behavior in GUI (report)
  • Controller dialog skips down and left for some controllers (report)
  • OK dialog when peripheral.joystick is not focused on opening (report) (thanks Montellese)
  • Move peripheral event processing to another thread to fix hangs (report)
  • Notification for add-on updates clears the controller profiles list (thanks montellese)
  • Labels disappear on first install (report) (thanks montellese)
  • Canceling the prompt doesn't absorb keyboard input
  • Kodi doesn't fail gracefully when peripheral.joystick isn't found (report) (thanks montellese)
  • Possible deadlock on shutdown (report) (thanks montellese)

Non-blocking issues

  • iOS Game Controller Framework support (thread)
  • Broken touchscreen on RPi (report)
  • Controller button doesn't stay focused while user is mapping buttons (report)
  • Move focusing logic to CGUIViewControl (report) (skinner advice please?)
  • Incompatible with Universal Remote server (report)
  • Incompatible with iMON receiver (report)
  • Problems with accelerometers (report and linux solution)
  • Controller input not ignored when Kodi is minimized (report 1, report 2)
  • CPeripheralAddon requires refactoring (report)
  • Add "Help" button
  • Refocus controller when user ends mapping
  • The "Reset" button resets all controllers instead of asking for a specific one
  • Anomalous trigger detector misidentifies axes that are fully pressed when controller is connected
  • Erroneous drivers with no joystick name can't be mapped

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.