Kodi Community Forum
RetroPlayer Test Builds (updated for Nexus) - Printable Version

+- Kodi Community Forum (https://forum.kodi.tv)
+-- Forum: Support (https://forum.kodi.tv/forumdisplay.php?fid=33)
+--- Forum: Game support (https://forum.kodi.tv/forumdisplay.php?fid=292)
+--- Thread: RetroPlayer Test Builds (updated for Nexus) (/showthread.php?tid=173361)



RE: RetroPlayer Test Builds (updated for Krypton) - garbear - 2017-05-13

(2016-02-12, 21:13)Eldorado Wrote: Running with latest build on Windows, my htpc has an iMON receiver for my remote control

With the RetroPlayer builds I get a constant iMON device found/added, then a second later it's deleted

This cycle repeats indefinitely causing brief freezes each time, I'm not able to use the remote control at all

I do have an X360 wireless receiver attached but at the time of the log I had not turned on any of the remotes

http://xbmclogs.com/pktnyiwfq

@Eldorado the iMON fix is finally in. Visit Settings -> System -> Input -> Driver settings -> Joystick support to disable the DirectInput driver and see if it fixes things!


RE: RetroPlayer Test Builds (updated for Krypton) - Eldorado - 2017-05-15

(2017-05-13, 18:17)garbear Wrote:
(2016-02-12, 21:13)Eldorado Wrote: Running with latest build on Windows, my htpc has an iMON receiver for my remote control

With the RetroPlayer builds I get a constant iMON device found/added, then a second later it's deleted

This cycle repeats indefinitely causing brief freezes each time, I'm not able to use the remote control at all

I do have an X360 wireless receiver attached but at the time of the log I had not turned on any of the remotes

http://xbmclogs.com/pktnyiwfq

@Eldorado the iMON fix is finally in. Visit Settings -> System -> Input -> Driver settings -> Joystick support to disable the DirectInput driver and see if it fixes things!

Good stuff thanks! I will test ASAP and let you know

I was secretly afraid that it was going to get forgotten, so very appreciative that you followed thru!


RE: RetroPlayer Test Builds (updated for Krypton) - garbear - 2017-05-15

not forgotten, just a big pain, the patch came in at over 1000 lines Wink when you consider the ratio of effort required to users affected, hopefully you'll forgive me for putting this at the bottom of my (very long) list.


RE: RetroPlayer Test Builds (updated for Krypton) - natethomas - 2017-05-16

It's starting to look like the 64bit version of Kodi for Windows is starting to get some traction. In other words, we're starting to offer it in nightlies. Paxxi said that for binary addons to work with 64bit Kodi, we'll need to recompile them for that purpose. So... the big question, any idea how difficult it would be to recompile to cores to 64 bit?


RE: RetroPlayer Test Builds (updated for Krypton) - drevilz4l - 2017-05-23

Hey All. I just installed the latest LibreElec build, and I cannot figure out how to enable Retroplayer. I get into Kodi, and on the main menu I enter UP UP DOWN DOWN LEFT RIGHT LEFT RIGHT B A, and enable the game menu. I have installed Internet Rom Archive, but I'm kind of lost about how to get it to work. I have tried installing emulators from the games > emulators section of add ons, but I get a "Dependency of kodi.game version 1.0.29 could not be satisfied". Am I just completely missing a step. Thanks for any help you can provide.


RE: RetroPlayer Test Builds (updated for Krypton) - garbear - 2017-05-23

The binary add-on system is being majorly reworked and many add-ons are expected to break in the near future. Hang in there and we'll finish updating everything.


RE: RetroPlayer Test Builds (updated for Krypton) - garbear - 2017-05-29

New builds posted!

I've started discussing shader support with vel0cityX from here. We're thinking of redesigning the entire OSD for games to create an intuitive way to configure the shader pipeline. But in order to do that... you have to be able to open the OSD from within a game!

So new in this build is the ability to open the OSD from within a game by holding start/back/guide for 1 second. Also you can add a "holdtime" parameter to keys in joystick.xml.


Some questions:
  • Is it annoying that the OSD button still has an effect in the game?
  • Does holding any of these buttons conflict with any games?
  • Should you be able to "overload" a button, one with a holdtime and one without? e.g.:

Code:
<FullscreenGame>
    <joystick>
        <start>Pause</start>
        <start holdtime="1000">OSD</start>
    </joystick>
</FullscreenGame>




For reference, here's what the game OSD (ripped straight from the video OSD) looks like now:

Image


RE: RetroPlayer Test Builds (updated for Krypton) - MrTarantula - 2017-05-30

My opinions:

  1. Yes, it would be annoying if holding a button had an effect in-game. If I want to pause the game I will tap pause, then long-press to bring up the menu.
  2. None that I am aware of. I can't think of any console that would understand a long press of a face button. The only conflict I can think of is if there are any cores that register a long press as multiple quick presses, like a keyboard repeating characters. I imagine that libretro handles all input uniformly, so this might not be a real concern. You probably know the answer to that.
  3. So if I'm understanding it correctly right now, there is currently no overload? It's one or the other? I don't think there is a need for multiple overloads (different actions for 1000ms, 2000ms, etc.) but having a single overload would be ideal, so that pressing start pauses but a long press still pulls up the OSD. If, however, it is trivial to add functionality for multiple overloads, I won't say no to more features!



RE: RetroPlayer Test Builds (updated for Krypton) - garbear - 2017-05-31

(2017-05-30, 17:07)MrTarantula Wrote: Yes, it would be annoying if holding a button had an effect in-game. If I want to pause the game I will tap pause, then long-press to bring up the menu.

OK, but overloading a button (short press in-game, long press GUI action) is complicated. For example, you don't know it's a short press until the button is released before the long press timeout. So any overloaded button press will necessarily be delayed.

And there's another problem. Let's say the button has a 1000ms timeout, and you hold it for 500ms and then release.

Now, at 500ms, the button press is sent half a second late. But the button was already released. Because the game's sample rate isn't infinitesimal, the press will be missed. So to fix that, you have to emulate a press long enough for the game to detect it. But how long is long enough? If the button was held for 100ms, do you emulate a button press from 100ms to 200ms? If the button was held for 900ms, do you emulate a 900ms-long button press until 1800ms after the initial press?

So that's the challenge: if the button is held for less than 1000ms, when do we send a button press to the game? When do we send a release? What if the button is repressed before the release is sent?

(2017-05-30, 17:07)MrTarantula Wrote: None that I am aware of. I can't think of any console that would understand a long press of a face button. The only conflict I can think of is if there are any cores that register a long press as multiple quick presses, like a keyboard repeating characters. I imagine that libretro handles all input uniformly, so this might not be a real concern. You probably know the answer to that.

libretro handles all input uniformly, so this probably isn't a concern.

(2017-05-30, 17:07)MrTarantula Wrote: So if I'm understanding it correctly right now, there is currently no overload? It's one or the other? I don't think there is a need for multiple overloads (different actions for 1000ms, 2000ms, etc.) but having a single overload would be ideal, so that pressing start pauses but a long press still pulls up the OSD. If, however, it is trivial to add functionality for multiple overloads, I won't say no to more features!

Yes, a single overload would be much easier. My mind automatically went to the most generic, complex solution possible. Thanks for grounding me Smile


RE: RetroPlayer Test Builds (updated for Krypton) - karl_87 - 2017-05-31

Wouldn't a button combo such as Start + Select to bring up OSD be ok? that's how alot of other systems work. Then give the options in the menu for users to set there own e.g - Down + Select.


RE: RetroPlayer Test Builds (updated for Krypton) - garbear - 2017-05-31

(2017-05-31, 15:09)karl_87 Wrote: Wouldn't a button combo such as Start + Select to bring up OSD be ok? that's how alot of other systems work. Then give the options in the menu for users to set there own e.g - Down + Select.

What about controllers without a select button?

Image


RE: RetroPlayer Test Builds (updated for Krypton) - MrTarantula - 2017-05-31

(2017-05-31, 03:34)garbear Wrote: If the button was held for 100ms, do you emulate a button press from 100ms to 200ms? If the button was held for 900ms, do you emulate a 900ms-long button press until 1800ms after the initial press?

If it doesn't reach the threshold for longpress, then the duration shouldn't really matter. Just send a default button press, if such a thing exists. The shortest amount of time for libretro to register the press. I'd like to see someone try to press a button twice in 5ms.

(2017-05-31, 03:34)garbear Wrote: So that's the challenge: if the button is held for less than 1000ms, when do we send a button press to the game? When do we send a release? What if the button is repressed before the release is sent?

For the typical longpress buttons (Start, Select, Home, PS, XB) timing isn't that important to me. If the joystick API handles things like OnButtonDown and OnButtonUp, you could:
  1. Detect the pause button is currently being pressed and queue up the default action (prepare to emulate it but wait to execute)
  2. When button press passes the threshold for longpress, send the longpress action. I wouldn't even wait for OnButtonUp
  3. If threshold isn't reached, then send the default action when OnButtonUp is called. Like I said, length of the press shouldn't matter if threshold isn't reached



RE: RetroPlayer Test Builds (updated for Krypton) - Eldorado - 2017-05-31

(2017-05-31, 17:15)MrTarantula Wrote: [For the typical longpress buttons (Start, Select, Home, PS, XB) timing isn't that important to me. If the joystick API handles things like OnButtonDown and OnButtonUp, you could:
  1. Detect the pause button is currently being pressed and queue up the default action (prepare to emulate it but wait to execute)
  2. When button press passes the threshold for longpress, send the longpress action. I wouldn't even wait for OnButtonUp
  3. If threshold isn't reached, then send the default action when OnButtonUp is called. Like I said, length of the press shouldn't matter if threshold isn't reached

I agree with this, shouldn't have to wait for buttonup to trigger the event, I would expect as I'm holding the button that when the hold time has been hit that the event will trigger (osd menu opens) and I will then know it's ok to let go

If I let go early then it will do the default action for that button

It shouldn't be a trial & error thing where you hold it and hope it's long enough then let go and.. oh crap not long enough.. lets try again


RE: RetroPlayer Test Builds (updated for Krypton) - cmiller1 - 2017-05-31

I really like just using a separate IR remote (I use the Apple one) to bring up the OSD from a game... and for controlling the rest of Kodi. Failing that, the many phone apps that can control Kodi work great for bringing up the OSD too. I fear that this is adding loads of complication just so people can use one single controller...


RE: RetroPlayer Test Builds (updated for Krypton) - RockerC - 2017-06-01

FYI; RetroArch / Lakka uses "Select+X" on gamepads and "F1" on keyboard as default hotkeys combinations to bring up RGUI (RetroArch's equivalent to in-game OSD):

https://github.com/libretro/RetroArch/wiki/RGUI

EmulationStation / RetroPie uses the same "Select+X" combo on gamepads and "F1" as hotkey on keyboard for the same action to bring up its emulator in-game OSD:

https://github.com/RetroPie/RetroPie-Setup/wiki/First-Installation#controller-configurations

Quote:Hotkeys

Hotkeys enable you to press a combination of buttons to access functions such as saving, loading, and exiting emulators. The following chart shows the default hotkey combinations. By default, the hotkey is select so that means you hold down select while pressing another button to execute a command. Note that hotkeys are only specific to the retroarch/libretro based emulators.

Hotkeys Action
Select+Start = Exit
Select+Right Shoulder = Save
Select+Left Shoulder = Load
Select+Right = Input State Slot Increase
Select+Left = Input State Slot Decrease
Select+X = RGUI Menu
Select+B = Reset