Kids & Kiosk Mode, coming back [testers needed!]
-
@srfrboybob & @dvf00
Could you try running EmulationStation with the debug flag, and see what the logged input values are when you enter the code?So, exit Es with F4, and then enter
emulationstation --debug
, the logging should end up in~/.emulationstation/es_log.txt
I suspect that the controller you are using is registering the dpad as a hat-type input, which are now intentionally ignored.
If that is the case, I'll need to reconsider the fix for xbox360 controllers. -
@zigurana huh. I thought we were just ignoring any inputs that were not associated with any ES-recognized/mapped input event? Was that not good enough as an approach?
I imagine excluding all hat inputs will not be appropriate for different types of controllers.
You may, though, consider ignoring any event that's not mapped to the inputs you can accept for the unlock pattern altogether. I believe it's everything except the inputs assigned to the analog joysticks, l3/r3, l2/r2, correct? So pretty much a SNES pad button layout?
-
@pjft yes, that was the place at first, but it did not work for the Xbox 360 controller that darknoir was using, so I changed it to simply ignore all hat inputs, assuming (incorrectly) that the dpad would always be axes.
Back to the drawing board... -
@zigurana well, it's too early to jump the gun. Both of us are just assuming that some controllers map the dpad to hats. Might be something different.
-
So my understanding is, there is a new kids mode you can install from Retropie? One that matches the new emulationstation changes? If so awesome! I've been wanting to do alot more controlled build for my friends who have kids and stuff that they don't want mucking around with options :)
-
@zigurana I ran debug mode as requested. Here is a quick photo (sorry all I was able to provide at this time). The 8bitdo does use “hat” for dpad inputs as suspected.
Sorry if the image is rotated funny. My phone uploads have done this in the past
-
Hi Kids... and kiosks....
Here it is my log:
lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 up, isMappedTo= up, , value=1 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 down, isMappedTo= down, , value=4 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0
As srfrboybob said, seems that 8bitdo interprets d-pad as hat...
-
@Srfrboybob and @dvf00 , thanks for the info, that is very helpful.
ok, so now we have the following situation to work with:
XBox360 controllers intersperses the dpad inputs with hat inputs of varying value:
lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Hat 0 up, isMappedTo= , value=1 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Button 15, isMappedTo= up, , value=0 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Hat 0 neutral?, isMappedTo= , value=0 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Button 16, isMappedTo= down, , value=1 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Hat 0 down, isMappedTo= , value=4 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Button 16, isMappedTo= down, , value=0 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Hat 0 neutral?, isMappedTo= , value=0 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Button 16, isMappedTo= down, , value=1 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Hat 0 down, isMappedTo= , value=4 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Button 16, isMappedTo= down, , value=0 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Hat 0 neutral?, isMappedTo= , value=0 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Button 13, isMappedTo= left, , value=1 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Hat 0 left, isMappedTo= , value=8 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Button 13, isMappedTo= left, , value=0 lvl3: UIModeController::logInput( Xbox 360 Wireless Receiver ):Hat 0 neutral?, isMappedTo= , value=0
8Bitdo NES30 pro controllers report all dpad actions as hat movements, also with varying values, but now alternated with a
neutral?
state, value = 0:lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 up, isMappedTo= up, , value=1 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 down, isMappedTo= down, , value=4 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0
... and finally the observation that my initial implementation of finding inputs that have no
isMappedTo
value did not work.Looking at this, I think that filtering out the values that have no mappedTo (undefined keypresses) should be the best way to cope with this. The question is how.
I'll try to replicate the issue with another controller, to see how to catch those undefined inputs. -
@darknior @dvf00 @Srfrboybob , @anyone with a fancycontroller
I've rewritten the logic for input validation (again), I'd like both users with a x360 and an 8-bitdo controllers to give this a try.
Could you maybe try it out?repo: zigurana\EmulationStation
branch: UIModeInputHandlingPlease run
emulationstation --debug
to get all the logging.Thanks!
-
I've just tested EmulationStation from your repo (UIModeInputHandling branch) and I get the same problem: doesn't work.
Here the output of logging:lvl3: SystemView::getViewElements() lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 up, isMappedTo= up, , value=1 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 up, isMappedTo= up, , value=1 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 down, isMappedTo= down, , value=4 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 down, isMappedTo= down, , value=4 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 left, isMappedTo= left, , value=8 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 right, isMappedTo= right, , value=2 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 left, isMappedTo= left, , value=8 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 right, isMappedTo= right, , value=2 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 0, isMappedTo= b, , value=1 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 0, isMappedTo= b, , value=0 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 1, isMappedTo= a, , value=1 lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 1, isMappedTo= a, , value=0
I've made a script for download and compile from your own fork using the method on this post: how to compile custom emulation-station from retropie . It looks like this, and seems to work:
#!/usr/bin/env bash rp_module_id="emulationstation-custom" rp_module_desc="A modified version of EmulationStation." rp_module_section="core" function depends_emulationstation-custom() { depends_emulationstation } function sources_emulationstation-custom() { sources_emulationstation "https://github.com/zigurana/EmulationStation" "UIModeInputHandling" } function build_emulationstation-custom() { build_emulationstation } function install_emulationstation-custom() { install_emulationstation } function configure_emulationstation-custom() { configure_emulationstation } function gui_emulationstation-custom() { gui_emulationstation }
So I guess I did it right, when I press start I see the same version as official retropie fork 2.7.3RP so I'm not pretty sure I have your new logic for controller handling....
-
@dvf00 My apologies, I screwed up.
Somehow I only created a new branch, but my new commit was not pushed to it.
I've just updated it, should be good now.Your script should work, nice tinkering btw! There is an easier alternative though, by using Meleu's testing scripts, which can be found here. It will allow you to create a list of branches from which you can install and test, and also to revert easily to stock ES. Do give it a try.
Again sorry for wasting your time.
-
No worries Zigurana...
Ohh yes... downloaded and running, that script is the way! I didn't know it... :-)
Compiling now ES... let me try -
working with 8Bitdo! :-)
lvl3: SystemView::getViewElements() lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 0, isMappedTo= b, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 right, isMappedTo= right, , value=2, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 11, isMappedTo= start, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 up, isMappedTo= up, , value=1, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 up, isMappedTo= up, , value=1, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 down, isMappedTo= down, , value=4, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 down, isMappedTo= down, , value=4, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 left, isMappedTo= left, , value=8, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 right, isMappedTo= right, , value=2, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 left, isMappedTo= left, , value=8, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 right, isMappedTo= right, , value=2, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Hat 0 neutral?, isMappedTo= down, left, right, up, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 1, isMappedTo= a, , value=1, isValidInput: yes lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 1, isMappedTo= a, , value=0, isValidInput: no lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 0, isMappedTo= b, , value=1, isValidInput: yes lvl3: UIModeController::listen(): Passkey sequence completed, switching UIMode to full lvl3: Settings::saveFile() : Saving Settings to file. lvl3: SystemView::getViewElements() lvl3: UIModeController::logInput( 8Bitdo NES30 Pro ):Button 0, isMappedTo= b, , value=0, isValidInput: no lvl2: EmulationStation cleanly shutting down. ´´´
-
@dvf00 Yes already try 8bitDo and report it works fine too.
I don't know where to report this :
With these last ES versions, i have some aleatory crash. Some time during the Video Screensaver ... but i don't know when it will come.
Some time it loop on one video, it reading it at infinity ... i can't move out.
Some time it crash to linux, and i'm locked too, the keyboard don't respond.
But i always have the SSH access.My last crash screen :
-
@darknior
You mean to say you tried the x360 controller? -
@zigurana I don't try it again, but last time i try it it works fine.
I will try your last beta to see.This crash is an other problem.
-
@darknior yes, please try it, I am hoping that it will not regress your issue, but there is only one way to be sure ;-).
Regarding your crashes, I suspect it has nothing to do with the topic of this thread, but likely something with video playback. So I'd suggest to start a new thread on this, as it seems a serious issue.
-
I can say I've never seen such a crash dump in EmulationStation, which may point to faulty media (SD card or USB drive). I imagine that if you try it with your previously working binary you will run into the same thing.
Still, some more investigation can only help: is it the same video all the time, etc?
Thanks.
-
@Zigurana I have try your last build, emulationstation-dev, to try my x360 controller game-pad. And :
- x360 gamepad not working
- 8bitDo NES not working
- 8bitDo NES PRO not working
- 8bitDo SNES is the only one working fine for me.
-
@darknior what in the name of all that's retro?!
To be sure: this is on the zigurana / UIModeController branch?
Would you have the logging from each of those controllers available?
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.