Project Runahead for RetroPlayer
#1
Hey there, my name is Osama Salem, I am currently enrolled in my last year of Bachelor's at Cairo University in Egypt, studying Computer Engineering.
For GSOC 2020, I am interested in the project idea "4.9 Runahead for RetroPlayer".
I am completely new to Kodi, however, I spent the day building it on Windows and running it, getting familiar with the functionality...etc.
I'm asking what my next steps should be in order to:
1- Better understand the part of the code I'd be interfering with.
2- Better understand the project itself (the algorithm itself and any background knowledge for emulation in general).
3- Be more familiar with the typical process of how work is done in the Kodi project (by making some PRs possibly).
4- Verify that the project is within my capabilities.
This year would be my last chance to participate in GSOC and it's a chance I'm greatly excited for and don't want to miss.
Thank you.
Reply
#2
(2020-02-28, 21:10)Osama_Salem Wrote: Hey there, my name is Osama Salem, I am currently enrolled in my last year of Bachelor's at Cairo University in Egypt, studying Computer Engineering.
For GSOC 2020, I am interested in the project idea "4.9 Runahead for RetroPlayer".
I am completely new to Kodi, however, I spent the day building it on Windows and running it, getting familiar with the functionality...etc.
I'm asking what my next steps should be in order to:
1- Better understand the part of the code I'd be interfering with.
2- Better understand the project itself (the algorithm itself and any background knowledge for emulation in general).
3- Be more familiar with the typical process of how work is done in the Kodi project (by making some PRs possibly).
4- Verify that the project is within my capabilities.
This year would be my last chance to participate in GSOC and it's a chance I'm greatly excited for and don't want to miss.
Thank you.

Hi Osama,

To best understand the code, I recommend running it. Try playing some ROMs (you might need to compile game add-ons). Identify a feature and try to find the corresponding code (the "code search" problem). In the source tree, code for RetroPlayer is in xbmc/cores/RetroPlayer/ and xbmc/games/. A lot of the code in these folders was written by one author, so it ended up cohesive and relatively easy to read.

For RetroArch's runahead, you can find more information here: https://docs.libretro.com/guides/runahead/ and https://www.libretro.com/index.php/retro...ad-method/

It would be acceptable to implement runahead exactly as they did. I also created an "emulation equation" (linked from another project on the wiki) that is designed to allow runahead for almost no effort - emulation is a time series, and runahead is simply modifying a state S at a previous time t, then re-running the timesteps. This is more advanced in some ways, but I might have an implementation ready by the time GSoC starts. In 2017 I had a *lot* of free time and created the entire in-game UI to host vel0city's project: https://github.com/xbmc/xbmc/pull/12367

In my experience, the hardest part is the size of the codebase. Students aren't used to traversing a million lines of code. Capabilities are needed, to be sure, but a large part is the determination to spend long periods of time simply reading and following code.
Reply
#3
(2020-02-28, 22:33)garbear Wrote:
(2020-02-28, 21:10)Osama_Salem Wrote: Hey there, my name is Osama Salem, I am currently enrolled in my last year of Bachelor's at Cairo University in Egypt, studying Computer Engineering.
For GSOC 2020, I am interested in the project idea "4.9 Runahead for RetroPlayer".
I am completely new to Kodi, however, I spent the day building it on Windows and running it, getting familiar with the functionality...etc.
I'm asking what my next steps should be in order to:
1- Better understand the part of the code I'd be interfering with.
2- Better understand the project itself (the algorithm itself and any background knowledge for emulation in general).
3- Be more familiar with the typical process of how work is done in the Kodi project (by making some PRs possibly).
4- Verify that the project is within my capabilities.
This year would be my last chance to participate in GSOC and it's a chance I'm greatly excited for and don't want to miss.
Thank you.

Hi Osama,

To best understand the code, I recommend running it. Try playing some ROMs (you might need to compile game add-ons). Identify a feature and try to find the corresponding code (the "code search" problem). In the source tree, code for RetroPlayer is in xbmc/cores/RetroPlayer/ and xbmc/games/. A lot of the code in these folders was written by one author, so it ended up cohesive and relatively easy to read.

For RetroArch's runahead, you can find more information here: https://docs.libretro.com/guides/runahead/ and https://www.libretro.com/index.php/retro...ad-method/

It would be acceptable to implement runahead exactly as they did. I also created an "emulation equation" (linked from another project on the wiki) that is designed to allow runahead for almost no effort - emulation is a time series, and runahead is simply modifying a state S at a previous time t, then re-running the timesteps. This is more advanced in some ways, but I might have an implementation ready by the time GSoC starts. In 2017 I had a *lot* of free time and created the entire in-game UI to host vel0city's project: https://github.com/xbmc/xbmc/pull/12367

In my experience, the hardest part is the size of the codebase. Students aren't used to traversing a million lines of code. Capabilities are needed, to be sure, but a large part is the determination to spend long periods of time simply reading and following code. 

First of all, thanks for taking the time to write this very constructive reply.
I will follow your advice, starting off by just casually playing some games. Your words have actually reassured me when it comes to the technical competence of taking on a project.
I have one more question for the time being, I checked last year's statistics, and the Kodi organization seems to have had only 1 project. Was this an imposed limit by GSOC or was it due to the lack of proposals? In other words, is there a decent chance my project doesn't kick off even if I submit a good proposal?
Reply
#4
Last year we had a dearth of mentors. I was able to donate my time to the program, but we didn't have any other feasible student-mentor pairs so we only asked Google for a single slot. As it is, we're still mentor-limited, but there's been a lot more involvement in the team with gsoc thus far this year, so if enough quality student projects present themselves, team kodi may be able to scale to handle several participants.
Reply

Logout Mark Read Team Forum Stats Members Help
Project Runahead for RetroPlayer0