mirror of
https://github.com/libretro/Lakka-LibreELEC.git
synced 2025-04-02 10:41:46 -04:00
this brings images suited to work OOB for RPi3/4/5 with CRT TV sets. it comes with preconfigured shaders, core options, readable font, ... see https://www.lakka.tv/articles/2024/05/02/rpi-composite/ - add new RPiX-Composite devices under RPi project - RPi3/4-Composite use own kernel config - RPi5-Composite uses kernel config of RPi5 - remove linux.arm.conf broken symlinks from some devices - move VULKAN enable to device options - add splash screens for 480/576 height - glibc: match kernel version for RPi3/4 (using 5.10.y with "fake" 240p patch) - adjust DEVICE conditions to only match first 4 characters / first 4 characters + wildcard (various places) - add specific assets, configs, shaders in retroarch package - retroarch: adjust default configuration - linux: add 5.10.y kernel (used by RPi3/4-Composite, see above) - linux: add patches for 5.10.y kernel - mkimage: add additional information into cmdline.txt and retroarch-overrides.txt - firstboot.sh: add output (logged in fs-resize.log) - firstboot.sh: prepend processed overrides with hash - firstboot.sh: copy core configurations to storage partition - firstboot.sh: rework wifi autoconfig script - retroarch: add full default config file and apply changes in the package file directly to the config for individual systems (solves some issues with core/game overrides when there is no value in the config and user creates overrides in first run of retroarch, then these overrides are also stored in default config)
393 lines
18 KiB
Makefile
393 lines
18 KiB
Makefile
PKG_NAME="retroarch"
|
|
PKG_VERSION="ab3b175848fa6cd8b2340809631e30bc0fe1d136"
|
|
PKG_LICENSE="GPLv3"
|
|
PKG_SITE="https://github.com/libretro/RetroArch"
|
|
PKG_URL="${PKG_SITE}.git"
|
|
PKG_DEPENDS_TARGET="toolchain freetype zlib ffmpeg libass libvdpau libxkbcommon glsl_shaders slang_shaders systemd libpng fontconfig"
|
|
PKG_LONGDESC="Reference frontend for the libretro API."
|
|
PKG_LR_UPDATE_TAG="yes"
|
|
|
|
PKG_CONFIGURE_OPTS_TARGET="--disable-vg \
|
|
--disable-sdl \
|
|
--disable-sdl2 \
|
|
--disable-ssl \
|
|
--enable-zlib \
|
|
--enable-freetype \
|
|
--enable-translate \
|
|
--enable-cdrom \
|
|
--enable-command \
|
|
--enable-kms \
|
|
--enable-egl \
|
|
--enable-ssl \
|
|
--enable-builtinmbedtls \
|
|
--datarootdir=${SYSROOT_PREFIX}/usr/share" # don't use host /usr/share!
|
|
|
|
PKG_MAKE_OPTS_TARGET="V=1 \
|
|
HAVE_LAKKA=1 \
|
|
HAVE_LAKKA_PROJECT="${DEVICE:-${PROJECT}}.${ARCH}" \
|
|
HAVE_LAKKA_SERVER="${LAKKA_UPDATE_SERVER_URL}" \
|
|
HAVE_CHEEVOS=1 \
|
|
HAVE_HAVE_ZARCH=0 \
|
|
HAVE_WIFI=1 \
|
|
HAVE_BLUETOOTH=1 \
|
|
HAVE_CLOUDSYNC=1 \
|
|
HAVE_SSL=1 \
|
|
HAVE_BUILTINMBEDTLS=1 \
|
|
HAVE_FREETYPE=1"
|
|
|
|
if [ "${PROJECT}" = "RPi" ]; then
|
|
if [ "${DEVICE}" = "RPi3" -o "${DEVICE}" = "RPi4" -o "${DEVICE}" = "RPi5" -o "${DEVICE: -10}" = "-Composite" ]; then
|
|
PKG_MAKE_OPTS_TARGET+=" HAVE_RETROFLAG=1"
|
|
fi
|
|
fi
|
|
|
|
if [ "${OPENGLES_SUPPORT}" = yes ]; then
|
|
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --enable-opengles"
|
|
if [ "${DEVICE:0:4}" = "RPi4" ] || [ "${DEVICE:0:4}" = "RPi5" ] || [ "${DEVICE}" = "RK3288" ] || [ "${DEVICE}" = "RK3399" ] || [ "${PROJECT}" = "Generic" ] || [ "${DEVICE}" = "Odin" ]; then
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --enable-opengles3 \
|
|
--enable-opengles3_1"
|
|
if [ "${PROJECT}" = "Generic" ]; then
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --enable-opengles3_2"
|
|
fi
|
|
fi
|
|
else
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --disable-opengles"
|
|
fi
|
|
|
|
if [ "${OPENGL_SUPPORT}" = yes -a ! "${OPENGLES_SUPPORT}" = "yes" ]; then
|
|
PKG_DEPENDS_TARGET+=" ${OPENGL}"
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --enable-opengl"
|
|
PKG_MAKE_OPTS_TARGET+=" HAVE_OPENGL1=1"
|
|
else
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --disable-opengl"
|
|
fi
|
|
|
|
if [ "${VULKAN_SUPPORT}" = yes ]; then
|
|
PKG_DEPENDS_TARGET+=" ${VULKAN}"
|
|
PKG_MAKE_OPTS_TARGET+=" HAVE_VULKAN=1"
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --enable-vulkan"
|
|
else
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --disable-vulkan"
|
|
fi
|
|
|
|
if [ "${DISPLAYSERVER}" != "no" ]; then
|
|
PKG_DEPENDS_TARGET+=" ${DISPLAYSERVER}"
|
|
fi
|
|
|
|
if [ "${DISPLAYSERVER}" = "x11" ]; then
|
|
PKG_DEPENDS_TARGET+=" libXxf86vm"
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --enable-x11 --enable-xinerama"
|
|
else
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --disable-x11"
|
|
fi
|
|
|
|
if [ "${DISPLAYSERVER}" = "wl" ]; then
|
|
PKG_DEPENDS_TARGET+=" wayland wayland-protocols"
|
|
PKG_MAKE_OPTS_TARGET+=" HAVE_WAYLAND=1"
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --enable-wayland"
|
|
else
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --disable-wayland"
|
|
fi
|
|
|
|
if [ "${PULSEAUDIO_SUPPORT}" = yes ]; then
|
|
PKG_DEPENDS_TARGET+=" pulseaudio"
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --enable-pulse"
|
|
else
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --disable-pulse"
|
|
fi
|
|
|
|
if [ "${ALSA_SUPPORT}" = yes ]; then
|
|
PKG_DEPENDS_TARGET+=" alsa-lib"
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --enable-alsa"
|
|
else
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --disable-alsa"
|
|
fi
|
|
|
|
if [[ "${TARGET_FPU}" =~ "neon" ]]; then
|
|
if [ "${ARCH}" = "arm" ]; then
|
|
PKG_CONFIGURE_OPTS+=" --enable-neon"
|
|
fi
|
|
fi
|
|
|
|
if [ "${DEVICE}" = "OdroidGoAdvance" ]; then
|
|
PKG_DEPENDS_TARGET+=" librga"
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --enable-odroidgo2"
|
|
fi
|
|
|
|
if [ "${OPENGLES}" = "bcm2835-driver" ]; then
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --enable-videocore --enable-dispmanx"
|
|
PKG_CONFIGURE_OPTS_TARGET=${PKG_CONFIGURE_OPTS_TARGET//--enable-kms/--disable-kms}
|
|
else
|
|
PKG_CONFIGURE_OPTS_TARGET+=" --disable-videocore"
|
|
fi
|
|
|
|
if [ "${PROJECT}" = "L4T" ]; then
|
|
PKG_CONFIGURE_OPTS_TARGET=${PKG_CONFIGURE_OPTS_TARGET//--enable-kms/--disable-kms}
|
|
#EGL break gl1 support so if opengl enabled, force disable egl/gles
|
|
if [ "${OPENGL_SUPPORT}" = yes ]; then
|
|
PKG_CONFIGURE_OPTS_TARGET=${PKG_CONFIGURE_OPTS_TARGET//--enable-egl/--disable-egl}
|
|
PKG_CONFIGURE_OPTS_TARGET=${PKG_CONFIGURE_OPTS_TARGET//--enable-opengles3_1/}
|
|
PKG_CONFIGURE_OPTS_TARGET=${PKG_CONFIGURE_OPTS_TARGET//--enable-opengles3_2/}
|
|
PKG_CONFIGURE_OPTS_TARGET=${PKG_CONFIGURE_OPTS_TARGET//--enable-opengles3/}
|
|
PKG_CONFIGURE_OPTS_TARGET=${PKG_CONFIGURE_OPTS_TARGET//--enable-opengles/}
|
|
fi
|
|
|
|
if [ "${DEVICE}" = "Switch" ]; then
|
|
PKG_MAKE_OPTS_TARGET+=" HAVE_LAKKA_SWITCH=1"
|
|
fi
|
|
fi
|
|
|
|
pre_configure_target() {
|
|
TARGET_CONFIGURE_OPTS=""
|
|
cd ${PKG_BUILD}
|
|
}
|
|
|
|
pre_make_target() {
|
|
if [ "${OPENGLES}" = "bcm2835-driver" ]; then
|
|
CFLAGS+=" -I${SYSROOT_PREFIX}/usr/include/interface/vcos/pthreads \
|
|
-I${SYSROOT_PREFIX}/usr/include/interface/vmcs_host/linux"
|
|
fi
|
|
CFLAGS=${CFLAGS/"-Os"/"-O2"}
|
|
CFLAGS=${CFLAGS/"-O3"/"-O2"}
|
|
}
|
|
|
|
make_target() {
|
|
make ${PKG_MAKE_OPTS_TARGET}
|
|
make -C gfx/video_filters compiler=${CC} extra_flags="${CFLAGS}"
|
|
make -C libretro-common/audio/dsp_filters compiler=${CC} extra_flags="${CFLAGS}"
|
|
}
|
|
|
|
makeinstall_target() {
|
|
mkdir -p ${INSTALL}/usr/bin
|
|
cp -v ${PKG_BUILD}/retroarch ${INSTALL}/usr/bin
|
|
cp -v ${PKG_DIR}/scripts/lakka-*.sh ${INSTALL}/usr/bin
|
|
mkdir -p ${INSTALL}/usr/share/video_filters
|
|
cp -v ${PKG_BUILD}/gfx/video_filters/*.so ${INSTALL}/usr/share/video_filters
|
|
cp -v ${PKG_BUILD}/gfx/video_filters/*.filt ${INSTALL}/usr/share/video_filters
|
|
mkdir -p ${INSTALL}/usr/share/audio_filters
|
|
cp -v ${PKG_BUILD}/libretro-common/audio/dsp_filters/*.so ${INSTALL}/usr/share/audio_filters
|
|
cp -v ${PKG_BUILD}/libretro-common/audio/dsp_filters/*.dsp ${INSTALL}/usr/share/audio_filters
|
|
mkdir -p ${INSTALL}/usr/lib/retroarch
|
|
cp -v ${PKG_DIR}/scripts/retroarch-config ${INSTALL}/usr/lib/retroarch
|
|
|
|
# System overlay
|
|
mkdir -p ${INSTALL}/usr/share/retroarch/system
|
|
touch ${INSTALL}/usr/share/retroarch/system/.placeholder
|
|
|
|
# General configuration
|
|
local ra_config=${INSTALL}/etc/retroarch.cfg
|
|
mkdir -p ${INSTALL}/etc
|
|
cp ${PKG_DIR}/config/retroarch.cfg ${ra_config}
|
|
|
|
# Power settings
|
|
# Use ondemand for all RPi devices (for backwards compatibility?)
|
|
# and any battery powered device (OGA and RPi case)
|
|
if [ "${PROJECT}" = "RPi" ] || [ "${DEVICE}" = "OdroidGoAdvance" ]; then
|
|
sed -i ${ra_config} -e 's|^cpu_main_gov = .*|cpu_main_gov = "ondemand"|'
|
|
sed -i ${ra_config} -e 's|^cpu_menu_gov = .*|cpu_menu_gov = "ondemand"|'
|
|
sed -i ${ra_config} -e 's|^cpu_scaling_mode = .*|cpu_scaling_mode = "1"|'
|
|
fi
|
|
|
|
if [ "${PROJECT}" = "Samsung" -a "${DEVICE}" = "Exynos" ]; then
|
|
# workaround the 55fps bug
|
|
sed -i ${ra_config} -e 's|^audio_out_rate = .*|audio_out_rate = "44100"|'
|
|
fi
|
|
|
|
# OdroidGoAdvance
|
|
if [ "${DEVICE}" = "OdroidGoAdvance" ]; then
|
|
sed -i ${ra_config} -e 's|^xmb_layout = .*|xmb_layout = "2"|'
|
|
sed -i ${ra_config} -e 's|^menu_widget_scale_auto = .*|menu_widget_scale_auto = "false"|'
|
|
sed -i ${ra_config} -e 's|^menu_widget_scale_factor = .*|menu_widget_scale_factor = "2.250000"|'
|
|
fi
|
|
|
|
# RPiZero/RPiZero2 + GPiCase (1st Gen Retroflag GPiCase)
|
|
if [ "${DEVICE}" = "RPiZero-GPiCase" -o "${DEVICE}" = "RPiZero2-GPiCase" ]; then
|
|
sed -i ${ra_config} -e 's|^input_menu_toggle_gamepad_combo = .*|input_menu_toggle_gamepad_combo = "4"|'
|
|
sed -i ${ra_config} -e 's|^menu_driver = .*|menu_driver = "rgui"|'
|
|
sed -i ${ra_config} -e 's|^aspect_ratio_index = .*|aspect_ratio_index = "21"|'
|
|
sed -i ${ra_config} -e 's|^audio_device = .*|audio_device = "default:CARD=Headphones"|'
|
|
sed -i ${ra_config} -e 's|^audio_out_rate = .*|audio_out_rate = "44100"|'
|
|
sed -i ${ra_config} -e 's|^menu_enable_widgets = .*|menu_enable_widgets = "false"|'
|
|
sed -i ${ra_config} -e 's|^menu_timedate_enable = .*|menu_timedate_enable = "false"|'
|
|
sed -i ${ra_config} -e 's|^video_font_size = .*|video_font_size = "16.000000"|'
|
|
sed -i ${ra_config} -e 's|^menu_widget_scale_auto = .*|menu_widget_scale_auto = "false"|'
|
|
sed -i ${ra_config} -e 's|^menu_widget_scale_factor = .*|menu_widget_scale_factor = "1.750000"|'
|
|
|
|
if [ "${DEVICE}" = "RPiZero-GPiCase" ]; then
|
|
sed -i ${ra_config} -e 's|^video_threaded = .*|video_threaded = "false"|'
|
|
sed -i ${ra_config} -e 's|^video_scale_integer = .*|video_scale_integer = "true"|'
|
|
fi
|
|
|
|
if [ "${DEVICE}" = "RPiZero2-GPiCase" ]; then
|
|
sed -i ${ra_config} -e 's|^input_player1_analog_dpad_mode = .*|input_player1_analog_dpad_mode = "3"|'
|
|
fi
|
|
fi
|
|
|
|
# RPi Compute Module 4 + GPiCase2 (2nd Gen Retroflag GPiCase)
|
|
if [ "${DEVICE}" = "RPi4-GPiCase2" ]; then
|
|
sed -i ${ra_config} -e 's|^audio_device = .*|audio_device = "default:CARD=Device"|'
|
|
sed -i ${ra_config} -e 's|^audio_out_rate = .*|audio_out_rate = "44100"|'
|
|
sed -i ${ra_config} -e 's|^xmb_layout = .*|xmb_layout = "2"|'
|
|
sed -i ${ra_config} -e 's|^menu_widget_scale_auto = .*|menu_widget_scale_auto = "false"|'
|
|
sed -i ${ra_config} -e 's|^menu_widget_scale_factor = .*|menu_widget_scale_factor = "1.750000"|'
|
|
fi
|
|
|
|
# RPiZero2 + GPiCase2W (3rd Gen Retroflag GPiCase)
|
|
if [ "${DEVICE}" = "RPiZero2-GPiCase2W" ]; then
|
|
sed -i ${ra_config} -e 's|^audio_device = .*|audio_device = "default:CARD=Headphone"|'
|
|
sed -i ${ra_config} -e 's|^audio_out_rate = .*|audio_out_rate = "44100"|'
|
|
sed -i ${ra_config} -e 's|^xmb_layout = .*|xmb_layout = "2"|'
|
|
sed -i ${ra_config} -e 's|^menu_widget_scale_auto = .*|menu_widget_scale_auto = "false"|'
|
|
sed -i ${ra_config} -e 's|^menu_widget_scale_factor = .*|menu_widget_scale_factor = "1.750000"|'
|
|
fi
|
|
|
|
# PiBoy DMG / RetroDreamer
|
|
if [ "${DEVICE}" = "RPi4-PiBoyDmg" -o "${DEVICE}" = "RPi4-RetroDreamer" ]; then
|
|
sed -i ${ra_config} -e 's|^menu_timedate_enable = .*|menu_timedate_enable = "false"|'
|
|
sed -i ${ra_config} -e 's|^menu_scale_factor = .*|menu_scale_factor = "1.440000"|'
|
|
sed -i ${ra_config} -e 's|^input_menu_toggle_gamepad_combo = .*|input_menu_toggle_gamepad_combo = "4"|'
|
|
sed -i ${ra_config} -e 's|^menu_driver = .*|menu_driver = "ozone"|'
|
|
fi
|
|
|
|
# RPi-Composite
|
|
if [ "${PROJECT}" = "RPi" -a "${DEVICE: -10}" = "-Composite" ]; then
|
|
# copy font
|
|
mkdir -p ${INSTALL}/usr/share/retroarch/assets
|
|
cp -rv ${PKG_DIR}/files-composite/assets/* ${INSTALL}/usr/share/retroarch/assets
|
|
# copy shaders
|
|
mkdir -p ${INSTALL}/usr/share/retroarch/shaders
|
|
cp -rv ${PKG_DIR}/files-composite/shaders/* ${INSTALL}/usr/share/retroarch/shaders
|
|
# keep only relevant shader presets and shaders
|
|
if [ "${DEVICE:0:4}" = "RPi5" ]; then
|
|
rm -v ${INSTALL}/usr/share/retroarch/shaders/RPi-Composite/rpi3-4.{glslp,slangp}
|
|
rm -v ${INSTALL}/usr/share/retroarch/shaders/RPi-Composite/shaders/rpi3-4-composite-mmgb-vudiq.{glsl,slang}
|
|
else
|
|
rm -v ${INSTALL}/usr/share/retroarch/shaders/RPi-Composite/rpi5.{glslp,slangp}
|
|
rm -v ${INSTALL}/usr/share/retroarch/shaders/RPi-Composite/shaders/rpi5-composite-mmgb-vudiq.{glsl,slang}
|
|
fi
|
|
# copy global shader presets
|
|
mkdir -p ${INSTALL}/etc/retroarch/config
|
|
if [ "${DEVICE:0:4}" = "RPi5" ]; then
|
|
cp -v ${PKG_DIR}/files-composite/global-rpi5.glslp ${INSTALL}/etc/retroarch/config/global.glslp
|
|
cp -v ${PKG_DIR}/files-composite/global-rpi5.slangp ${INSTALL}/etc/retroarch/config/global.slangp
|
|
else
|
|
cp -v ${PKG_DIR}/files-composite/global-rpi34.glslp ${INSTALL}/etc/retroarch/config/global.glslp
|
|
cp -v ${PKG_DIR}/files-composite/global-rpi34.slangp ${INSTALL}/etc/retroarch/config/global.slangp
|
|
fi
|
|
# extract core configs
|
|
unzip ${PKG_DIR}/files-composite/config/core_configs.zip -d ${INSTALL}/etc/retroarch/config
|
|
# set dynamic recompiler on RPi3/4 for Mupen64plus-next
|
|
if [ "${DEVICE:0:4}" != "RPi5" ]; then
|
|
sed -i ${INSTALL}/etc/retroarch/config/Mupen64Plus-Next/Mupen64Plus-Next.opt \
|
|
-e 's|^mupen64plus-cpucore = .*|mupen64plus-cpucore = "dynamic_recompiler"|'
|
|
fi
|
|
# use specific font for composite
|
|
sed -i ${ra_config} -e 's|^xmb_font = .*|xmb_font = "/tmp/assets/xmb/xmb_pixel_mmgb.ttf"|'
|
|
sed -i ${ra_config} -e 's|^video_font_path = .*|video_font_path = "/tmp/assets/xmb/xmb_pixel_mmgb.ttf"|'
|
|
# offset the xmb title to be within visible screen area
|
|
sed -i ${ra_config} -e 's|^menu_xmb_title_margin = .*|menu_xmb_title_margin = "8"|'
|
|
sed -i ${ra_config} -e 's|^menu_xmb_title_margin_horizontal_offset = .*|menu_xmb_title_margin_horizontal_offset = "3"|'
|
|
# show advanced settings
|
|
sed -i ${ra_config} -e 's|^menu_show_advanced_settings = .*|menu_show_advanced_settings = "true"|'
|
|
# show save core/game overrides menu
|
|
sed -i ${ra_config} -e 's|^quick_menu_show_save_core_overrides = .*|quick_menu_show_save_core_overrides = "true"|'
|
|
sed -i ${ra_config} -e 's|^quick_menu_show_save_game_overrides = .*|quick_menu_show_save_game_overrides = "true"|'
|
|
# hide menu sublabels - they are not legible anyway
|
|
sed -i ${ra_config} -e 's|^menu_show_sublabels = .*|menu_show_sublabels = "false"|'
|
|
# enable shaders
|
|
sed -i ${ra_config} -e 's|^video_shader_enable = .*|video_shader_enable = "true"|'
|
|
# turn on integer scaling
|
|
sed -i ${ra_config} -e 's|^video_scale_integer = .*|video_scale_integer = "true"|'
|
|
# rgui options
|
|
sed -i ${ra_config} -e 's|^rgui_aspect_ratio_lock = .*|rgui_aspect_ratio_lock = "2"|'
|
|
sed -i ${ra_config} -e 's|^menu_linear_filter = .*|menu_linear_filter = "true"|'
|
|
# hide RetroArch version - core name in bottom right corner
|
|
sed -i ${ra_config} -e 's|^menu_core_enable = .*|menu_core_enable = "false"|'
|
|
# set widget scale / disable auto scaling
|
|
sed -i ${ra_config} -e 's|^menu_widget_scale_auto = .*|menu_widget_scale_auto = "false"|'
|
|
sed -i ${ra_config} -e 's|^menu_widget_scale_factor = .*|menu_widget_scale_factor = "1.150000"|'
|
|
# turn off some distracting notifications
|
|
sed -i ${ra_config} -e 's|^notification_show_cheats_applied = .*|notification_show_cheats_applied = "false"|'
|
|
sed -i ${ra_config} -e 's|^notification_show_config_override_load = .*|notification_show_config_override_load = "false"|'
|
|
sed -i ${ra_config} -e 's|^notification_show_disk_control = .*|notification_show_disk_control = "false"|'
|
|
sed -i ${ra_config} -e 's|^notification_show_patch_applied = .*|notification_show_patch_applied = "false"|'
|
|
sed -i ${ra_config} -e 's|^notification_show_refresh_rate = .*|notification_show_refresh_rate = "false"|'
|
|
sed -i ${ra_config} -e 's|^notification_show_remap_load = .*|notification_show_remap_load = "false"|'
|
|
# Set audio to headphone jack for Pi3/4, Pi 5 must use USB soundcard for analog audio out
|
|
if listcontains "${DEVICE:0:4}" "(RPi3|RPi4)"; then
|
|
sed -i ${ra_config} -e 's|^audio_device = .*|audio_device = "default:CARD=Headphones"|'
|
|
fi
|
|
# Force this resolution for RPi5 to start in the right one
|
|
if [ "${DEVICE:0:4}" = "RPi5" ]; then
|
|
sed -i ${ra_config} -e 's|^video_fullscreen_x = .*|video_fullscreen_x = "721"|'
|
|
sed -i ${ra_config} -e 's|^video_fullscreen_y = .*|video_fullscreen_y = 480""|'
|
|
fi
|
|
# disable threaded video on RPi4 and RPi5
|
|
if [ "${DEVICE:0:4}" = "RPi4" -o "${DEVICE:0:4}" = "RPi5" ]; then
|
|
sed -i ${ra_config} -e 's|^video_threaded = .*|video_threaded = "false"|'
|
|
fi
|
|
# set video driver to glcore on RPi4/5
|
|
if listcontains "${DEVICE:0:4}" "(RPi4|RPi5)"; then
|
|
sed -i ${ra_config} -e 's|^video_driver = .*|video_driver = "glcore"|'
|
|
fi
|
|
fi
|
|
|
|
# iMX6
|
|
if [ "${PROJECT}" = "NXP" -a "${DEVICE}" = "iMX6" ]; then
|
|
sed -i ${ra_config} -e 's|^audio_device = .*|audio_device = "default:CARD=DWHDMI"|'
|
|
sed -i ${ra_config} -e 's|^audio_enable_menu = .*|audio_enable_menu = "true"|'
|
|
sed -i ${ra_config} -e 's|^audio_enable_menu_ok = .*|audio_enable_menu_ok = "true"|'
|
|
sed -i ${ra_config} -e 's|^audio_enable_menu_cancel = .*|audio_enable_menu_cancel = "true"|'
|
|
sed -i ${ra_config} -e 's|^audio_enable_menu_notice = .*|audio_enable_menu_notice = "true"|'
|
|
fi
|
|
|
|
# Switch
|
|
if [ "${PROJECT}" = "L4T" -a "${DEVICE}" = "Switch" ] || [ "${PROJECT}" = "Ayn" -a "${DEVICE}" = "Odin" ]; then
|
|
sed -i ${ra_config} -e 's|^menu_pointer_enable = .*|menu_pointer_enable = "true"|'
|
|
sed -i ${ra_config} -e 's|^video_crop_overscan = .*|video_crop_overscan = "false"|'
|
|
|
|
if [ ! "${PROJECT}" = "Ayn" -a ! "${DEVICE}" = "Odin" ]; then
|
|
sed -i ${ra_config} -e 's|^video_hard_sync = .*|video_hard_sync = "true"|'
|
|
fi
|
|
|
|
sed -i ${ra_config} -e 's|^input_driver = .*|input_driver = "x"|'
|
|
sed -i ${ra_config} -e 's|^video_smooth = .*|video_smooth = "true"|'
|
|
sed -i ${ra_config} -e 's|^menu_driver = .*|menu_driver = "ozone"|'
|
|
|
|
if [ ! "${PROJECT}" = "Ayn" -a ! "${DEVICE}" = "Odin" ]; then
|
|
#Set Joypad as joypad with analog
|
|
sed -i ${ra_config} -e 's|^input_device_p1 = .*|input_device_p1 = "5"|'
|
|
else
|
|
sed -i ${ra_config} -e 's|^video_river = .*|video_driver = "glcore"|'
|
|
sed -i ${ra_config} -e 's|^audio_driver = .*|audio_driver = "pulse"|'
|
|
sed -i ${ra_config} -e 's|^video_vsync = .*|video_vsync = "false"|'
|
|
fi
|
|
|
|
#HACK: Temporary hack for touchscreen
|
|
sed -i ${ra_config} -e 's|^video_windowed_fullscreen = .*|video_windowed_fullscreen = "true"|'
|
|
fi
|
|
|
|
# create default environment file
|
|
echo "HOME=/storage" >> ${INSTALL}/usr/lib/retroarch/retroarch-env.conf
|
|
if [ "${DISPLAYSERVER}" = "x11" ]; then
|
|
echo "DISPLAY=:0.0" >> ${INSTALL}/usr/lib/retroarch/retroarch-env.conf
|
|
elif [ "${DISPLAYSERVER}" = "wl" ]; then
|
|
echo "WAYLAND_DISPLAY='wayland-1'" >> ${INSTALL}/usr/lib/retroarch/retroarch-env.conf
|
|
echo "SWAYSOCK='/var/run/0-runtime-dir/sway-ipc.0.sock'" >> ${INSTALL}/usr/lib/retroarch/retroarch-env.conf
|
|
echo "XDG_RUNTIME_DIR='/var/run/0-runtime-dir'" >> ${INSTALL}/usr/lib/retroarch/retroarch-env.conf
|
|
fi
|
|
}
|
|
|
|
post_install() {
|
|
enable_service retroarch.target
|
|
enable_service tmp-cores.mount
|
|
enable_service tmp-joypads.mount
|
|
enable_service tmp-database.mount
|
|
enable_service tmp-assets.mount
|
|
enable_service tmp-shaders.mount
|
|
enable_service tmp-overlays.mount
|
|
enable_service tmp-system.mount
|
|
enable_service retroarch-autostart.service
|
|
enable_service retroarch.service
|
|
}
|