Compare commits

...

39 commits

Author SHA1 Message Date
dankcushions 74deabe63a
Merge ae42113e46 into 5e0ab1f859 2024-05-07 07:59:14 +01:00
retropieuser 5e0ab1f859
Update platforms.cfg for pc98 and add .cmd files
* Update platforms.cfg for pc98 and add .cmd files
2024-05-06 15:53:49 +03:00
Jools Wills 2c955ef02a
Merge pull request #3914 from cmitu/mame-update4
lr-mame: fix the build for 2016 repository
2024-05-01 07:29:24 +01:00
cmitu 6105ee21d5 lr-mame: fix the build for 2016 repository
We removed the `python3` parameter setup in commit 2a95dd076a, but the build parameters are also used by Mame/Mess 2016.
Mame2016/Mess2016 have python2 still as default, so re-add the `PYTHON_EXECUTABLE` configuration.
2024-05-01 05:53:26 +01:00
Jools Wills d47d4c55b6
Merge pull request #3913 from cmitu/mame-update3
mame: add GCC requirements for version 0.265
2024-04-30 16:56:20 +01:00
cmitu b3fc3bed50 mame: add GCC requirements for version 0.265
Starting with version 0.265 (April 2024), GCC 10.3 is required for building MAME.
Enforce this requirement when building the emulator and libretro cores, Debian Buster will be getting 0.264 as the last version.
2024-04-30 15:45:07 +01:00
Jools Wills eaa8a13885
Merge pull request #3910 from joolswills/mupen64plus_armv8
mupen64plus - fix building on armv8 with 64bit kernel/32bit userland
2024-04-26 01:44:41 +01:00
Jools Wills fe5bf11159
Merge pull request #3842 from cmitu/kmsxx-add
runcommand: add new 'kms' videomode utility
2024-04-25 18:15:50 +01:00
Gemba fac3ec4659
skyscraper: echo applied command line options of Skyscraper, 2 scraping modules added. 2024-04-25 19:54:40 +03:00
Jools Wills 01ca2520eb mupen64plus - fix building on armv8 with 64bit kernel/32bit userland
Set HOST_CPU to armv8 when we have the armv8 flag set
2024-04-24 19:03:19 +01:00
Jools Wills c8bbdc4de1 retropie-setup - bump version to 4.8.7 2024-04-22 21:23:55 +01:00
Jools Wills b0a36e9dec
Merge pull request #3906 from cmitu/dosbox-staging-3
dosbox-staging: update dependencies and build options
2024-04-22 21:08:01 +01:00
Jools Wills 87bf691cfb
Merge pull request #3904 from cmitu/dolphin-6
dolphin: fix initial config
2024-04-22 21:07:16 +01:00
Jools Wills 28c62fdf1f
Merge pull request #3903 from cmitu/retroarch-config
retroarch: add back the commented config
2024-04-22 21:06:54 +01:00
Jools Wills 88ae6aecb9
Merge pull request #3902 from joolswills/distcc_changes
Distcc changes
2024-04-22 21:06:22 +01:00
cmitu ce1a5a322c dosbox-staging: update dependencies and build options
1. I've noticed that on newer version of Meson, dependendant packages like `iir` and `mt32emu` are no longer built and linked statically.
Instead, they're created and then installed as dynamic libraries. The installation goes to `$md_inst/lib/<host-triplet>`, so the resulting binary doesn't work out-of-the-box, but the more important issue is that the `libmt32emu` library is not copied. As a result, `dosbox` will not be able to run on such a system.

The issue above doesn't seem to affect the RaspiOS (32/64bit) builds, but I had it happening on Debian Trixie (testing) and a recent Armbian Jammy 22.04 for OrangePi 5.

To make sure the above issue doesn't happen, link the `iir` and `mt32emu` libraries statically. They're always downloaded and built via Meson _wraps_, since there are no Debian packages for them.

2. Updated the dependency list so that:
  * `libslirp` and `fluidsynth` (v2) are installed on Bullseye or newer Debian, so they're not built via Meson wraps
  * `sdl2-image-dev` is not needed by `dosbox-staging` anymore.
  * added `zlib` as an explicit dependency
2024-04-22 04:54:37 +01:00
cmitu 1fd390f968 dolphin: fix initial config
The initial config is missing the 'ISOPaths' option, without it the game paths added in the initial configuration are ignored by Dolphin.
2024-04-21 08:02:55 +01:00
cmitu f8cfb729a5 retroarch: add back the commented config
Previous commit removed the `retroarch.cfg` from upstream. While the configuration will set the right options in a new config file, we traditionally used the upstream's config as starting point, since it's largely commented and provides pointers for various configuration options.

Restore the previous behavior by including the upstream `retroarch.cfg` in `$md_inst`, since the makefile doesn't copy it during the install target.
2024-04-21 06:26:14 +01:00
Jools Wills 01bd5365c3 lr-picodrive - disable distcc for module
On Raspberry PI OS Bullseye, the distcc wrapper fails at linking stage. It's not a big module so easiest, to disable distcc in this case.
2024-04-17 00:54:41 +01:00
Jools Wills 81106ea4f7 lr-snes9x - add flag nodistcc to disable distcc for module
Remove setting DISTCC_HOSTS to an empty string to disable distcc (now handled by the module flag).
2024-04-17 00:54:41 +01:00
Jools Wills ac1dce6307 jzintv - add flag nodistcc to disable distcc for module
Remove setting DISTCC_HOSTS to an empty string to disable distcc (now handled by the module flag).
2024-04-17 00:54:41 +01:00
Jools Wills 1da8bdd2c4 mupen64plus - add flag nodistcc to disable distcc for module
Remove setting DISTCC_HOSTS to an empty string to disable distcc (now handled by the module flag).
2024-04-17 00:54:41 +01:00
Jools Wills cf0e098106 Set distcc variables at the scriptmodule function calling stage
Only configure distcc variables if a module does not have the "nodistcc" flag.

Skip builder/setup modules to avoid having distcc changes propagate to modules built from them.

This allows easily disabling distcc for certain modules that are not compatible.
2024-04-17 00:54:32 +01:00
Jools Wills 9aa86b8f2d
Merge pull request #3878 from cmitu/retroarch-1.17.0
retroarch: upgrade to v1.18.0
2024-04-16 21:22:36 +01:00
Jools Wills 790aa470b7
Merge pull request #3900 from cmitu/staging-pin
dosbox-staging: pin version for videocore
2024-04-16 21:21:48 +01:00
Jools Wills 6eb80fbb8f
Merge pull request #3901 from cmitu/plaform-updates
platform: updates for amdstrad and daphne
2024-04-16 21:20:55 +01:00
cmitu 4dbf5856e0 platform: updates for amdstrad and daphne
* Amstrad: add more supported extensions
 * Daphne: enable the OGV format supported by DirkSimple
2024-04-13 04:57:54 +01:00
cmitu ac1493cb43 dosbox-staging: pin version for videocore
Latest (0.81) version of Dosbox Staging doesn't go along with the legacy GPU VideoCore drivers, resulting in a SDL window initialization crash. Pin the 0.80.1 version for these devices, maybe a GLES2-only rendering path will be added later on, which would solve this issue.
2024-04-12 04:56:19 +01:00
Jools Wills 656a478ed7
Merge pull request #3899 from joolswills/hatari_mirror
Switch to using the github mirror for Hatari and bump version to 2.4.1
2024-04-12 01:49:11 +01:00
Ryan C. Gordon b0ceb14f12
Add lr-dirksimple setup script (#3895)
DirkSimple is a laserdisc game player that implements specific titles from scratch, so it uses an arcade game's video content but not its roms. It takes game data in Ogg Theora format, so the "rom" that the core needs is a single .ogv file per game.
2024-04-12 01:46:34 +01:00
Jools Wills 17f41aa933 hatari - Upgrade to v2.4.1
Full changelog: https://raw.githubusercontent.com/hatari/hatari/v2.4.1/doc/release-notes.txt
2024-04-12 01:38:46 +01:00
Jools Wills 26e5e04bb3 hatari - Switch repository to the github mirror
The main site and repository is currently not working (https://hatari.tuxfamily.org/) so switch to the github mirror for now.
2024-04-12 01:36:58 +01:00
cmitu 93f630d21f retroarch: upgrade to v1.18.0
Upgraded RetroArch to version 1.18.0. Notable changes, cherry-picked from:

 - https://www.libretro.com/index.php/retroarch-1-17-0-release/
 - 9e492f74c8

 * Netplay
   - expanded the protocol to allow multiplayer games running on separate consoles/computers.
     Cores like 'Dosbox-Pure' or 'gPSP' support the new protocol.
   - add support for joining MITM servers from command line
 * Cheevos
    - upgrade to v11.0
    - don’t track disc changes when achievements are disabled
    - inform user when server is unreachable
    - fix crash on first load of game with achievements with threaded video
  * Input
    - fix ghost input when setting RETROK_UNKNOWN
    - default ‘Bind Hold’ to 0 to prevent problems with controllers not resting at null state
    - don’t save mouse buttons to autoconfig
    - add a setting to allow turbo d-pad directions
    - change event detection to polling in udev_joypad
    - add option for merging ‘Hotkey Enable’ device types
    - fix input state combos including R3 and false triggers of RETROK_UNKNOWN (1.18.0)
    - add a new turbo mode, "Classic (Toggle)" (1.18.0)
    - limit axis threshold setting to sensible values (1.18.0)
  * Menu
    - fix menu analog stick navigation (1.16.0.1)
    - fix word wrapped widget length
    - fix quit on content close option
    - don’t process menu events while input is being flushed (1.16.0.2)
    - add help text to controller drivers
    - fix text scaling in 16:9 (RGUI)
    - thumbnail related fixes (missing thumbnail bar, fullscreen thumbnail flashing, sidebar focus, OZONE)
    - background images take precedence over color themes, default image opacity set the same as color theme opacity (XMB)
    - fix segmentation fault when background image is missing (XMB)
    - layout/thumbnail fixes – Thumbnail layout adjustments, Header title improvements, Handheld layout adjustments (XMB)
    - add sublabels for input bind common entries (1.18.0)
    - don't disable fast forward when entering menu (1.18.0)
    - add option to disable initial disk change (1.18.0)
    - visibility option for disk control notifications (1.18.0)
  * Video
    - use video refresh rate instead of core refresh rate for menu frame limiting
    - limit paused video refresh rate
    - enforce swap interval 1 in menu if vsync is on
    - add FinalViewportSize support to GLSL
    - change rotation type to int to maximize compatibility

  * Patching
    - add support for XDelta-formatted patches.
    - fix patching for cores that support contentless mode

  * Other
    - Frame Rest, experimental sleep feature aiming to lower CPU usage and temperature when using certain CPU hungry vsync modes
    - introduce wp_fractional_scale_v1 protocol for proper fractional scaling (Wayland)
    - update wayland-protocols version to 1.31 (Wayland)

RetroPie module changes:

 - make `iniConfig` use the same parameters every time
 - removed spurious `ret` files on `_install`
 - set `input_overlay_enable` to enabled, since the default changed (to 'false') in 1.17.0.
   It helps overlay users that didn't explicitely set this parameter in the overlay overrides they're using.
 - set `sort_savestates_enable` and `sort_savefiles_enable` to `false`, since in 1.18.0 RetroArch would otherwise create sub-folders under the content path folder for save states and save files (`.srm`) (see RA issue https://github.com/libretro/RetroArch/issues/16430).
2024-04-11 16:54:49 +01:00
Jools Wills 9e1838b314
Merge pull request #3896 from cmitu/scummvm-2.8.1
scummvm: update standalone emulator to 2.8.1
2024-04-07 21:06:09 +01:00
cmitu 1b45100740 scummvm: update standalone emulator to 2.8.1
The 2.8.1 is a bugfix release and includes upgrades for the following engines: AGI, AGS, GRIM, SWORD2, MM (which is now enabled, it was skipped it in 2.8.0 by accident), mTropolis, NANCY, SCUMM, TWINE, Ultima, and V-Cruise.

Full changelog at https://downloads.scummvm.org/frs/scummvm/2.8.1/ReleaseNotes.html.
2024-04-01 16:25:48 +01:00
cmitu f113a80f36 runcommand: add new 'kms' videomode utility
Replaced the `mesa-drm` scriptmodule and the `modetest` utility with a new program, based on the [kmsxx](https://github.com/tomba/kmsxx) project.

1. Added a new scriptmodule to install the new modesetting utilities:

 * kmsblank - blank screen(s)
 * kmstest - set modes and planes and show test pattern on crtcs/planes,
    and test page flips
 * kmsprint(-rp) - print information about DRM objects (connectors, encoders, video modes, crtcs)
 * fbtest - show info about the console framebuffer

It's based on https://github.com/tomba/kmsxx, forked to add a custom `kmsprint-rp` utility which we can use in `runcommand` instead of `modetest`.

Advantages over `modetest`:

 - it's based on a simpler standalone project and not part of Mesa, less code.
 - it's has a modularized C++ API for working with Cards/Encoders/Connectors/CRTCs/etc, modeled after the DRM API entities
 - works with any DRM/KMS card and doesn't have any card specific code like `modetest`
 - it's faster than modetest (both when KMS is enabled or disabled)
 - can print the analog video modes when the 'composite' output is enabled for RPI. I think `modetest` can be modified to support it, but with `kmsxx` is working without any special handling.

 Note that a Debian package of the `kmsxx` upstream project is packaged in Rasberry PI OS (as `kms++-utils`), but it's not part of Debian. Packaging it as part of RetroPie helps with:
   - integration with `runcommand`, since we can run our own custom query utility
   - resolution switching on other KMS platforms

2. Changes to `runcommand`:

  - replaced `modetest` with `kmsprint-rp`. The format for the modeline printing has changed a bit, to make it easier to parse and integrate the result in `runcommand`. In addition to the rounded/integral refresh rate, there's a new column to show a decimal refresh rate; the _[p|n][h|v]sync_ flags have been reformatted as _[h|v]sync[-|+]_.
  - simplified the modeline parsing for KMS, taking advantage of the new format
  - refresh rate (from KMS modeline) is now be a decimal number (.2f), supported by RetroArch
2024-01-23 16:58:31 +00:00
dankcushions ae42113e46 Changes following review 2022-03-13 12:39:22 +00:00
dankcushions add83f12b3 Remove EVDEV controller backend setting (defaults to SDL) 2022-02-20 14:16:02 +00:00
dankcushions 52341f0079 DuckStation standalone PSX emulator 2022-02-20 14:02:07 +00:00
22 changed files with 331 additions and 82 deletions

View file

@ -7,7 +7,7 @@ ags_fullname="Adventure Game Studio"
amiga_exts=".adf .adz .chd .cue .dms .ipf .lha .m3u .sh .uae .zip"
amiga_fullname="Commodore Amiga"
amstradcpc_exts=".cdt .cpc .dsk .zip"
amstradcpc_exts=".cdt .cpc .cpr .dsk .m3u .tap .zip"
amstradcpc_fullname="Amstrad CPC"
apple2_exts=".po .dsk .nib"
@ -57,7 +57,7 @@ coleco_platform="colecovision"
crvision_exts=".rom .zip"
crvision_fullname="CreatiVision"
daphne_exts=".daphne"
daphne_exts=".daphne .ogv"
daphne_fullname="Daphne"
dragon32_exts=".cas .wav .bas .asc .dmk .jvc .os9 .dsk .vdk .rom .ccc .sna"
@ -164,7 +164,7 @@ oric_fullname="Oric 1"
pc88_exts=".d88 .cmt .m3u .t88"
pc88_fullname="NEC PC-8801"
pc98_exts=".d88 .d98 .88d .98d .fdi .fdd .xdf .hdm .dup .2hd .tfd .hdi .thd .nhd .hdd .zip"
pc98_exts=".2hd .88d .98d .cmd .d88 .d98 .dup .fdi .fdd .hdd .hdi .hdm .nhd .thd .tfd .xdf .zip"
pc98_fullname="NEC PC-9801"
pc_exts=".bat .com .conf .cue .dosz .exe .ins .ima .img .iso .m3u .m3u8 .sh .vhd .zip"

View file

@ -9,7 +9,7 @@
# at https://raw.githubusercontent.com/RetroPie/RetroPie-Setup/master/LICENSE.md
#
__version="4.8.6"
__version="4.8.7"
[[ "$__debug" -eq 1 ]] && set -x

View file

@ -108,6 +108,7 @@ ConfirmStop = False
[General]
ISOPath0 = "$home/RetroPie/roms/gc"
ISOPath1 = "$home/RetroPie/roms/wii"
ISOPaths = 2
[Core]
AutoDiscChange = True
_EOF_

View file

@ -18,11 +18,20 @@ rp_module_section="opt"
rp_module_flags="sdl2"
function _get_branch_dosbox-staging() {
# use 0.80.1 for VideoCore devices, 0.81 and later require OpenGL
if isPlatform "videocore"; then
echo "v0.80.1"
return
fi
download https://api.github.com/repos/dosbox-staging/dosbox-staging/releases/latest - | grep -m 1 tag_name | cut -d\" -f4
}
function depends_dosbox-staging() {
getDepends cmake libasound2-dev libglib2.0-dev libopusfile-dev libpng-dev libsdl2-dev libsdl2-net-dev libsdl2-image-dev libspeexdsp-dev meson ninja-build
local depends
depends=(cmake libasound2-dev libglib2.0-dev libopusfile-dev libpng-dev libsdl2-dev libsdl2-net-dev libspeexdsp-dev meson ninja-build zlib1g-dev)
[[ "$__os_debian_ver" -ge 11 ]] && depends+=(libslirp-dev libfluidsynth-dev)
getDepends "${depends[@]}"
}
function sources_dosbox-staging() {
@ -35,7 +44,7 @@ function sources_dosbox-staging() {
}
function build_dosbox-staging() {
local params=(-Dprefix="$md_inst" -Ddatadir="resources")
local params=(-Dprefix="$md_inst" -Ddatadir="resources" -Dtry_static_libs="iir,mt32emu")
# use the build local Meson installation if found
local meson_cmd="meson"
[[ -f "$md_build/meson/meson.py" ]] && meson_cmd="python3 $md_build/meson/meson.py"

View file

@ -0,0 +1,93 @@
#!/usr/bin/env bash
# This file is part of The RetroPie Project
#
# The RetroPie Project is the legal property of its developers, whose names are
# too numerous to list here. Please refer to the COPYRIGHT.md file distributed with this source.
#
# See the LICENSE.md file at the top-level directory of this distribution and
# at https://raw.githubusercontent.com/RetroPie/RetroPie-Setup/master/LICENSE.md
#
rp_module_id="duckstation"
rp_module_desc="PlayStation emulator DuckStation"
rp_module_help="ROM Extensions: .pbp .cue .bin .chd .img .ecm .mds .mdf\n\nCopy your PlayStation roms to $romdir/psx\n\nCopy the required BIOS file to $biosdir"
rp_module_licence="GPL3 https://raw.githubusercontent.com/stenzek/duckstation/master/LICENSE"
rp_module_section="exp"
rp_module_flags=""
function depends_duckstation() {
local depends=(cmake libsdl2-dev libsnappy-dev pkg-config libevdev-dev libgbm-dev libdrm-dev)
getDepends "${depends[@]}"
}
function sources_duckstation() {
gitPullOrClone "$md_build" https://github.com/stenzek/duckstation.git
}
function build_duckstation() {
local params=(-DCMAKE_BUILD_TYPE=Release -DENABLE_DISCORD_PRESENCE=OFF -DBUILD_NOGUI_FRONTEND=ON -DBUILD_QT_FRONTEND=OFF)
if isPlatform "x11"; then
params+=(-DUSE_X11=ON)
else
params+=(-DUSE_X11=OFF)
fi
if isPlatform "kms"; then
params+=(-DUSE_DRMKMS=ON)
else
params+=(-DUSE_DRMKMS=OFF)
fi
cmake "${params[@]}" .
make clean
make
md_ret_require="$md_build/bin/duckstation-nogui"
}
function install_duckstation() {
md_ret_files=(
'LICENSE'
'README.md'
'bin'
)
}
function configure_duckstation() {
mkRomDir "psx"
local config="$md_conf_root/psx/duckstation.ini"
addEmulator 0 "$md_id" "psx" "$md_inst/bin/duckstation-nogui -portable -settings $config -- %ROM%"
addSystem "psx"
[[ "$md_mode" == "remove" ]] && return
# set config defaults
local tmp_config="$(mktemp)"
iniConfig " = " "" "$tmp_config"
if ! grep -q "\[Main\]" "$tmp_config"; then
echo "[Main]" >> "$tmp_config"
fi
# SettingsVersion = 3 stops overwrite of any settings when version number doesn't match
iniSet "SettingsVersion" "3"
if ! grep -q "\[BIOS\]" "$tmp_config"; then
echo "[BIOS]" >> "$tmp_config"
fi
iniSet "SearchDirectory" "$biosdir"
if ! grep -q "\[MemoryCards\]" "$tmp_config"; then
echo "[MemoryCards]" >> "$tmp_config"
fi
iniSet "Directory" "$romdir/psx"
if ! grep -q "\[Display\]" "$tmp_config"; then
echo "[Display]" >> "$tmp_config"
fi
iniSet "LinearFiltering" "false"
iniSet "Directory" "$romdir/psx"
if ! grep -q "\[Hotkeys\]" "$tmp_config"; then
echo "[Hotkeys]" >> "$tmp_config"
fi
iniSet "OpenQuickMenu" "Keyboard/Escape"
copyDefaultConfig "$tmp_config" "$config"
rm "$tmp_config"
}

View file

@ -12,8 +12,8 @@
rp_module_id="hatari"
rp_module_desc="Atari emulator Hatari"
rp_module_help="ROM Extensions: .st .stx .img .rom .raw .ipf .ctr .zip\n\nCopy your Atari ST games to $romdir/atarist\n\nCopy Atari ST BIOS (tos.img) to $biosdir"
rp_module_licence="GPL2 https://git.tuxfamily.org/hatari/hatari.git/plain/gpl.txt"
rp_module_repo="git git://git.tuxfamily.org/gitroot/hatari/hatari.git v2.3.1"
rp_module_licence="GPL2 https://raw.githubusercontent.com/hatari/hatari/master/gpl.txt"
rp_module_repo="git https://github.com/hatari/hatari v2.4.1"
rp_module_section="opt"
rp_module_flags=""

View file

@ -15,7 +15,7 @@ rp_module_help="ROM Extensions: .int .bin .rom\n\nCopy your Intellivision roms t
rp_module_licence="GPL2 http://spatula-city.org/%7Eim14u2c/intv/"
rp_module_repo="file $__archive_url/jzintv-20200712-src.zip"
rp_module_section="opt"
rp_module_flags="sdl2"
rp_module_flags="sdl2 nodistcc"
function depends_jzintv() {
getDepends libsdl2-dev libreadline-dev
@ -45,7 +45,7 @@ function build_jzintv() {
cd jzintv/src
make clean
DISTCC_HOSTS="" make
make
md_ret_require="$md_build/jzintv/bin/jzintv"
}

View file

@ -18,6 +18,11 @@ rp_module_section="exp"
rp_module_flags="!mali !armv6"
function _get_branch_mame() {
# starting with 0.265, GCC 10.3 or later is required for full C++17 support
if [[ "$__gcc_version" -lt 10 ]]; then
echo "mame0264"
return
fi
download https://api.github.com/repos/mamedev/mame/releases/latest - | grep -m 1 tag_name | cut -d\" -f4
}

View file

@ -15,7 +15,7 @@ rp_module_help="ROM Extensions: .z64 .n64 .v64\n\nCopy your N64 roms to $romdir/
rp_module_licence="GPL2 https://raw.githubusercontent.com/mupen64plus/mupen64plus-core/master/LICENSES"
rp_module_repo=":_pkg_info_mupen64plus"
rp_module_section="main"
rp_module_flags="sdl2"
rp_module_flags="sdl2 nodistcc"
function depends_mupen64plus() {
local depends=(cmake libsamplerate0-dev libspeexdsp-dev libsdl2-dev libpng-dev libfreetype6-dev fonts-freefont-ttf libboost-filesystem-dev)
@ -169,14 +169,14 @@ function build_mupen64plus() {
isPlatform "x86" && params+=("SSE=SSE2")
isPlatform "armv6" && params+=("HOST_CPU=armv6")
isPlatform "armv7" && params+=("HOST_CPU=armv7")
isPlatform "armv8" && params+=("HOST_CPU=armv8")
isPlatform "aarch64" && params+=("HOST_CPU=aarch64")
# we don't ship a Vulkan enabled front-end, so disable Vulkan in the core project
params+=("VULKAN=0")
[[ "$dir" == "mupen64plus-ui-console" ]] && params+=("COREDIR=$md_inst/lib/" "PLUGINDIR=$md_inst/lib/mupen64plus/")
make -C "$dir/projects/unix" "${params[@]}" clean
# temporarily disable distcc due to segfaults with cross compiler and lto
DISTCC_HOSTS="" make -C "$dir/projects/unix" all "${params[@]}" OPTFLAGS="$CFLAGS -O3 -flto"
make -C "$dir/projects/unix" all "${params[@]}" OPTFLAGS="$CFLAGS -O3 -flto"
fi
done

View file

@ -12,7 +12,7 @@
rp_module_id="retroarch"
rp_module_desc="RetroArch - frontend to the libretro emulator cores - required by all lr-* emulators"
rp_module_licence="GPL3 https://raw.githubusercontent.com/libretro/RetroArch/master/COPYING"
rp_module_repo="git https://github.com/retropie/RetroArch.git retropie-v1.16.0"
rp_module_repo="git https://github.com/retropie/RetroArch.git retropie-v1.18.0"
rp_module_section="core"
function depends_retroarch() {
@ -282,6 +282,13 @@ function configure_retroarch() {
# enable video shaders
iniSet "video_shader_enable" "true"
# enable overlays by default
iniSet "input_overlay_enable" "true"
# disable save paths under sub-folders
iniSet "sort_savestates_enable" "false"
iniSet "sort_savefiles_enable" "false"
copyDefaultConfig "$config" "$configdir/all/retroarch.cfg"
rm "$config"
@ -313,6 +320,13 @@ function configure_retroarch() {
# don't save input remaps by default
_set_config_option_retroarch "remap_save_on_exit" "false"
# enable overlays by default on upgrades
_set_config_option_retroarch "input_overlay_enable" "true"
# don't sort save files in sub-folders
_set_config_option_retroarch "sort_savefiles_enable" "false"
_set_config_option_retroarch "sort_savestates_enable" "false"
# remapping hack for old 8bitdo firmware
addAutoConf "8bitdo_hack" 0
}
@ -338,7 +352,7 @@ function keyboard_retroarch() {
local value
local values
readarray -t values <<<"$choice"
iniConfig " = " "" "$configdir/all/retroarch.cfg"
iniConfig " = " '"' "$configdir/all/retroarch.cfg"
i=0
for value in "${values[@]}"; do
iniSet "${key[$i]}" "$value" >/dev/null
@ -438,7 +452,7 @@ function _set_config_option_retroarch()
{
local option="$1"
local value="$2"
iniConfig " = " "\"" "$configdir/all/retroarch.cfg"
iniConfig " = " '"' "$configdir/all/retroarch.cfg"
iniGet "$option"
if [[ -z "$ini_value" ]]; then
iniSet "$option" "$value"

View file

@ -13,7 +13,7 @@ rp_module_id="scummvm"
rp_module_desc="ScummVM"
rp_module_help="Copy your ScummVM games to $romdir/scummvm"
rp_module_licence="GPL3 https://raw.githubusercontent.com/scummvm/scummvm/master/COPYING"
rp_module_repo="git https://github.com/scummvm/scummvm.git v2.8.0"
rp_module_repo="git https://github.com/scummvm/scummvm.git v2.8.1"
rp_module_section="opt"
rp_module_flags="sdl2"

View file

@ -0,0 +1,55 @@
#!/usr/bin/env bash
# This file is part of The RetroPie Project
#
# The RetroPie Project is the legal property of its developers, whose names are
# too numerous to list here. Please refer to the COPYRIGHT.md file distributed with this source.
#
# See the LICENSE.md file at the top-level directory of this distribution and
# at https://raw.githubusercontent.com/RetroPie/RetroPie-Setup/master/LICENSE.md
#
rp_module_id="lr-dirksimple"
rp_module_desc="laserdisc emu - DirkSimple"
rp_module_help="ROM Extensions: .ogv .dirksimple\n\nCopy your laserdisc movies in Ogg Theora format to $romdir/daphne"
rp_module_licence="zlib https://raw.githubusercontent.com/icculus/DirkSimple/main/LICENSE.txt"
rp_module_repo="git https://github.com/icculus/DirkSimple.git main"
rp_module_section="exp"
function depends_lr-dirksimple() {
getDepends cmake
}
function sources_lr-dirksimple() {
gitPullOrClone
}
function build_lr-dirksimple() {
rm -fr build && mkdir build
cd build
cmake -DDIRKSIMPLE_LIBRETRO=ON -DDIRKSIMPLE_SDL=OFF ..
make dirksimple_libretro
md_ret_require="$md_build/build/dirksimple_libretro.so"
}
function install_lr-dirksimple() {
md_ret_files=(
'build/dirksimple_libretro.so'
'data'
'LICENSE.txt'
)
}
function configure_lr-dirksimple() {
mkRomDir "daphne"
defaultRAConfig "daphne"
rm -rf "$biosdir/DirkSimple"
mkUserDir "$biosdir/DirkSimple"
cp -rf "$md_inst/data" "$biosdir/DirkSimple/"
chown -R $user:$user "$biosdir/DirkSimple"
addEmulator 0 "$md_id" "daphne" "$md_inst/dirksimple_libretro.so"
addSystem "daphne"
}

View file

@ -13,12 +13,19 @@ rp_module_id="lr-mame"
rp_module_desc="MAME emulator - MAME (current) port for libretro"
rp_module_help="ROM Extension: .zip\n\nCopy your MAME roms to either $romdir/mame-libretro or\n$romdir/arcade"
rp_module_licence="GPL2 https://raw.githubusercontent.com/libretro/mame/master/COPYING"
rp_module_repo="git https://github.com/libretro/mame.git master"
rp_module_repo="git https://github.com/libretro/mame.git master :_get_version_lr-mame"
rp_module_section="exp"
rp_module_flags=""
function _get_version_lr-mame() {
local tagname
if [[ "$__gcc_version" -lt 10 ]]; then
tagname="lrmame0264"
fi
echo "$tagname"
}
function _get_params_lr-mame() {
local params=(OSD=retro RETRO=1 NOWERROR=1 OS=linux OPTIMIZE=2 TARGETOS=linux CONFIG=libretro NO_USE_MIDI=1 NO_USE_PORTAUDIO=1 TARGET=mame)
local params=(OSD=retro RETRO=1 PYTHON_EXECUTABLE=python3 NOWERROR=1 OS=linux OPTIMIZE=2 TARGETOS=linux CONFIG=libretro NO_USE_MIDI=1 NO_USE_PORTAUDIO=1 TARGET=mame)
isPlatform "64bit" && params+=(PTR64=1)
echo "${params[@]}"
}

View file

@ -13,7 +13,7 @@ rp_module_id="lr-mess"
rp_module_desc="MESS emulator - MESS Port for libretro"
rp_module_help="see wiki for detailed explanation"
rp_module_licence="GPL2 https://raw.githubusercontent.com/libretro/mame/master/COPYING"
rp_module_repo="git https://github.com/libretro/mame.git master"
rp_module_repo="git https://github.com/libretro/mame.git master :_get_version_lr-mame"
rp_module_section="exp"
rp_module_flags=""

View file

@ -14,7 +14,7 @@ rp_module_desc="Sega 8/16 bit emu - picodrive arm optimised libretro core"
rp_module_help="ROM Extensions: .32x .iso .cue .sms .smd .bin .gen .md .sg .zip\n\nCopy your Megadrive / Genesis roms to $romdir/megadrive\nMasterSystem roms to $romdir/mastersystem\nSega 32X roms to $romdir/sega32x and\nSegaCD roms to $romdir/segacd\nThe Sega CD requires the BIOS files us_scd1_9210.bin, eu_mcd1_9210.bin, jp_mcd1_9112.bin copied to $biosdir"
rp_module_licence="NONCOM https://raw.githubusercontent.com/libretro/picodrive/master/COPYING"
rp_module_repo="git https://github.com/libretro/picodrive.git master"
rp_module_section="main"
rp_module_section="main nodistcc"
function sources_lr-picodrive() {
gitPullOrClone

View file

@ -14,7 +14,7 @@ rp_module_desc="Super Nintendo emu - Snes9x (current) port for libretro"
rp_module_help="ROM Extensions: .bin .smc .sfc .fig .swc .mgd .zip\n\nCopy your SNES roms to $romdir/snes"
rp_module_licence="NONCOM https://raw.githubusercontent.com/libretro/snes9x/master/LICENSE"
rp_module_repo="git https://github.com/libretro/snes9x.git master"
rp_module_section="main armv6=opt armv7=opt"
rp_module_section="main armv6=opt armv7=opt nodistcc"
function sources_lr-snes9x() {
gitPullOrClone
@ -26,8 +26,7 @@ function build_lr-snes9x() {
cd libretro
make "${params[@]}" clean
# temporarily disable distcc due to segfaults with cross compiler and lto
DISTCC_HOSTS="" make "${params[@]}"
make "${params[@]}"
md_ret_require="$md_build/libretro/snes9x_libretro.so"
}

View file

@ -112,6 +112,16 @@ function rp_callModule() {
return 3
fi
# skip for modules 'builder' and 'setup' so that distcc settings do not propagate from them
if [[ "$md_id" != "builder" && "$md_id" != "setup" ]]; then
# if distcc is used and the module doesn't exclude it, add /usr/lib/distcc to PATH and MAKEFLAGS
if [[ -n "$DISTCC_HOSTS" ]] && ! hasFlag "${__mod_info[$md_id/flags]}" "nodistcc"; then
# use local variables so they are available to all child functions without changing the globals
local PATH="/usr/lib/distcc:$PATH"
local MAKEFLAGS="$MAKEFLAGS PATH=$PATH"
fi
fi
# parameters _auto_ _binary or _source_ (_source_ is used if no parameters are given for a module)
case "$mode" in
# install the module if not installed, and update if it is

View file

@ -0,0 +1,43 @@
#!/usr/bin/env bash
# This file is part of The RetroPie Project
#
# The RetroPie Project is the legal property of its developers, whose names are
# too numerous to list here. Please refer to the COPYRIGHT.md file distributed with this source.
#
# See the LICENSE.md file at the top-level directory of this distribution and
# at https://raw.githubusercontent.com/RetroPie/RetroPie-Setup/master/LICENSE.md
#
rp_module_id="kmsxx"
rp_module_desc="library and utilities for Linux kernel mode setting"
rp_module_licence="MPL2 https://raw.githubusercontent.com/cmitu/kmsxx/master/LICENSE"
rp_module_repo="git https://github.com/cmitu/kmsxx retropie"
rp_module_section="depends"
rp_module_flags=""
function depends_kmsxx() {
getDepends meson ninja-build libdrm-dev libfmt-dev pkg-config
}
function sources_kmsxx() {
gitPullOrClone
}
function build_kmsxx() {
rm -fr build
meson setup --prefix="$md_inst" -Dbuildtype=release -Ddefault_library=static -Domap=disabled -Dpykms=disabled -Dkmscube=false build
ninja -C build
md_ret_require="$md_build/build/utils/kmsprint-rp"
}
function install_kmsxx() {
md_ret_files=(
build/utils/kmsprint-rp
build/utils/kmsprint
build/utils/kmsview
build/utils/kmsblank
build/utils/fbtest
)
}

View file

@ -52,7 +52,7 @@ function install_bin_runcommand() {
# needed for KMS modesetting (debian buster or later only)
if [[ "$__os_debian_ver" -ge 10 ]]; then
rp_installModule "mesa-drm" "_autoupdate_"
rp_installModule "kmsxx" "_autoupdate_"
fi
md_ret_require="$md_inst/runcommand.sh"

View file

@ -90,7 +90,7 @@ JOY2KEY="$ROOTDIR/admin/joy2key/joy2key"
# modesetting tools
TVSERVICE="/opt/vc/bin/tvservice"
KMSTOOL="$ROOTDIR/supplementary/mesa-drm/modetest"
KMSTOOL="$ROOTDIR/supplementary/kmsxx/kmsprint-rp"
XRANDR="xrandr"
source "$ROOTDIR/lib/inifuncs.sh"
@ -129,7 +129,7 @@ function get_config() {
if [[ -n "$DISPLAY" ]] && $XRANDR &>/dev/null; then
HAS_MODESET="x11"
# copy kms tool output to global variable to avoid multiple invocations
elif [[ -c /dev/dri/card0 ]] && KMS_BUFFER="$($KMSTOOL -r 2>/dev/null)"; then
elif [[ -c /dev/dri/card0 ]] && KMS_BUFFER="$($KMSTOOL 2>/dev/null)"; then
HAS_MODESET="kms"
elif [[ -f "$TVSERVICE" ]]; then
HAS_MODESET="tvs"
@ -241,37 +241,23 @@ function get_all_tvs_modes() {
function get_all_kms_modes() {
declare -Ag MODE
local default_mode="$(echo "$KMS_BUFFER" | grep -Em1 "^Mode:.*(driver|userdef).*crtc")"
local crtc="$(echo "$default_mode" | awk '{ print $(NF-1) }')"
local crtc_encoder="$(echo "$KMS_BUFFER" | grep "Encoder map:" | awk -v crtc="$crtc" '$5 == crtc { print $3 }')"
local info
local line
local mode_id
default_mode="$(echo "$KMS_BUFFER" | grep -Em1 "^Mode: [0-9]+ crtc")"
crtc="$(echo "$default_mode" | cut -d' ' -f 4)"
crtc_encoder="$(echo "$KMS_BUFFER" | grep "Encoder map:" | awk -v crtc="$crtc" '$5 == crtc { print $3 }')"
# add default mode as fallback in case real mode cannot be mapped
MODE[def-def]="$(echo "$default_mode" | awk '{--NF --NF --NF; print}' | cut -c7-)"
MODE[def-def]="$(echo "$default_mode" | cut -d' ' -f5-)"
while read -r line; do
# encoder id
encoder_id="$(echo "$line" | awk '{ print $(NF-1) }')"
# parse only the video modes connected to the current active crtc
while read -r mode_str mode_id con encoder_id info; do
# we only need 2nd column (mode index) and the 5+ columns (resolution info)
# populate resolution info into arrays (using mapped crtc encoder value)
MODE_ID+=($crtc-$mode_id)
MODE[$crtc-$mode_id]="$info"
# only match encoders that are linked to the currently active crtc
if [[ "$encoder_id" == "$crtc_encoder" ]]; then
# mode id
mode_id="$(echo "$line" | awk '{ print $NF }')"
# make output more human-readable
info="$(echo "$line" | awk '{--NF --NF --NF; print}' | cut -c7-)"
# populate resolution into arrays (using mapped crtc encoder value)
MODE_ID+=($crtc-$mode_id)
MODE[$crtc-$mode_id]="$info"
# if string matches default mode, add a special mapped entry
[[ "$default_mode" =~ "$info" ]] && MODE[map-map]="$crtc $mode_id"
fi
done < <(echo "$KMS_BUFFER" | grep "Mode:" | grep "connector")
# if string matches default mode, add a special mapped entry
[[ "$default_mode" =~ "$info" ]] && MODE[map-map]="$crtc $mode_id"
done < <(echo "$KMS_BUFFER" | grep -E "^Mode: [0-9]+ connector $crtc_encoder")
}
function get_all_x11_modes()
@ -373,7 +359,7 @@ function get_kms_mode_info() {
fi
fi
# split resolution
# split resolution (1st column)
status=(${MODE[${mode_id[0]}-${mode_id[1]}]/x/ })
# get crtc id
@ -384,13 +370,14 @@ function get_kms_mode_info() {
# get mode resolution
mode_info[2]="${status[0]}"
mode_info[3]="${status[1]}"
# yres may have an ending 'i'(nterlace) flag
mode_info[3]="${status[1]/i/}"
# get aspect ratio
# get aspect ratio (5th column)
mode_info[4]="${status[5]}"
# get refresh rate
mode_info[5]="${status[3]}"
# get refresh rate (4th column, remove surrounding brackets)
mode_info[5]="${status[4]//[()]/}"
echo "${mode_info[@]}"
}
@ -1091,7 +1078,8 @@ function retroarch_append_config() {
touch "$conf"
iniConfig " = " '"' "$conf"
if [[ -n "$HAS_MODESET" && "${MODE_CUR[5]}" -gt 0 ]]; then
# strip any suffix decimals appearing in refresh rate, just for comparison
if [[ -n "$HAS_MODESET" && "${MODE_CUR[5]%.*}" -gt 0 ]]; then
# set video_refresh_rate in our config to the same as the screen refresh
iniSet "video_refresh_rate" "${MODE_CUR[5]}"
fi

View file

@ -290,17 +290,21 @@ function _init_config_skyscraper() {
rm -f "$home/.bash_completion.d/Skyscraper.bash"
}
# Scrape one system, passed as parameter
function _scrape_skyscraper() {
local system="$1"
# read scriptmodule's skyscraper.cfg and prepare the command line parameters
function _get_clioptions_skyscraper() {
local system=$1
local scrape_module=$2
[[ -z "$system" ]] && return
local params=()
local flags
iniConfig " = " '"' "$configdir/all/skyscraper.cfg"
eval $(_load_config_skyscraper)
local -a params=(-p "$system")
local flags="unattend,skipped,"
[[ "$system" != "<platform>" ]] && system=\"$system\"
params+=(-p "$system")
flags="unattend,skipped,"
[[ "$download_videos" -eq 1 ]] && flags+="videos,"
@ -330,7 +334,7 @@ function _scrape_skyscraper() {
# If 2nd parameter is unset, use the configured scraping source, otherwise scrape from cache.
# Scraping from cache means we can omit '-s' from the parameter list.
if [[ -z "$2" ]]; then
if [[ -z "$scrape_module" ]]; then
params+=(-s "$scrape_source")
fi
@ -340,11 +344,24 @@ function _scrape_skyscraper() {
flags=${flags::-1}
params+=(--flags "$flags")
echo "${params[@]}"
}
# Scrape one system, passed as parameter
function _scrape_skyscraper() {
local system="$1"
local scrape_module="$2"
[[ -z "$system" ]] && return
local params
params=$(_get_clioptions_skyscraper "$system" "$scrape_module")
declare -a "params_arr=($params)"
# trap ctrl+c and return if pressed (rather than exiting retropie-setup etc)
trap 'trap 2; return 1' INT
sudo -u "$user" stdbuf -o0 "$md_inst/Skyscraper" "${params[@]}"
echo -e "\nCOMMAND LINE USED:\n $md_inst/Skyscraper" "${params[@]}"
sudo -u "$user" stdbuf -o0 "$md_inst/Skyscraper" "${params_arr[@]}"
echo -e "\nCOMMAND LINE USED:\n $md_inst/Skyscraper" "${params}"
sleep 2
trap 2
}
@ -377,14 +394,24 @@ function _scrape_chosen_skyscraper() {
[[ ${#choices[@]} -eq 0 || $? -eq 1 ]] && return 1
# Confirm with the user that scraping can start
dialog --clear --colors --yes-label "Proceed" --no-label "Abort" --yesno "This will start the gathering process, which can take a long time if you have a large game collection.\n\nYou can interrupt this process anytime by pressing \ZbCtrl+C\Zn.\nProceed ?" 12 70 2>&1 >/dev/tty
local cli=("$md_inst/Skyscraper ")
cli+=$(_get_clioptions_skyscraper "<platform>" "")
local sky_cmd
sky_cmd=$(echo "${cli[@]}" | sed 's/ -/ \\\\n -/g')
local msg="This will start the gathering process, which can take a long time if you have a large game collection.\n\n"
msg+="You can interrupt this process anytime by pressing \ZbCtrl+C\Zn.\n\n"
msg+="For each selected <platform> Skyscraper is run with these commandline options:\n\n$sky_cmd"
dialog --clear --colors --yes-label "Proceed" --no-label "Abort" --yesno "$msg" 20 70 2>&1 >/dev/tty
[[ ! $? -eq 0 ]] && return 1
local choice
for choice in "${choices[@]}"; do
choice="${options[choice*3-2]}"
_scrape_skyscraper "$choice" "$@"
_scrape_skyscraper "$choice" ""
done
}
@ -417,7 +444,7 @@ function _generate_chosen_skyscraper() {
for choice in "${choices[@]}"; do
choice="${options[choice*3-2]}"
_scrape_skyscraper "$choice" "cache" "$@"
_scrape_skyscraper "$choice" "cache"
done
}
@ -520,8 +547,10 @@ function gui_skyscraper() {
[1]=screenscraper
[2]=arcadedb
[3]=thegamesdb
[4]=openretro
[5]=worldofspectrum
[4]=mobygames
[5]=openretro
[6]=igdb
[7]=worldofspectrum
)
s_source+=(
[10]=esgamelist
@ -532,8 +561,10 @@ function gui_skyscraper() {
[1]=ScreenScraper
[2]=ArcadeDB
[3]=TheGamesDB
[4]=OpenRetro
[5]="World of Spectrum"
[4]=MobyGames
[5]=OpenRetro
[6]="Internet Game Database"
[7]="World of Spectrum"
)
s_source_names+=(
[10]="EmulationStation Gamelist"

View file

@ -145,12 +145,6 @@ function conf_build_vars() {
export ASFLAGS="$__asflags"
export MAKEFLAGS="$__makeflags"
# if using distcc, add /usr/lib/distcc to PATH/MAKEFLAGS
if [[ -n "$DISTCC_HOSTS" ]]; then
PATH="/usr/lib/distcc:$PATH"
MAKEFLAGS+=" PATH=$PATH"
fi
# if __use_ccache is set, then add ccache to PATH/MAKEFLAGS
if [[ "$__use_ccache" -eq 1 ]]; then
PATH="/usr/lib/ccache:$PATH"