garbear / xbmc

XBMC Main Repository
http://xbmc.org
Other
134 stars 53 forks source link

Fix typo in game.libretro.bsnes-mercury repo #41

Closed fortenbt closed 8 years ago

fortenbt commented 8 years ago

Picking off the low hanging fruit while learning the codebase...

garbear commented 8 years ago

thanks

garbear commented 8 years ago

@fortenbt what parts of the codebase are most confusing? I'm working on improving the documentation

fortenbt commented 8 years ago

The hardest part for me was getting an overall picture of how things fit in to the larger project.

Retroplayer question: I understand that OpenELEC is a Linux distro and Kodi is an application that runs on that. I understand what libretro is and RetroArch is the reference front-end of libretro. I understand retroplayer is a Kodi player core. Does retroplayer use RetroArch to provide a front-end to the emulators? Or is retroplayer its own front-end to libretro?

Binary Addon questions:

  1. I'm assuming binary addons are addons to Kodi; what can binary addons handle?
  2. Are there benefits to binary addons other than modularity/keeping code out of Kodi that doesn't necessarily belong?
  3. What are some examples?

I found this: http://forum.kodi.tv/showthread.php?tid=195552 where you provide a nice block diagram of some of the relevant pieces and APIs.

What I think would be great is to have a block diagram next to that that shows one possible example scenario.

e.g.

  1. A user hits 'enter' on the keyboard
  2. The keypress is handled by the "Input Devices" block (where is that code?), which uses what in the Hardware API to translate the input to ...?
  3. That is then passed via the Game API to, in the case of [some emulator core], the libretro wrapper API to translate it to the libretro API, which the emulator implements. Other addons don't implement libretro and work directly with Game API? I'm making stuff up at this point.
  4. Is the input also passed to the Game Client? What is a Game Client vs the libretro core?

So far for me, nothing about the codebase is that confusing because I'm currently working on understanding how everything is laid out. If I wanted to implement a feature or go debug something weird that's happening, I wouldn't know where to look because of the size of the project and abstraction across so many APIs.

That's not a bad thing, either; I'm sure you and others have put a lot of work and thought into the design, so right now I'm just trying to get a hang of where everything is and how it fits together.

I've been making notes on what I'm learning so that I can eventually provide a nice little introduction README for anyone who wants to start hacking on different pieces.

Thanks for the time you've put into responding and the help you've provided. I'm looking forward to hopefully being able to provide something to the project in the future.

garbear commented 8 years ago

Does retroplayer use RetroArch to provide a front-end to the emulators? Or is retroplayer its own front-end to libretro?

RetroPlayer is its own front-end to libretro. RetroPie uses Emulation Station to browse and RetroArch as a frontend. Ignition uses Node.js to browse and RetroArch as a frontend. There's a few other similar projects around.

Binary Addon questions:

  1. I'm assuming binary addons are addons to Kodi; what can binary addons handle?

Binary add-ons were created so that add-ons could be written in C++. Check out the includes directory for the C interfaces.

  1. Are there benefits to binary addons other than modularity/keeping code out of Kodi that doesn't necessarily belong?

Many. Third-party providers can author a proprietary extension (like Netflix or Spotify) without source. Kodi can be included in the Play store without patent-encumbered code. Kodi can be shipiped without license-encumbered code (many emulators are non-commercial). Instead, these add-ons can be installed separately from a web repo.

  1. What are some examples?

I found this: http://forum.kodi.tv/showthread.php?tid=195552 where you provide a nice block diagram of some of the relevant pieces and APIs. What I think would be great is to have a block diagram next to that that shows one possible example scenario.

Thanks for the advice

I've been making notes on what I'm learning so that I can eventually provide a nice little introduction README for anyone who wants to start hacking on different pieces.

Let me know when this is ready, I can fill in some of the missing details

Thanks for the time you've put into responding and the help you've provided. I'm looking forward to hopefully being able to provide something to the project in the future.

Projects of this scale are hard to tackle, but it's good experience and once you tackle Kodi you can navigate any large project. I actually pull a lot of code from Firefox, it's helpful being able to quickly locate the code I need.