I Edited /etc/emulationstation and replaced the code with this..
#!/bin/bash
es_bin="/opt/retropie/supplementary/emulationstation/emulationstation"
if [[ $(id -u) -eq 0 ]]; then
echo "emulationstation should not be run as root. If you used 'sudo emulationstation' please run without sudo."
exit 1
fi
if [[ -n "$(pidof X)" ]]; then
echo "X is running. Please shut down X in order to mitigate problems with loosing keyboard input. For example, logout from LXDE."
exit 1
fi
key=""
x=0
echo "Waiting up to 60 seconds for Joypad 1"
while [ "$x" -lt 60 -a ! -e /dev/input/js0 ]; do
x=$((x+1))
sleep 1
done
if [ -e /dev/input/js0 ]
then
x=0
echo "Joypad 1 Enabled :) Waiting up to 10 seconds for Joypad 2"
while [ "$x" -lt 10 -a ! -e /dev/input/js1 ]; do
x=$((x+1))
sleep 1
done
if [ -e /dev/input/js1 ]
then
echo "Joypad 2 Enabled! Starting Emulationstation"
$es_bin "$@"
else
echo "Joypad 2 not found"
$es_bin "$@"
fi
else
echo "Joypad 1 not found within time limit; Aborting!"
fi
This makes retropie pause for up to 60 seconds for me to turn on my controller. If I don’t do it, it quits back to the bash prompt (if I don’t turn on a controller I probably don’t want to play games, I want to work on the config), if I do turn on a controller it waits up to a further 10 seconds for me to turn on a second controller, whether I turn a second controller on or not it will then start ES.
If I have finished playing with configs and just want to go into ES now, I can just type ‘exit’ and ES runs.
This could be improved to do something similar for 4 controllers and even make the “Turn on controller now” message a bit clearer. It comes up after the splash screen closes but isn’t clear from 10 feet away