Coder Social home page Coder Social logo

dev-0x7c6 / meta-retro Goto Github PK

View Code? Open in Web Editor NEW
23.0 6.0 9.0 1.26 MB

OpenEmbedded / Yocto software layer for RetroArch and libretro cores

License: MIT License

BitBake 97.27% Shell 2.11% C++ 0.08% Python 0.55%
retro-gaming embedded yocto yocto-layer retroarch kodi openembedded openembedded-layer meta-retro libretro

meta-retro's Introduction

OpenEmbedded / Yocto software layer for RetroArch and libretro cores

This layer provides RetroArch front-end and libretro cores emulators recipes for use with OpenEmbedded and/or Yocto.

Raspberry Pi 4 Poky build

Building

You can test this layer and distro (retro) with reference build environment on your host computer

user@localhost:~$ git clone --recursive https://github.com/dev-0x7C6/retro-build-environment.git
user@localhost:~$ cd retro-build-environment
user@localhost:~$ source source.me
user@localhost:~$ MACHINE="raspberrypi4" bitbake retro-image-full

Images

Image (recipe name) Retroarch Libretro cores Shaders Titles Cheats Themes Overlays
retro-image-full ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
retro-image-standard ✔️ ✔️ ✔️ ✔️
retro-image-minimal ✔️ ✔️ ✔️

Recomendation: retro-image-full

Tested platforms

Machine Layer Build against Runtime testing Notice
cubietruck meta-sunxi Often Rarely Unable to run kms with lima(mesa)
intel-core2-32 meta-intel Often Sometimes As pendrive dongle
intel-corei7-64 meta-intel Often Sometimes As pendrive dongle
orange-pi-pc meta-sunxi Often Rarely ---
raspberrypi3-64 meta-raspberrypi Often Sometimes ---
raspberrypi3 meta-raspberrypi Often Sometimes ---
raspberrypi4-64 meta-raspberrypi Always Often ---
raspberrypi4 meta-raspberrypi Always Often ---
rock-pi-4a meta-rockchip Often None Thanks to @MarkusVolk for sending patches

Distro features

Meta-retro introduced a collection of switches that can be set by DISTRO_FEATURES in local.conf or distro.conf

RetroArch and system features:

  • retroarch-automount - added extra automounting in /var/run/media
  • retroarch-autostart - enabling systemd RetroArch startup as main graphics.target
  • retroarch-online - compile RetroArch with online capabilities
  • retroarch-updater - compile RetroArch with update capabilities

Graphical capabilities:

  • retroarch-gles - enable for OpenGLES 2.0 support in retroarch and libretro cores
  • retroarch-gles3 - enable for OpenGLES 3.0 support in retroarch and libretro cores
  • retroarch-opengl - enable for OpenGL >= 2.0 support in retroarch and libretro cores
  • vulkan - enable for Vulkan support in retroarch and libretro cores

Customizable variables

There is a collection of variables that can be set in local.conf or distro.conf:

Default drivers

  • RETROARCH_DEFAULT_INPUT_DRIVER - default is udev
  • RETROARCH_DEFAULT_JOYPAD_DRIVER - default is udev
  • RETROARCH_DEFAULT_VIDEO_DRIVER - default is gl
  • RETROARCH_DEFAULT_VIDEO_CONTEXT - default is kms-egl
  • RETROARCH_DEFAULT_AUDIO_DRIVER - default is pulseaudio or alsathread
  • RETROARCH_DEFAULT_RESAMPLER_DRIVER - default is sinc
  • RETROARCH_DEFAULT_MENU_DRIVER - default is ozone

Configuration

  • RETROARCH_CONFIG_FULLSCREEN - default is true, go for fullscreen mode, this respects initial resolutions (tested with rpi4)
  • RETROARCH_CONFIG_THREADED_VIDEO - default is true, use another thread for renderer
  • RETROARCH_CONFIG_AUDIO_LATENCY - default is 256, stock value is 64, I got better performance with higher values on rpi platforms

Video settings

  • RETROARCH_CONFIG_FONT_SIZE

Themes

  • RETROARCH_CONFIG_XMB_SHADOWS
  • RETROARCH_CONFIG_XMB_THEME_COLOR
  • RETROARCH_CONFIG_XMB_THEME_INDEX

For more information see file: retroarch.inc

Layer dependencies

Layer Sublayer Required Software Recommended BSPs
openembedded-core meta ✔️ ✔️
meta-openembedded meta-oe ✔️ ✔️
↪️ meta-multimedia ✔️ ✔️
↪️ meta-python ✔️ ✔️
↪️ meta-networking ✔️ ✔️
meta-python2 . ✔️ ✔️
meta-qt5 . ✔️ ✔️
meta-kodi . ✔️
meta-raspberrypi . ✔️ ✔️
meta-raspberrypi-extras . ✔️ ✔️
meta-intel . ✔️ ✔️
meta-rockchip . ✔️ ✔️

Patches

Please submit patches against the dev-0x7C6/meta-retro layer by pull requests.

Adding the meta-retro layer to your build

In order to use this layer, you need to make the build system aware of it.

Assuming the meta-retro layer exists at the top-level of your yocto build tree, you can add it to the build system by adding the location of the meta-retro layer to bblayers.conf, along with any other layers needed. e.g.:

BBLAYERS ?= " \
  /path/to/yocto/meta \
  /path/to/yocto/meta-yocto \
  /path/to/yocto/meta-yocto-bsp \
  /path/to/yocto/meta-retro \
"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.