1) Install Retropie raspberry pi 4 image on sd card, boot & expand filesystem and setup keys in emulation station then exit emulation station 2) Get dependencies and things we need later (we use sfml-dev from repo's not sfml-pi) sudo apt-get install build-essential cmake libflac-dev libogg-dev libvorbis-dev libopenal-dev libfreetype6-dev libudev-dev libjpeg-dev libudev-dev libfontconfig1-dev libsfml-dev libcurl4-openssl-dev xinit fluxbox xterm x11-xserver-utils 3) create develop dir cd ~; mkdir develop 4) Build ffmpeg with mmal support (can take a while you can run make -j4 to speed up the building instead just make on a pi 4) cd ~/develop git clone --depth 1 git://source.ffmpeg.org/ffmpeg.git cd ffmpeg ./configure --enable-mmal --disable-debug --enable-shared make -j4 sudo make install sudo ldconfig 5) Build attractmode (same here can supply -j4 to make to speed it up on a pi 4) if you want multiple monitor support add USE_XINERAMA=1 on both make statements. I'm not sure about USE_GLES=1 i've used it now and seemed to work but did not work if i provided it also on 2nd make statement if i did that attract would not run inside x cd ~/develop git clone --depth 1 https://github.com/mickelson/attract attract cd attract make -j4 USE_GLES=1 USE_XLIB=1 USE_LIBCURL=1 sudo make install USE_XLIB=1 USE_LIBCURL=1 6) set up fluxbox run startx from the pi itselve (not from ssh connection) fluxbox will start, right click desktop choose configuration -> toolbar -> visible to hide the toolbar 7) try a test run of attract by running attract also in the xterm inside X / fluxbox by right clicking and choosing programs then shells then bash, in attract choose the language and check in general settings that you can choose mmal as videodecoder 8) for me mmal decoder have problems with the default video memory split so i run 'sudo raspi-config' and set my memory split to 512 in advanced options and reboot although lower values might work but not changing it made video's not show up or act weird with default memory split. 9) exit emulation station after you rebooted to set the memory split using raspi-config and edit /home/pi/.fluxbox/apps using nano this file lets you define window settings for specific apps. Some emulators run inside a window and i did not want to see the titlebar etc and also ran X Full screen so i added this (replacing anything that already existed): [app] (name=fbrun) [Position] (WINCENTER) {0 0} [Layer] {2} [end] [app] (name=xterm) [Maximized] {yes} [Deco] {NONE} [end] [app] (name=PPSSPPSDL) [Deco] {NONE} [end] [app] (name=scummvm) [Deco] {NONE} [end] [app] (name=advmame) [Deco] {NONE} [end] 10) create a file runattract in /home/pi for example using 'nano /home/pi/runattract' and place this inside its to start attract but this file won't run but itselve #!/bin/bash #set governor to performance sudo sh -c "echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor" #sleep a bit to make sure everything is started sleep 2 #change background to black fbsetroot --solid black #uncomment below to set specific resolution verify first with running xrandr without params #xrandr -s 1920x1080 #run attract inside xterm with with foreground black background sleep 1 && xterm -fg white -bg black -e 'attract' #when we exit attract make sure we kill X sudo killall Xorg 11) close nano and give runattract execute rights 'chmod +x /home/pi/runattract' 11)edit /home/pi/.fluxbox/startup using nano and change 'exec fluxbox' to '/home/pi/runattract & exec fluxbox' 12) to disable powersaving (screen going blank) using sudo edit /etc/X11/xinit/xserverrc so 'sudo nano /etc/X11/xinit/xserverrc' change the line exec /usr/bin/X -nolisten tcp "$@" to exec /usr/bin/X -s 0 -dpms -nolisten tcp "$@" 13) try startx again from the pi itselve it should autostart attract from a fullscreen xterm 14) exit attract it should kill X copy your .attract setups as usual and setup extra emulators using Retropie setup script 15) if all of the above works correctly edit /opt/retropie/configs/all/autostart.sh replace 'emulationstation' with 'startx' so it will automatically load X