From f0206e0191359e5a77656c38ee8dbc73100a8a5e Mon Sep 17 00:00:00 2001 From: Peppersawce <157759066+Peppersawce@users.noreply.github.com> Date: Thu, 10 Apr 2025 09:27:17 +0000 Subject: [PATCH] Doom source ports + Data packages (#12084) * PrBoom+: Fluidsynth, Portmidi & Alsa music now work, SDL is still sound only. - Made Fluidsynth default. - updated search paths. - engine:doom to be used with doom data packs * Chocolate Doom: Updated to 3.1.0 - patched in search paths - engine:doom and engine:doom_extra to be used with doom, heretic/hexen/strife data packs * Data packages for: Doom Shareware, Freedoom+FreeDM, Hacx, Chex Quest --- .../additional-files/chexquest.rdef.in | 62 ++++++++++ .../chexquest/additional-files/chexquest.sh | 96 +++++++++++++++ games-fps/chexquest/chexquest-1.0.recipe | 64 ++++++++++ ...0.1.recipe => chocolate_doom-3.1.0.recipe} | 74 ++++++------ .../additional-files/doom_shareware.rdef.in | 109 ++++++++++++++++++ .../additional-files/doom_shareware.sh | 76 ++++++++++++ .../doom_shareware/doom_shareware-1.9.recipe | 53 +++++++++ .../additional-files/freedoom.rdef.in | 62 ++++++++++ .../freedoom/additional-files/freedoom.sh | 100 ++++++++++++++++ games-fps/freedoom/freedoom-0.13.0.recipe | 62 ++++++++++ games-fps/hacx/additional-files/hacx.rdef.in | 62 ++++++++++ games-fps/hacx/additional-files/hacx.sh | 76 ++++++++++++ games-fps/hacx/hacx-1.2.recipe | 58 ++++++++++ .../additional-files/prboom_plus.rdef.in | 2 +- .../patches/prboom_plus-2.6.66.patchset | 28 +++-- .../prboom-plus/prboom_plus-2.6.66.recipe | 40 +++---- 16 files changed, 953 insertions(+), 71 deletions(-) create mode 100644 games-fps/chexquest/additional-files/chexquest.rdef.in create mode 100644 games-fps/chexquest/additional-files/chexquest.sh create mode 100644 games-fps/chexquest/chexquest-1.0.recipe rename games-fps/chocolate-doom/{chocolate_doom-3.0.1.recipe => chocolate_doom-3.1.0.recipe} (58%) create mode 100644 games-fps/doom_shareware/additional-files/doom_shareware.rdef.in create mode 100644 games-fps/doom_shareware/additional-files/doom_shareware.sh create mode 100644 games-fps/doom_shareware/doom_shareware-1.9.recipe create mode 100644 games-fps/freedoom/additional-files/freedoom.rdef.in create mode 100644 games-fps/freedoom/additional-files/freedoom.sh create mode 100644 games-fps/freedoom/freedoom-0.13.0.recipe create mode 100644 games-fps/hacx/additional-files/hacx.rdef.in create mode 100644 games-fps/hacx/additional-files/hacx.sh create mode 100644 games-fps/hacx/hacx-1.2.recipe diff --git a/games-fps/chexquest/additional-files/chexquest.rdef.in b/games-fps/chexquest/additional-files/chexquest.rdef.in new file mode 100644 index 000000000..62e8e39fe --- /dev/null +++ b/games-fps/chexquest/additional-files/chexquest.rdef.in @@ -0,0 +1,62 @@ +resource app_version { + major = @MAJOR@, + middle = @MIDDLE@, + minor = 0, + + short_info = "Chex Quest", + long_info = "@LONG_INFO@" +}; + +resource large_icon array { + $"FFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFF0000B8B8B8B8B8B8B8B8B8B8B8000000FFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFF00B8B8B8E8E8E8E8E8E8E8E8E8E8E8E80000FFFFFFFFFFFFFF" + $"FFFFFFFFFFFF00B8B8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E80000FFFFFFFFFFFF" + $"FFFFFFFFFF00B8B8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E80000FFFFFFFFFF" + $"FFFFFFFF00B8B8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E80000FFFFFFFF" + $"FFFFFF00B8B8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E80000FFFFFF" + $"FFFF00B8B8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E80000FFFF" + $"FFFF00B8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E80000FFFF" + $"FF00B8B8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E80000FF" + $"FF00B8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E80000FF" + $"FF00B8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E80000FF" + $"FF00B8E8E8E8E8E8E8E8E8E8E800000000B8E8E8E8E8E8E8E8E8E8E8E80000FF" + $"FF00B8E8E8E8E8E8E8E8E8E8000000000000B8E8E8E8E8E8E8E8E8E8E80000FF" + $"FF00B8E8E8E8E8E8E8E8E800000000FFFF00B8E8E8E8E8E8E8E8E8E8E80000FF" + $"FF00B8E8E8E8E8E8E8E8E800000000000000B8E8E8E8E8E8E8E8E8E8E80000FF" + $"FF00B8E8E8E8E8E8E8E8E8000000FAFAFA00B8E8E8E8E8E8E8E8E8E8E80000FF" + $"FF00B8E8E8E8E8E8E8E8E8E8000000FAFAFA00E8E8E8E8E8E8E8E8E8E80000FF" + $"FF00B8E8E8E8E8E8E8E8E8E8B8000000FAFAFA00E8E8E8E8E8E8E8E8E80000FF" + $"FF00B8E8E8E8E8E8E8E8E8E8E8B8B8B800FAFAFA00E8E8E8E8E8E8E8E80000FF" + $"FF0000E8E8E8E8E8E8E8E8E8E8E8E8E8E800FAFAFA00E8E8E8E8E8E8000000FF" + $"FFFF00B8E8E8E8E8E8E8E8E8E8E8E8E80000FAFAFAFA00E8E8E8E8E8000000FF" + $"FFFF0000E8E8E8E8E8E8E8E8E8E8E800FAFAFAFAFAFAFA00E8E8E8000000FFFF" + $"FFFFFF0000E8E8E8E8E8E8E8E8E8E8E800FAFAFAFAFAFAFA00E800000000FFFF" + $"FFFFFFFF0000E8E8E8E8E8E8E8E8E8E8E800FAFAFAFA0000E800000000FFFFFF" + $"FFFFFFFFFF0000E8E8E8E8E8E8E8E8E8E8E800FAFAFA00E800000000FFFFFFFF" + $"FFFFFFFFFFFF0000E8E8E8E8E8E8E8E8E8E8E800FAFAFA00000000FFFFFFFFFF" + $"FFFFFFFFFFFFFF000000E8E8E8E8E8E8E8E8E8E800FAFAFA0000FFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFF00000000000000000000000000FAFAFA00FFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFF00000000000000000000000000FAFAFA00FFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FAFAFA00FFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFF" +}; + +resource mini_icon array { + $"FFFFFFFF00E1E1E1E1E1E800FFFFFFFF" + $"FFFFFFE8B8E8E8E8E8E8E8EF00FFFFFF" + $"FFFFE8B8E8E8E8E8E8E8E8E8EF00FFFF" + $"FFE8B8E8E8E8E8E8E8E8E8E8E8EF00FF" + $"FFE1E8E8E8E8E8E8E8E8E8E8E8E8F6FF" + $"00E1E8E8E8E8E8E8E8E8E8E8E8E8EF00" + $"00E1E8E8E8E8F600E8E8E8E8E8E8EF00" + $"00E1E8E8E8EF000000E1E8E8E8E8EF00" + $"00E1E8E8E8EF006565E8E8E8E8E8EF00" + $"00E1E8E8E8E8E1E16565EFE8E8E8EF00" + $"FFE8E8E8E8E8E8E8F6FA65EFE8E80000" + $"FF00EFE8E8E8E8EF65FAFA65EFF600FF" + $"FFFF00EFE8E8E8E8EF65FAF6F600FFFF" + $"FFFFFF00EFE8E8E8E8EF656500FFFFFF" + $"FFFFFFFFFF0000000000006565FFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFF658BFFFF" +}; diff --git a/games-fps/chexquest/additional-files/chexquest.sh b/games-fps/chexquest/additional-files/chexquest.sh new file mode 100644 index 000000000..df198a2d3 --- /dev/null +++ b/games-fps/chexquest/additional-files/chexquest.sh @@ -0,0 +1,96 @@ +#!/bin/bash + +wad="$(finddir B_SYSTEM_DATA_DIRECTORY)/doomdata/chex.wad" +chex2wad="$(finddir B_SYSTEM_DATA_DIRECTORY)/doomdata/chex2.wad" + +if [ ! -e $wad ]; then + wad="$(finddir B_USER_DATA_DIRECTORY)/doomdata/chex.wad" + chex2wad="$(finddir B_USER_DATA_DIRECTORY)/doomdata/chex2.wad" + if [ ! -e $wad ]; then + alert --stop "Game data not found!" + exit 1 + fi +fi + +if [ "$1" = "1" ]; then + wadname="Chex Quest" + echo "$wadname selected" +elif [ "$1" = "2" ]; then + pwad="-file $chex2wad" + wadname="Chex Quest 2" + echo "$wadname selected" +fi + +if [ $(command -v chocolate-doom) ]; then + port1="chocolate-doom" + port1name="Chocolate Doom" + echo "Chocolate Doom detected" +fi + +if [ $(command -v GZDoom) ]; then + if [ "$port1" = "" ]; then + port1="GZDoom" + port1name=$port1 + elif [ "$port2" = "" ]; then + port2="GZDoom" + port2name=$port2 + fi + echo "GZDoom detected" +fi + +if [ -e $(finddir B_SYSTEM_APPS_DIRECTORY)/GZDoom/GZDoom ]; then + if [ "$port1" = "" ]; then + port1="$(finddir B_SYSTEM_APPS_DIRECTORY)/GZDoom/GZDoom" + port1name="GZDoom (Legacy)" + elif [ "$port2" = "" ]; then + port2="$(finddir B_SYSTEM_APPS_DIRECTORY)/GZDoom/GZDoom" + port2name="GZDoom (Legacy)" + fi + echo "GZDoom (Legacy) detected" +fi + +if [ $(command -v prboom-plus) ]; then + if [ "$port1" = "" ]; then + port1="prboom-plus" + port1name="PrBoom+" + elif [ "$port2" = "" ]; then + port2="prboom-plus" + port2name="PrBoom+" + elif [ "$port3" = "" ]; then + port3="prboom-plus" + port3name="PrBoom+" + fi + echo "PrBoom+ detected" +fi + +if [ "$port1" = "" ]; then + alert --stop "No Doom source port detected!" +else + if [ "$wadname" = "" ]; then + askwad=$(alert --idea "Choose between Chex Quest and Chex Quest 2" "Chex Quest" "Chex Quest 2") + if [ "$askwad" = "Chex Quest 2" ]; then + pwad="-file $chex2wad" + fi + wadname=$askwad + echo "$wadname selected" + fi + if [ "$port2" = "" ]; then + echo "Only one port detected, running it by default" + $port1 -iwad $wad $pwad $@ + else + askport="Multiple Doom source ports detected. Choose one to use with '$wadname'" + if [ "$port3" = "" ]; then + button=$(alert --idea "$askport" "$port1name" "$port2name") + else + button=$(alert --idea "$askport" "$port1name" "$port2name" "$port3name") + fi + echo "$button selected" + if [ "$button" = "$port1name" ]; then + $port1 -iwad $wad $pwad $@ + elif [ "$button" = "$port2name" ]; then + $port2 -iwad $wad $pwad $@ + elif [ "$button" = "$port3name" ]; then + $port3 -iwad $wad $pwad $@ + fi + fi +fi diff --git a/games-fps/chexquest/chexquest-1.0.recipe b/games-fps/chexquest/chexquest-1.0.recipe new file mode 100644 index 000000000..7e2cae29d --- /dev/null +++ b/games-fps/chexquest/chexquest-1.0.recipe @@ -0,0 +1,64 @@ +SUMMARY="Non-violent cereal-based FPS game" +DESCRIPTION="Chex Quest is a non-violent shooter originally intended as a Chex cereal promotion \ +and released for free in 1996, with a sequel in 1997. + +This package contains the Chex Quest game data along with Chex Quest 2 and a script that will \ +look for compatible Doom source ports installed. If only one is found the game will run directly, \ +if there are more installed a pop-up to select the preferred one will be shown." +HOMEPAGE="https://www.chexmix.com/chexquest/" +COPYRIGHT="1996 - 1997 Digital Café, General Mills" +LICENSE="Public Domain" +REVISION="1" +SOURCE_URI="http://www.doomlegends.com/chexquest/cqdos.zip" +CHECKSUM_SHA256="dacb82e7589dd9563303aa8ff3124d8dbebac83bbf8bef7867426c5355f31699" +SOURCE_DIR="" +SOURCE_URI_2="http://www.doomlegends.com/chexquest/cq2dos.zip" +CHECKSUM_SHA256_2="9311001295aa924ea4e0e40f51b475f2c4272bba938bb336c11d03d2daea6927" +SOURCE_DIR_2="chexquest2" +SOURCE_URI_3="ftp://ftp.fu-berlin.de/pc/games/idgames/themes/chex/chexdeh.zip" +CHECKSUM_SHA256_3="eeed61747165a4a90c792cf4ae4572593ff36a8f87d365af5107f68ed4000bad" +SOURCE_DIR_3="" +ADDITIONAL_FILES=" + chexquest.rdef.in + chexquest.sh + " + +ARCHITECTURES="any" +DISABLE_SOURCE_PACKAGE="yes" + +PROVIDES=" + chexquest = $portVersion + " +REQUIRES=" + engine:doom + " + +INSTALL() +{ + # Pack game data + mkdir -p $dataDir/doomdata && cp chex.wad $dataDir/doomdata + cp $sourceDir2/CHEX2.WAD $dataDir/doomdata/chex2.wad + cp $sourceDir3/chex.deh $dataDir/doomdata + + # Pack docs + mkdir -p $docDir && cp -t $docDir $sourceDir3/chexdeh.txt + + # Pack script + mkdir -p $appsDir/Chexquest && cp $portDir/additional-files/chexquest.sh $appsDir/Chexquest + chmod +x $appsDir/Chexquest/chexquest.sh + + # Generate the rdef + local MAJOR="`echo "$portVersion" | cut -b1`" + local MIDDLE="`echo "$portVersion" | cut -b3`" + local LONG_INFO="$SUMMARY" + sed \ + -e "s|@MAJOR@|$MAJOR|" \ + -e "s|@MIDDLE@|$MIDDLE|" \ + -e "s|@LONG_INFO@|$LONG_INFO|" \ + $portDir/additional-files/chexquest.rdef.in > chexquest.rdef + + # Iconize & link script + rc chexquest.rdef + resattr -o $appsDir/Chexquest/chexquest.sh chexquest.rsrc + addAppDeskbarSymlink $appsDir/Chexquest/chexquest.sh "Chex Quest" +} diff --git a/games-fps/chocolate-doom/chocolate_doom-3.0.1.recipe b/games-fps/chocolate-doom/chocolate_doom-3.1.0.recipe similarity index 58% rename from games-fps/chocolate-doom/chocolate_doom-3.0.1.recipe rename to games-fps/chocolate-doom/chocolate_doom-3.1.0.recipe index 73ce44bd2..b01c7bb24 100644 --- a/games-fps/chocolate-doom/chocolate_doom-3.0.1.recipe +++ b/games-fps/chocolate-doom/chocolate_doom-3.1.0.recipe @@ -1,27 +1,34 @@ SUMMARY="Doom source port that accurately reproduces the experience of Doom" DESCRIPTION="Chocolate Doom is a source port of the game Doom, by id Software. \ The purpose of Chocolate Doom is to be as compatible as possible with the \ -original DOS version of Doom." +original DOS version of Doom. + +Chocolate Doom also provides Chocolate Heretic, Hexen and Strife, accurate \ +source ports of their respective games. + +The binaries will look for .wad files in: +* ~/config/non-packaged/data/chocolate-doom +* ~/config/non-packaged/data/doomdata +* ~/config/non-packaged/data/doom +* ~/config/non-packaged/data/games/doom +* ~/doom +* /boot/system/non-packaged/data/doomdata +* Any compatible game data package +The binaries can be also used via command-line with the -iwad command. +Example: 'chocolate-doom -iwad /path/to/doom.wad'" HOMEPAGE="https://www.chocolate-doom.org/" COPYRIGHT="Id Software Inc. 1993-1996 Simon Howard James Haley Samuel Villarreal" LICENSE="GNU GPL v2" -REVISION="3" -SOURCE_URI="https://www.chocolate-doom.org/downloads/$portVersion/chocolate-doom-$portVersion.tar.gz" -CHECKSUM_SHA256="d435d6177423491d60be706da9f07d3ab4fabf3e077ec2a3fc216e394fcfc8c7" -SOURCE_DIR="chocolate-doom-$portVersion" +REVISION="1" +SOURCE_URI="https://github.com/chocolate-doom/chocolate-doom/archive/refs/tags/chocolate-doom-$portVersion.tar.gz" +CHECKSUM_SHA256="f2c64843dcec312032b180c3b2f34b4cb26c4dcdaa7375a1601a3b1df11ef84d" +SOURCE_DIR="chocolate-doom-chocolate-doom-$portVersion" ARCHITECTURES="all !x86_gcc2" - -commandSuffix=$secondaryArchSuffix -commandBinDir=$binDir -if [ $targetArchitecture == x86_gcc2 ]; then - SECONDARY_ARCHITECTURES="x86" - commandSuffix= - commandBinDir=$prefix/bin -fi +SECONDARY_ARCHITECTURES="x86" PROVIDES=" chocolate_doom$secondaryArchSuffix = $portVersion @@ -34,6 +41,8 @@ PROVIDES=" cmd:chocolate_server = $portVersion cmd:chocolate_strife = $portVersion cmd:chocolate_strife_setup = $portVersion + engine:doom + engine:doom_extra " REQUIRES=" haiku$secondaryArchSuffix @@ -47,6 +56,7 @@ REQUIRES=" BUILD_REQUIRES=" haiku${secondaryArchSuffix}_devel + #devel:libfluidsynth$secondaryArchSuffix # Optional, isn't found during build devel:libpng16$secondaryArchSuffix devel:libsamplerate$secondaryArchSuffix devel:libsdl2_2.0$secondaryArchSuffix @@ -55,55 +65,41 @@ BUILD_REQUIRES=" devel:libz$secondaryArchSuffix " BUILD_PREREQUIRES=" + cmd:aclocal + cmd:autoreconf cmd:awk cmd:gcc$secondaryArchSuffix - cmd:install cmd:ld$secondaryArchSuffix cmd:make cmd:pkg_config$secondaryArchSuffix - # Uncomment when updating to chocolate_doom > 3.0.1 - # cmd:python3 - cmd:sed + cmd:python3 " -defineDebugInfoPackage chocolate_doom$secondaryArchSuffix \ - $commandBinDir/chocolate-doom \ - $commandBinDir/chocolate-doom-setup \ - $commandBinDir/chocolate-hexen \ - $commandBinDir/chocolate-hexen-setup \ - $commandBinDir/chocolate-heretic \ - $commandBinDir/chocolate-heretic-setup \ - $commandBinDir/chocolate-server \ - $commandBinDir/chocolate-strife-setup \ - $commandBinDir/chocolate-strife - - BUILD() { + nonpackdatadir=$(finddir B_USER_NONPACKAGED_DATA_DIRECTORY) + homedir=$(finddir B_USER_DIRECTORY) + # Avoid "multiple definition" linker errors under "src/hexen/" export LDFLAGS="-z muldefs" + # Add specific paths via DOOMWADPATH + export DOOMWADPATH="$nonpackdatadir/doom:$nonpackdatadir/chocolate-doom:$homedir/doom:$(findpaths -c : B_FIND_PATH_DATA_DIRECTORY doomdata)" # "__dummy__" is just a placeholder, because the makefiles use "$docdir/../chocolate_xxx" docdir=$prefix/documentation/packages/chocolate_doom/__dummy__ + autogen.sh runConfigure --omit-dirs "binDir docDir" ./configure \ - --bindir=$commandBinDir \ + --bindir=$prefix/bin \ --docdir=$docdir - # Option available only on versions > 3.0.1, and with cmd:python3 available - # --with-bashcompletiondir=$dataDir/bash-completion/completions make $jobArgs } INSTALL() { - # Other install targets are: install-man install-data. Recheck when updating to > 3.0.1 - make install install-exec - - # For now, let's manually install unprocessed man pages (better than nothing): - mkdir -p $manDir/man5 $manDir/man6 - cp man/*.5 $manDir/man5 - cp man/*.6 $manDir/man6 + # Unused install targets are: install-data (contains icons) + make install install-exec install-man # clean-up rm -rf $prefix/share diff --git a/games-fps/doom_shareware/additional-files/doom_shareware.rdef.in b/games-fps/doom_shareware/additional-files/doom_shareware.rdef.in new file mode 100644 index 000000000..ea137c175 --- /dev/null +++ b/games-fps/doom_shareware/additional-files/doom_shareware.rdef.in @@ -0,0 +1,109 @@ +resource app_version { + major = @MAJOR@, + middle = @MIDDLE@, + minor = 0, + + short_info = "Doom - Shareware version", + long_info = "@LONG_INFO@" +}; + +resource vector_icon { + $"6E6369660203F05B6C031F212B170607FF1FC310C092C310C092C28EC0E4C188" + $"C188C20BC136C188C03CC188BDA4C188BEF0C188BD27C188BC2EC188BCAAC20B" + $"BC2EC310BC2EC28EBC2EC310BDA4C310C092C310BF1BC310C092C0920607FF1F" + $"BCF1BDA4BCF1BDA4BCF1BEF0BCF1C188BCF1C03CBC6FC136BB6AC092BBECC0E4" + $"BB6ABF1BBB6ABC2EBB6ABDA4BBECBC2EBCF1BC2EBC6FBC2EBCF1BCAABCF1BDA4" + $"BCF1BD27BCF1BDA4BDA40607FF1FB797C092B797C092B714C0FAB60FC1CAB691" + $"C162B60FC068B60FBDA4B60FBF06B60FBD27B60FBC2EB60FBCAAB691BC2EB797" + $"BC2EB714BC2EB797BDA4B797C092B797BF1BB797C092C092021AC92FB9A1C92F" + $"B9A1C8D8BA7AC82ABC2EC881BB54C7D3BB54C725B9A1C77CBA7AC67BB9A1C527" + $"B9A1C5D1B9A1C527B9A1C527B9A1C527B9A1C13AB9A130B9A1BD4DB9A130B9F8" + $"30BAA630BA4FB908BA4FB85AB9A1B8B1B9F8B6A7B9A1B341B9A1B4F4B9A1B382" + $"B9F8B405BAA6B3C3BA4FB405BEBAB405C6E3B405C2CFB5CEC57130C28EB797C3" + $"FFBAA6C351BD33C4D9BBECC415BDE1C457BF3DC351BE8FC3D4BFEBC3D4C147C4" + $"D9C099C457C28EC415C51AC28EC3D4C351C5C8C2FAC725C3D4C677C367C725C2" + $"FAC725C147C725C221C77CC1DFC82AC310C7D3C278C881C278C92FC147C8D8C1" + $"DFC92FC2A3C92FC55CC92FC3FFC9F3C5DECB7AC6E3CAB7C661CB7AC2CFCB7ABA" + $"A6CB7ABEBACBBCBA4FCC3EB9A1CBFDB9F8CB39B9A1C92FB9A1CA34B9A1C92FB9" + $"A1C92FB9A1C92FB9A1C92FB9A10225C970C539C970C539CA08C59ECB39C669CA" + $"A1C604CB39C27ECB39BAA6CB39BE92CB39BA98CB46BA7FCB3EBA8ACB6DBA4BCB" + $"BCB9E2CB94BA16CAF1B9E2C95BB9E2CA26B9E2C909BAAEC866BC46C8B8BB7AC8" + $"5CBC5FC82ABC6FC844BC6FC80FBC6FC7EDBC46C7F7BC5FC79CBB7AC6F8B9E2C7" + $"4ABAAEC286B9E2B9A1B9E2BE13B9E2B9A1BA23B9A1BAA6B9A1BA65B9A1BAC0B9" + $"79BAE2B991BAD830BAECB931BAD4B944BAE7B8E1BA83B83FB9E2B890BA33B6C1" + $"B9E2B3C3B9E2B542B9E2B3EBBA16B439BA7FB412BA4BB441BA8AB446BAA6B446" + $"BA98B446BE8DB446C65BB446C274B5EBC505B936C25BB791C3B0B94CC24AB981" + $"C256B96AC248BABBC312BD2FC48BBBF5C3CEBDD1C411BF16C31DBE73C397BF2D" + $"C30CBF64C31DBF4DC30CC006C397C14BC48BC0A9C411C285C3CEC4F9C256C3BF" + $"C312C50EC249C53DC256C528C249C5CAC2AEC6E3C35EC657C306C6E3C2ACC6E3" + $"C147C6E3C1FAC6E3C12AC714C108C6F7C110C731C100C75DC127C74FC10DC7A1" + $"C19EC82AC28DC7E6C215C86EC215C8F6C127C8B2C19EC905C10DC940C108C923" + $"C100C95CC110C970C147C970C12AC970C298C970C539C970C3E8C970C539C970" + $"C539C970C539C970C539022BB405C725B405C725B3FBC725B3E8C71EB3F1C723" + $"B3D2C713B3C3C6E3B3C3C6FCB3C3C2D6B3C3BABCB3C3BEC9B386BA6AB30DB9C8" + $"B349BA19B2FEB9B4B306B984B2FBB99AB311B96DB34130B32830B4F430B85A30" + $"B6A730B86C30B889B973B87CB966B8BAB9A5B91EBA08B8ECB9D6B91EB9E6B91E" + $"B9A1B91EB9C3B91EB97D3030B93B30BDF730C72530C28E30C73F30C761B988C7" + $"57B970C7A4BA30C82ABB7EC7E7BAD7C86DBAD7C8F2B989C8AFBA30C8FCB970C9" + $"2F30C91430CA3430CC3E30CB3930CC5730CC79B984CC6EB96DCC84B99ACC72B9" + $"C8CC81B9B4CC36BA19CBBCBABCCBF9BA6ACBBCBEC9CBBCC6E3CBBCC2D6CBBCC6" + $"FBCB99C71DCBAEC712CB84C728CB56C71ACB6AC727CA92C697C90BC592C9CFC6" + $"15C8F8C586C8EEC55CC8EEC571C8EEC451C8EEC23DC8EEC347C8BFC28EC862C3" + $"31C891C2DFC84BC359C7F1C331C808C359C7C3C2DFC766C23DC794C28EC766C2" + $"C5C766C3D4C766C34CC766C3ECC744C40DC759C402C730C419C702C40BC716C4" + $"18C65FC3A6C51AC2DAC5BCC340C3DFC397C169C511C2A4C454C152C51FC120C5" + $"0DC135C51DC07FC495BF3DC3A3BFDEC41CBE9CC41CBD5AC50DBDFBC495BD45C5" + $"1DBD11C511BD28C51FBBD8C455B965C2DDBA9EC399B7A8C445B42EC716B5EBC5" + $"AEB422C720B405C725B413C725B405C725B405C725B405C725B405C7250606FF" + $"0728BC4E28BC4E28BE0328C16C28BFB7B69CC11EB776C082B709C0D0B776BF1C" + $"B776BC4EB776BDB5B709BC4E28BC4EB69CBC4E28BC4EBC4E020CB5EEC22CB5EE" + $"C22CB5E4C22CB5D046B5DAC229B5BBC219B5ADC1EAB5ADC203B5ADBFF6B5ADBC" + $"0DB5ADBE01B5ADBBE9B5EEBBCC27BBCCB687BBCCB7B7BBCCB71FBBCCB7DBBBCC" + $"B7F8BC0DB7F8BBE9B7F8BD95B7F8C0A4B7F8BF1CB7F8C0B9B7DDC0D9B7EEC0CD" + $"B745C146B614C220B6ACC1B3B609C228B5EEC22CB5FCC22CB5EEC22CB5EEC22C" + $"B5EEC22CB5EEC22C06047FC331C0A4C331C0A4C331C0A4C331C0A4C331C0A4C3" + $"31C0A4C331C0A4C331C0A4C331C0A4C0A40606FF07C1A9BC4EC1A9BC4EC1A9BD" + $"F2C1A9C139C1A9BF95C216C0FA48C07EC283C0BC48BF1948BC4E48BDB4C283BC" + $"4EC1A9BC4EC216BC4EC1A9BC4EBC4E020CC168C1EAC168C1EAC15DC1EAC147C1" + $"E2C151C1E7C133C1D6C127C1A9C127C1C0C127BFCAC127BC0DC127BDECC127BB" + $"E9C168BBCCC144BBCCC200BBCCC331BBCCC298BBCCC355BBCCC372BC0DC372BB" + $"E9C372BD95C372C0A4C372BF1CC372C0BBC351C0DDC366C0D1C2B9C134C188C1" + $"E2C221C18BC17EC1E8C168C1EAC173C1EAC168C1EAC168C1EAC168C1EAC168C1" + $"EA0608FF7FB980C001B980C001B96EC00130BFE030BFF230BE2D30BAC730BC7A" + $"30BAB5B980BAA6B96EBAA6B992BAA6B9A1BAC7B9A1BAB5B9A1BC7AB9A1BFE0B9" + $"A1BE2DB9A1BFF2B980C001B992C001B980C001C0010608FF7FB980C28EB980C2" + $"8EB96EC28E30C26D30C27F30C21630C16830C1BF30C156B980C147B96EC147B9" + $"92C147B9A1C168B9A1C156B9A1C1BFB9A1C26DB9A1C216B9A1C27FB980C28EB9" + $"92C28EB980C28EC28E0608FF7FB980C0E5B980C0E5B96EC0E530C0C530C0D730" + $"C0AF30C08330C09930C071B980C063B96EC063B992C063B9A1C083B9A1C071B9" + $"A1C099B9A1C0C5B9A1C0AFB9A1C0D7B980C0E5B992C0E5B980C0E5C0E50606FF" + $"07BB8AC07EBB8AC07EBBF7C0BCBCD1C139BC64C0FABCD1BF95BCD1BC4EBCD1BD" + $"F2BC64BC4EBB8ABC4EBBF7BC4EBB8ABDB4BB8AC07EBB8ABF19BB8AC07EC07E02" + $"0CBD12C1EABD12C1EABD07C1EABCF2C1E2BCFCC1E8BC59C18BBB29C0DDBBC1C1" + $"34BB14C0D1BB08C0A4BB08C0BBBB08BF1CBB08BC0DBB08BD95BB08BBE9BB49BB" + $"CCBB25BBCCBBE1BBCCBD12BBCCBC7ABBCCBD36BBCCBD53BC0DBD53BBE9BD53BD" + $"ECBD53C1A9BD53BFCABD53C1C0BD33C1E2BD47C1D6BD29C1E7BD12C1EABD1DC1" + $"EABD12C1EABD12C1EABD12C1EABD12C1EA0608FF7FBF5EBFE0BF5EBFE0BF4CBF" + $"E0BF3D40BF3DBFD2BF3DBDCBBF3DB9E2BF3DBBD7BF3DB9D0BF5EB9C1BF4CB9C1" + $"BF70B9C1BF7EB9E2BF7EB9D0BF7EBBD7BF7E40BF7EBDCBBF7EBFD2BF5EBFE0BF" + $"70BFE0BF5EBFE0BFE00608FF7FBF5EC351BF5EC351BF4CC351BF3DC331BF3DC3" + $"43BF3DC310BF3DC2CFBF3D48BF3DC2BDBF5EC2AEBF4CC2AEBF70C2AEBF7EC2CF" + $"BF7EC2BDBF7E48BF7EC331BF7EC310BF7EC343BF5EC351BF70C351BF5EC351C3" + $"510608FF7FBF5EC0C5BF5EC0C5BF4CC0C5BF3DC0A4BF3DC0B6BF3DC08EBF3DC0" + $"63BF3DC078BF3DC051BF5EC042BF4CC042BF70C042BF7EC063BF7EC051BF7EC0" + $"78BF7EC0A4BF7EC08EBF7EC0B6BF5EC0C5BF70C0C5BF5EC0C5C0C50608FF7FBF" + $"5EC228BF5EC228BF4CC228BF3DC208BF3DC21ABF3DC1D2BF3DC168BF3DC19DBF" + $"3DC156BF5EC147BF4CC147BF70C147BF7EC168BF7EC156BF7EC19DBF7EC208BF" + $"7EC1D2BF7EC21ABF5EC228BF70C228BF5EC228C2280608FF7FC538C2AEC538C2" + $"AEC526C2AEC517C28EC517C2A0C517C04BC517BBC7C517BE09C517BBB5C538BB" + $"A6C526BBA6C54ABBA6C558BBC7C558BBB5C558BE09C558C28EC558C04BC558C2" + $"A0C538C2AEC54AC2AEC538C2AEC2AE0608FF7FC538BB44C538BB44C526BB44C5" + $"17BB24C517BB36C517BB05C517BAC7C517BAE6C517BAB5C538BAA6C526BAA6C5" + $"4ABAA6C558BAC7C558BAB5C558BAE6C558BB24C558BB05C558BB36C538BB44C5" + $"4ABB44C538BB44BB440608FF7FC538BA3FC538BA3FC526BA3FC517BA1FC517BA" + $"31C517B9E9C517B97FC517B9B4C517B96DC538B95EC526B95EC54AB95EC558B9" + $"7FC558B96DC558B9B4C558BA1FC558B9E9C558BA31C538BA3FC54ABA3FC538BA" + $"3FBA3F0F0A000400010203000A01020405000A01020607000A010308090A000A" + $"01010B000A01010C000A01010D000A01020E0F000A010110000A010111000A01" + $"0112000A010113000A010114000A010115000A01011600" +}; diff --git a/games-fps/doom_shareware/additional-files/doom_shareware.sh b/games-fps/doom_shareware/additional-files/doom_shareware.sh new file mode 100644 index 000000000..65f6e55a6 --- /dev/null +++ b/games-fps/doom_shareware/additional-files/doom_shareware.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +wad="$(finddir B_SYSTEM_DATA_DIRECTORY)/doomdata/doom1.wad" +wadname="Doom - Shareware version" + +if [ ! -e $wad ]; then + wad="$(finddir B_USER_DATA_DIRECTORY)/doomdata/doom1.wad" + if [ ! -e $wad ]; then + alert --stop "Game data not found!" + exit 1 + fi +fi + +if [ $(command -v chocolate-doom) ]; then + port1="chocolate-doom" + port1name="Chocolate Doom" + echo "Chocolate Doom detected" +fi + +if [ $(command -v GZDoom) ]; then + if [ "$port1" = "" ]; then + port1="GZDoom" + port1name=$port1 + elif [ "$port2" = "" ]; then + port2="GZDoom" + port2name=$port2 + fi + echo "GZDoom detected" +fi + +if [ -e $(finddir B_SYSTEM_APPS_DIRECTORY)/GZDoom/GZDoom ]; then + if [ "$port1" = "" ]; then + port1="$(finddir B_SYSTEM_APPS_DIRECTORY)/GZDoom/GZDoom" + port1name="GZDoom (Legacy)" + elif [ "$port2" = "" ]; then + port2="$(finddir B_SYSTEM_APPS_DIRECTORY)/GZDoom/GZDoom" + port2name="GZDoom (Legacy)" + fi + echo "GZDoom (Legacy) detected" +fi + +if [ $(command -v prboom-plus) ]; then + if [ "$port1" = "" ]; then + port1="prboom-plus" + port1name="PrBoom+" + elif [ "$port2" = "" ]; then + port2="prboom-plus" + port2name="PrBoom+" + elif [ "$port3" = "" ]; then + port3="prboom-plus" + port3name="PrBoom+" + fi + echo "PrBoom+ detected" +fi + +if [ "$port1" = "" ]; then + alert --stop "No Doom source port detected!" +elif [ "$port2" = "" ]; then + echo "Only one port detected, running it by default" + $port1 -iwad $wad $@ +else + askport="Multiple Doom source ports detected. Choose one to use with '$wadname'" + if [ "$port3" = "" ]; then + button=$(alert --idea "$askport" "$port1name" "$port2name") + else + button=$(alert --idea "$askport" "$port1name" "$port2name" "$port3name") + fi + echo "$button selected" + if [ "$button" = "$port1name" ]; then + $port1 -iwad $wad $@ + elif [ "$button" = "$port2name" ]; then + $port2 -iwad $wad $@ + elif [ "$button" = "$port3name" ]; then + $port3 -iwad $wad $@ + fi +fi diff --git a/games-fps/doom_shareware/doom_shareware-1.9.recipe b/games-fps/doom_shareware/doom_shareware-1.9.recipe new file mode 100644 index 000000000..3445e0bbb --- /dev/null +++ b/games-fps/doom_shareware/doom_shareware-1.9.recipe @@ -0,0 +1,53 @@ +SUMMARY="Shareware version of the classic FPS game" +DESCRIPTION="This is the latest release of Doom in its shareware form, which allows players to experience \ +the first episode of the game in its entirety since 1993. + +This package contains the Doom shareware game data along with a script that will look for \ +compatible Doom source ports installed. If only one is found the game will run directly, \ +if there are more installed a pop-up to select the preferred one will be shown." +HOMEPAGE="https://www.doomworld.com/classicdoom/" +COPYRIGHT="1993 - 1995 Id Software" +LICENSE="Public Domain" +REVISION="1" +SOURCE_URI="https://www.doomworld.com/3ddownloads/ports/shareware_doom_iwad.zip" +CHECKSUM_SHA256="845f4f3a449343b068a4e178f9cb018cb1f5b7d5ef09db292864ed554f612276" +SOURCE_DIR="" +ADDITIONAL_FILES=" + doom_shareware.rdef.in + doom_shareware.sh + " + +ARCHITECTURES="any" +DISABLE_SOURCE_PACKAGE="yes" + +PROVIDES=" + doom_shareware = $portVersion + " +REQUIRES=" + engine:doom + " + +INSTALL() +{ + # Pack game data + mkdir -p $dataDir/doomdata && cp DOOM1.WAD $dataDir/doomdata/doom1.wad + + # Pack script + mkdir -p $appsDir/Doom-shareware && cp $portDir/additional-files/doom_shareware.sh $appsDir/Doom-shareware + chmod +x $appsDir/Doom-shareware/doom_shareware.sh + + # Generate the rdef + local MAJOR="`echo "$portVersion" | cut -b1`" + local MIDDLE="`echo "$portVersion" | cut -b3`" + local LONG_INFO="$SUMMARY" + sed \ + -e "s|@MAJOR@|$MAJOR|" \ + -e "s|@MIDDLE@|$MIDDLE|" \ + -e "s|@LONG_INFO@|$LONG_INFO|" \ + $portDir/additional-files/doom_shareware.rdef.in > doom_shareware.rdef + + # Iconize & link script + rc doom_shareware.rdef + resattr -o $appsDir/Doom-shareware/doom_shareware.sh doom_shareware.rsrc + addAppDeskbarSymlink $appsDir/Doom-shareware/doom_shareware.sh "Doom - Shareware" +} diff --git a/games-fps/freedoom/additional-files/freedoom.rdef.in b/games-fps/freedoom/additional-files/freedoom.rdef.in new file mode 100644 index 000000000..b3aa6f8f3 --- /dev/null +++ b/games-fps/freedoom/additional-files/freedoom.rdef.in @@ -0,0 +1,62 @@ +resource app_version { + major = @MAJOR@, + middle = @MIDDLE@, + minor = @MINOR@, + + short_info = "Freedoom", + long_info = "@LONG_INFO@" +}; + +resource large_icon array { + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFF0000000202D702D703020200000000000000FFFFFFFFFFFFFF" + $"FFFFFFFFFF000000D1D1D0D0AAD1000300000000000000000000FFFFFFFFFFFF" + $"FFFFFFFF000003D7D0AAAAAAD1D1D1D1D7D1000000030000000000FFFFFFFFFF" + $"FFFFFFFFFF00AAAAD1D1D7D7D1D1D1D702D1D7D703000000000000FFFFFFFFFF" + $"FFFFFFFFFF00D103D1D103030003000000000002000000000000FF00FFFFFFFF" + $"FFFFFFFF02030002000000000000000000000000000000000000FFFFFFFFFFFF" + $"FFFFFFFF0000000000000000000000000000000000000000000000FFFFFFFFFF" + $"FFFFFFFFFF0000000000000000000300000000000003000000000000FFFFFFFF" + $"FFFFFFFFFF000000000000000003D103030003000000030000000000FFFFFFFF" + $"FFFFFFFF000000000000030300D0A4A4D103D0AA00D0D103000000FFFFFFFFFF" + $"FFFFFFFF000000000003D1D1AAD08383A4D1D0AAD0D1D1D1030300FFFFFFFFFF" + $"FFFFFFFFD100030000D1D1AAAAA45A5A5AA4D0D0D1D0D0D103000000FFFFFFFF" + $"FFFFFFFF8302D10000AAAA83AAA4838383AAAA8383AAAAAAD1020000FFFFFFFF" + $"FFFFFFFF83D7AA00D00303AA8383A4AAA48383AAD703D1AAAA0300AAFFFFFFFF" + $"FFFFFFFFA4D7AAD0AA000000D7D05A5A83AAD702AAD1D7AAAAD7D083FFFFFFFF" + $"FFFFFFFFD0D7AAAAAA31A302CAAA835AA4CAA302CAAAAAAAAAD183D0FFFFFFFF" + $"FFFFFFFFD1D7CAA483AAA35A83AAA483AAAA835AA3AA83A4AAD1AAFFFFFFFFFF" + $"FFFFFFFFFFD731CA5A5A8383AAAAA483AAAA8383835A5A83AAD1FFFFFFFFFFFF" + $"FFFFFFFFFFD7F130A3A4A4AAAAA4835AAAA4AAA4A4A45A83D0D1FFFFFFFFFFFF" + $"FFFFFFFFFFFFF1A4CAD0D1AAD0D183A4AAD131AAD1D0AAA4D0D7FFFFFFFFFFFF" + $"FFFFFFFFFFFFF1D0AAD107AAD030D0D0D130313107D1D0D0D1D7FFFFFFFFFFFF" + $"FFFFFFFFFFFF31D1D0D0AA0A31CA835A83CA3007AAD0D0D1D7FFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFD7D1D0D0AA0C12171717120931D0D0D1D703FFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFF03D7D1D0D0CA0F1215120FCA30D0D1D703FFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFF03D7D0AACAA35A5A5AA3CA31D0D703FFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFF03D7D0CACAAAD0AACACA31D703FFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFF03D7CAA35A5A5AA3303103FFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFF3131D7D7D73131FFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" +}; + +resource mini_icon array { + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFF0202030302000000FFFFFFFF" + $"FFFF00D7D0AAD0D7D700020000FFFFFF" + $"FFFF02D0D1D7D7D7030302000000FFFF" + $"FFFF0202000000000000000000FFFFFF" + $"FFFF0000000002D7020302020000FFFF" + $"FFFF000002D7D0A4AAAAD0D10200FFFF" + $"FFFFAA03D0AAAA8383AAAAAAD702FFFF" + $"FFFFAAD0D0D0AA83A4AAD0D0D0AAFFFF" + $"FFFFD0AAAAA3AA83AAA3AAAAD0AAFFFF" + $"FFFFD7CA83A4AA83AAA48383D0FFFFFF" + $"FFFFFFD0AAAAD0AAD0D0D0AAD1FFFFFF" + $"FFFFFFD7D0AA0C5A12D0D0D1D7FFFFFF" + $"FFFFFFFFD7D0A35AA3CAD0D7FFFFFFFF" + $"FFFFFFFFFFD7CA83A330D7FFFFFFFFFF" + $"FFFFFFFFFFFFFFD0D0FFFFFFFFFFFFFF" +}; diff --git a/games-fps/freedoom/additional-files/freedoom.sh b/games-fps/freedoom/additional-files/freedoom.sh new file mode 100644 index 000000000..afcb3fe5f --- /dev/null +++ b/games-fps/freedoom/additional-files/freedoom.sh @@ -0,0 +1,100 @@ +#!/bin/bash + +wad1="$(finddir B_SYSTEM_DATA_DIRECTORY)/doomdata/freedoom1.wad" +wad2="$(finddir B_SYSTEM_DATA_DIRECTORY)/doomdata/freedoom2.wad" + + +if [ ! -e $wad1 ]; then + wad1="$(finddir B_USER_DATA_DIRECTORY)/doomdata/freedoom1.wad" + wad2="$(finddir B_USER_DATA_DIRECTORY)/doomdata/freedoom2.wad" + if [ ! -e $wad1 ]; then + alert --stop "Game data not found!" + exit 1 + fi +fi + +if [ "$1" = "1" ]; then + wad=$wad1 + wadname="Freedoom: Phase 1" + echo "$wadname selected" +elif [ "$1" = "2" ]; then + wad=$wad2 + wadname="Freedoom: Phase 2" + echo "$wadname selected" +fi + +if [ $(command -v chocolate-doom) ]; then + port1="chocolate-doom" + port1name="Chocolate Doom" + echo "Chocolate Doom detected" +fi + +if [ $(command -v GZDoom) ]; then + if [ "$port1" = "" ]; then + port1="GZDoom" + port1name=$port1 + elif [ "$port2" = "" ]; then + port2="GZDoom" + port2name=$port2 + fi + echo "GZDoom detected" +fi + +if [ -e $(finddir B_SYSTEM_APPS_DIRECTORY)/GZDoom/GZDoom ]; then + if [ "$port1" = "" ]; then + port1="$(finddir B_SYSTEM_APPS_DIRECTORY)/GZDoom/GZDoom" + port1name="GZDoom (Legacy)" + elif [ "$port2" = "" ]; then + port2="$(finddir B_SYSTEM_APPS_DIRECTORY)/GZDoom/GZDoom" + port2name="GZDoom (Legacy)" + fi + echo "GZDoom (Legacy) detected" +fi + +if [ $(command -v prboom-plus) ]; then + if [ "$port1" = "" ]; then + port1="prboom-plus" + port1name="PrBoom+" + elif [ "$port2" = "" ]; then + port2="prboom-plus" + port2name="PrBoom+" + elif [ "$port3" = "" ]; then + port3="prboom-plus" + port3name="PrBoom+" + fi + echo "PrBoom+ detected" +fi + +if [ "$port1" = "" ]; then + alert --stop "No Doom source port detected!" +else + if [ "$wadname" = "" ]; then + askwad=$(alert --idea "Choose between Freedoom Phase 1 and Phase 2" "Phase 1" "Phase 2") + if [ "$askwad" = "Phase 1" ]; then + wad=$wad1 + elif [ "$askwad" = "Phase 2" ]; then + wad=$wad2 + fi + wadname="Freedoom: $askwad" + echo "$wadname selected" + fi + if [ "$port2" = "" ]; then + echo "Only one port detected, running it by default" + $port1 -iwad $wad $@ + else + askport="Multiple Doom source ports detected. Choose one to use with '$wadname'" + if [ "$port3" = "" ]; then + button=$(alert --idea "$askport" "$port1name" "$port2name") + else + button=$(alert --idea "$askport" "$port1name" "$port2name" "$port3name") + fi + echo "$button selected" + if [ "$button" = "$port1name" ]; then + $port1 -iwad $wad $@ + elif [ "$button" = "$port2name" ]; then + $port2 -iwad $wad $@ + elif [ "$button" = "$port3name" ]; then + $port3 -iwad $wad $@ + fi + fi +fi diff --git a/games-fps/freedoom/freedoom-0.13.0.recipe b/games-fps/freedoom/freedoom-0.13.0.recipe new file mode 100644 index 000000000..479dafa02 --- /dev/null +++ b/games-fps/freedoom/freedoom-0.13.0.recipe @@ -0,0 +1,62 @@ +SUMMARY="Free Doom I/II game data replacement" +DESCRIPTION="The Freedoom project aims to provide all the content needed to form a complete, entirely free/libre game \ +for the Doom engine. It is designed to be compatible with most custom levels, music, graphics \ +and other modifications (“mods”) made for the original Doom games by Doom fans and artists over the decades. + +This package contains the Freedoom game data along with a script that will look for compatible Doom source \ +ports installed to run the single player data with. If only one is found the game will run directly, if there \ +are more installed a pop-up to select the preferred one will be shown." +HOMEPAGE="https://freedoom.github.io/" +COPYRIGHT="2001 - 2024 the Freedoom project" +LICENSE="BSD (3-clause)" +REVISION="1" +SOURCE_URI="https://github.com/freedoom/freedoom/releases/download/v$portVersion/freedoom-$portVersion.zip" +CHECKSUM_SHA256="3f9b264f3e3ce503b4fb7f6bdcb1f419d93c7b546f4df3e874dd878db9688f59" +SOURCE_URI_2="https://github.com/freedoom/freedoom/releases/download/v$portVersion/freedm-$portVersion.zip" +CHECKSUM_SHA256_2="b420f13508ef745d7b38e83d15e55e0fc0b09d9a503c96741cddd9773d43f7c9" +SOURCE_DIR_2="freedm-$portVersion" +ADDITIONAL_FILES=" + freedoom.rdef.in + freedoom.sh + " + +ARCHITECTURES="any" +DISABLE_SOURCE_PACKAGE="yes" + +PROVIDES=" + freedoom = $portVersion + " +REQUIRES=" + engine:doom + " + +INSTALL() +{ + # Pack game data + mkdir -p $dataDir/doomdata && cp -t $dataDir/doomdata *.wad $sourceDir2/freedm.wad + + # Pack docs + mkdir -p $docDir && cp -t $docDir COPYING.txt CREDITS.txt CREDITS-MUSIC.txt \ + freedoom-manual-fr.pdf freedoom-manual-en.pdf freedoom-manual-es.pdf NEWS.html README.html + + # Pack script + mkdir -p $appsDir/Freedoom && cp $portDir/additional-files/freedoom.sh $appsDir/Freedoom + chmod +x $appsDir/Freedoom/freedoom.sh + + # Generate the rdef + local MAJOR="`echo "$portVersion" | cut -d. -f1`" + local MIDDLE="`echo "$portVersion" | cut -d. -f2`" + local MINOR="`echo "$portVersion" | cut -d. -f3`" + local LONG_INFO="$SUMMARY" + sed \ + -e "s|@MAJOR@|$MAJOR|" \ + -e "s|@MIDDLE@|$MIDDLE|" \ + -e "s|@MINOR@|$MINOR|" \ + -e "s|@LONG_INFO@|$LONG_INFO|" \ + $portDir/additional-files/freedoom.rdef.in > freedoom.rdef + + # Iconize & link script + rc freedoom.rdef + resattr -o $appsDir/Freedoom/freedoom.sh freedoom.rsrc + addAppDeskbarSymlink $appsDir/Freedoom/freedoom.sh "Freedoom" +} diff --git a/games-fps/hacx/additional-files/hacx.rdef.in b/games-fps/hacx/additional-files/hacx.rdef.in new file mode 100644 index 000000000..04aad1d71 --- /dev/null +++ b/games-fps/hacx/additional-files/hacx.rdef.in @@ -0,0 +1,62 @@ +resource app_version { + major = @MAJOR@, + middle = @MIDDLE@, + minor = 0, + + short_info = "Hacx: Twitch 'n Kill", + long_info = "@LONG_INFO@" +}; + +resource large_icon array { + $"D0B0AAAAA98383835AD9D9D95A5AD9D95A5A83835AD9D95A5A838383A9AAD007" + $"D0B0AAAA898383835AD9D9D95A5AD95AD9D95A5AD9D9D9D95A838383A9AAB007" + $"0709B0AA838383835AD9D9D95A835A5AD9D95AD9D9D9D9D95A838383A9AAB007" + $"0707D0AA898383835A5AD9D95A835A83D9835AD9D9D9D9D95A838383A9AAB007" + $"D602D7B0A90C0F115A5A5A83838383835A835AD9D9D9D95A5A11100D0CAAB000" + $"0605080A0907090989131383838389898383835A5A821313890B0907090B0804" + $"04040808050000000C0F0EA98989AAAA83A9838383830D0D0C04010306080504" + $"00000000000000000000000B1111B0B0B0B0AA0F100C00000000030606030000" + $"0000000000000000000003060605080F13100904000000000004080B0B090600" + $"05020000000001030708090B0B090709100A050200010406070AAF0C09060300" + $"D005D705030104070AB00CAF0B0909AA83D0050202040709B0AF0E0B08D0D005" + $"D0B0B0B0D703080AB00E0EB007D6AA5AD9AAD00504080AB0AF0EAF08B0AAAAB0" + $"B0AA83A9AAD601040A0A0A0706B0A95AD983AAD0D70205070A0A0809898383B0" + $"D0AA838383AAD0D6050509B0B0AA8383D983A9AAAAB0D0070808B089838383AA" + $"D0AA83838389AAB0D0D0AAA9A9838383D98383898389AAD0D0B0AA835A8383AA" + $"07B0AA89838383AAAAAA838383838383D98383838383AAB0B0AA8383838383AA" + $"D6B0B0AAA9838383835AD95A83838383D9838383835AD98383838383A9AAAAB0" + $"03D0B0B0AAA9A983835AD98283838383D983838383835A8383A9A9A9AAAAB008" + $"000508D0B0AAA9898382628383838383D98383838382828289A9AAAAAAB00905" + $"0000D707D0AAA910131482838383835AD9D9838383161682100EAAAAB0D0D600" + $"D7D009D0090C891315821689AAAAAA8383A9AAAA8962168289100CB009070707" + $"D0D00B0AB00D89138213828289B0B0AAAAB0B0AA8916161489A90CB009D0D0D0" + $"D0B00EA90B0D89891413138212AFD0D0D0D0B0AA8982828910A90D0B0AB0B009" + $"D0A910100E0D1089121212131310D0D6D6D0AAAA89898910A9A9A9A9AFA9B00B" + $"0AAFA910A90E10A9090BAF1089890CD6CACAAAA9A9A9A9A9A9A989A9A9A9AF0B" + $"09B0A910A9A913A9D0B0B0B0AF0CB0D1D030D0AACACAD0D00CAF89A9A90E0CB0" + $"FF0AA9A90EA91410D0B0AFA9A9A9B0D0B0AAA9AACAD1D0D0D0A989A9AFAF0BD0" + $"FFFF0AA9A9A98912B0A989131312891010891289AAD0B00BCAA989A9AFB00BFF" + $"FFFFFFD0B00D8910A9121482161616828282828215131210CAA9A9A9B00AFFFF" + $"FFFFFFFFD0AF10A989141582161615110F111314141413A9AAA9A90C0BFFFFFF" + $"FFFFFFFF080BA9A9A91482828215820C0C0C1213131389A9AAA9A9B009FFFFFF" + $"FFFFFFFF03D6B0AAA9898989128215070F0B14828989A9CAAAA9B0D0D7FFFFFF" +}; + +resource mini_icon array { + $"D0AA83835AD95AD9D95AD9D95A83AAD0" + $"D0AA83835AD95A5AD95AD9D95A83AAB0" + $"05090B0D82828383835AD982890B0BD6" + $"030602000A0C10AAAA89890A07040603" + $"030000010508080A10060003D60B0903" + $"D0D00407B0AF09A989D705090C0CB0D0" + $"B083AA060809B0835AAAD00709B083A9" + $"B08383AAB08383835A8383B0B08383A9" + $"D6B0A983835A83835A8383838383AAB0" + $"02D0B089828283835A838282A9AAB0D6" + $"D0B00B898282A9AAA9AA8282100B08D0" + $"B0A90D89131389D0D0AA8989A9A9B00A" + $"0BA9A910D0AFA9D0D0AAA9B0AF10A90B" + $"FFA9A912B01089A9A9A9CAD0AA890C0A" + $"FFFFB0898915168213828289A9A90BFF" + $"FFFF08A9891382100D1389A9AAB0FFFF" +}; diff --git a/games-fps/hacx/additional-files/hacx.sh b/games-fps/hacx/additional-files/hacx.sh new file mode 100644 index 000000000..67dd3c811 --- /dev/null +++ b/games-fps/hacx/additional-files/hacx.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +wad="$(finddir B_SYSTEM_DATA_DIRECTORY)/doomdata/hacx.wad" +wadname="Hacx: Twitch 'n Kill" + +if [ ! -e $wad ]; then + wad="$(finddir B_USER_DATA_DIRECTORY)/doomdata/hacx.wad" + if [ ! -e $wad ]; then + alert --stop "Game data not found!" + exit 1 + fi +fi + +if [ $(command -v chocolate-doom) ]; then + port1="chocolate-doom" + port1name="Chocolate Doom" + echo "Chocolate Doom detected" +fi + +if [ $(command -v GZDoom) ]; then + if [ "$port1" = "" ]; then + port1="GZDoom" + port1name=$port1 + elif [ "$port2" = "" ]; then + port2="GZDoom" + port2name=$port2 + fi + echo "GZDoom detected" +fi + +if [ -e $(finddir B_SYSTEM_APPS_DIRECTORY)/GZDoom/GZDoom ]; then + if [ "$port1" = "" ]; then + port1="$(finddir B_SYSTEM_APPS_DIRECTORY)/GZDoom/GZDoom" + port1name="GZDoom (Legacy)" + elif [ "$port2" = "" ]; then + port2="$(finddir B_SYSTEM_APPS_DIRECTORY)/GZDoom/GZDoom" + port2name="GZDoom (Legacy)" + fi + echo "GZDoom (Legacy) detected" +fi + +if [ $(command -v prboom-plus) ]; then + if [ "$port1" = "" ]; then + port1="prboom-plus" + port1name="PrBoom+" + elif [ "$port2" = "" ]; then + port2="prboom-plus" + port2name="PrBoom+" + elif [ "$port3" = "" ]; then + port3="prboom-plus" + port3name="PrBoom+" + fi + echo "PrBoom+ detected" +fi + +if [ "$port1" = "" ]; then + alert --stop "No Doom source port detected!" +elif [ "$port2" = "" ]; then + echo "Only one port detected, running it by default" + $port1 -iwad $wad $@ +else + askport="Multiple Doom source ports detected. Choose one to use with '$wadname'" + if [ "$port3" = "" ]; then + button=$(alert --idea "$askport" "$port1name" "$port2name") + else + button=$(alert --idea "$askport" "$port1name" "$port2name" "$port3name") + fi + echo "$button selected" + if [ "$button" = "$port1name" ]; then + $port1 -iwad $wad $@ + elif [ "$button" = "$port2name" ]; then + $port2 -iwad $wad $@ + elif [ "$button" = "$port3name" ]; then + $port3 -iwad $wad $@ + fi +fi diff --git a/games-fps/hacx/hacx-1.2.recipe b/games-fps/hacx/hacx-1.2.recipe new file mode 100644 index 000000000..f85180762 --- /dev/null +++ b/games-fps/hacx/hacx-1.2.recipe @@ -0,0 +1,58 @@ +SUMMARY="Old-school FPS game for the Doom engine" +DESCRIPTION="Hacx is an action filled Doom Engine game commercially released in 1997 then re-released in 2000 as freeware. +The story is set in the near future, where you'll find yourself engrossed in an international blastfest. +Wield weapons of mass destruction from China to Paris to combat a devilish artificial intelligence and its hordes of loyal fanatics. +Can you handle it, hacker? + +This package contains the Hacx game data along with a script that will look for compatible \ +Doom source ports installed. If only one is found the game will run directly, \ +if there are more installed a pop-up to select the preferred one will be shown." +HOMEPAGE="http://drnostromo.com/hacx/" +COPYRIGHT="1997 - 2010 Banjo Software Inc. & contributors" +LICENSE="Public Domain" +REVISION="1" +SOURCE_URI="http://drnostromo.com/hacx/files/hacx12.zip" +CHECKSUM_SHA256="70d25e8f4b48906759db32213927859a99b3b045d3291d468357b225d64cbf8b" +SOURCE_DIR="" +ADDITIONAL_FILES=" + hacx.rdef.in + hacx.sh + " + +ARCHITECTURES="any" +DISABLE_SOURCE_PACKAGE="yes" + +PROVIDES=" + hacx = $portVersion + " +REQUIRES=" + engine:doom + " + +INSTALL() +{ + # Pack game data + mkdir -p $dataDir/doomdata && cp HACX.WAD $dataDir/doomdata/hacx.wad + + # Pack docs + mkdir -p $docDir && cp HACX.TXT $docDir/hacx.txt + + # Pack script + mkdir -p $appsDir/Hacx && cp $portDir/additional-files/hacx.sh $appsDir/Hacx + chmod +x $appsDir/Hacx/hacx.sh + + # Generate the rdef + local MAJOR="`echo "$portVersion" | cut -b1`" + local MIDDLE="`echo "$portVersion" | cut -b3`" + local LONG_INFO="$SUMMARY" + sed \ + -e "s|@MAJOR@|$MAJOR|" \ + -e "s|@MIDDLE@|$MIDDLE|" \ + -e "s|@LONG_INFO@|$LONG_INFO|" \ + $portDir/additional-files/hacx.rdef.in > hacx.rdef + + # Iconize & link script + rc hacx.rdef + resattr -o $appsDir/Hacx/hacx.sh hacx.rsrc + addAppDeskbarSymlink $appsDir/Hacx/hacx.sh "Hacx: Twitch 'n Kill" +} diff --git a/games-fps/prboom-plus/additional-files/prboom_plus.rdef.in b/games-fps/prboom-plus/additional-files/prboom_plus.rdef.in index 033a785cf..7351df9ab 100644 --- a/games-fps/prboom-plus/additional-files/prboom_plus.rdef.in +++ b/games-fps/prboom-plus/additional-files/prboom_plus.rdef.in @@ -1,4 +1,4 @@ -resource app_flags B_SINGLE_LAUNCH | B_ARGV_ONLY; +resource app_flags B_MULTIPLE_LAUNCH; resource app_version { major = @MAJOR@, diff --git a/games-fps/prboom-plus/patches/prboom_plus-2.6.66.patchset b/games-fps/prboom-plus/patches/prboom_plus-2.6.66.patchset index 34b89bc0f..aa5c98e33 100644 --- a/games-fps/prboom-plus/patches/prboom_plus-2.6.66.patchset +++ b/games-fps/prboom-plus/patches/prboom_plus-2.6.66.patchset @@ -1,7 +1,7 @@ -From 9af8b16bfbb4bb2c96201671d6add490313c4bb6 Mon Sep 17 00:00:00 2001 +From e82109d5f948601b6577b163dc7621b70864b41e Mon Sep 17 00:00:00 2001 From: Peppersawce Date: Thu, 31 Oct 2024 23:41:45 +0100 -Subject: Change default midi + soundfont paths for 2.6.66 + better path lookup +Subject: Change default midi + soundfont paths for 2.6.66 diff --git a/prboom2/src/m_misc.c b/prboom2/src/m_misc.c @@ -14,19 +14,26 @@ index dc35ac9..6b62fca 100644 #else - {"snd_midiplayer",{NULL, &snd_midiplayer},{0,"sdl"},UL,UL,def_str,ss_none}, - {"snd_soundfont",{NULL, &snd_soundfont},{0,"/usr/share/sounds/sf3/default-GM.sf3"},UL,UL,def_str,ss_none}, // soundfont name for synths that support it -+ {"snd_midiplayer",{NULL, &snd_midiplayer},{0,"opl2"},UL,UL,def_str,ss_none}, ++ {"snd_midiplayer",{NULL, &snd_midiplayer},{0,"fluidsynth"},UL,UL,def_str,ss_none}, + {"snd_soundfont",{NULL, &snd_soundfont},{0,"/boot/system/data/synth/TimGM6mb.sf2"},UL,UL,def_str,ss_none}, // soundfont name for synths that support it #endif {"snd_mididev",{NULL, &snd_mididev},{0,""},UL,UL,def_str,ss_none}, // midi device to use for portmidiplayer and alsaplayer {"lowpass_filter",{&lowpass_filter},{0},0,1, -- -2.45.2 +2.48.1 + + +From e609c3f15996cd15368d5f2ca25ebb79779046f3 Mon Sep 17 00:00:00 2001 +From: Peppersawce +Date: Tue, 1 Apr 2025 22:45:28 +0200 +Subject: Better path lookup, look for installed doom data packages + diff --git a/prboom2/src/SDL/i_system.c b/prboom2/src/SDL/i_system.c -index 2094647..c0e9163 100644 +index 2094647..f2850bd 100644 --- a/prboom2/src/SDL/i_system.c +++ b/prboom2/src/SDL/i_system.c -@@ -442,10 +442,8 @@ char* I_FindFileInternal(const char* wfname, const char* ext, dboolean isStatic) +@@ -442,10 +442,11 @@ char* I_FindFileInternal(const char* wfname, const char* ext, dboolean isStatic) {DOOMWADDIR}, // build-time configured DOOMWADDIR {NULL, "doom", "HOME"}, // ~/doom {NULL, NULL, "HOME"}, // ~ @@ -34,11 +41,14 @@ index 2094647..c0e9163 100644 - {"/usr/share/games/doom"}, - {"/usr/local/share/doom"}, - {"/usr/share/doom"}, -+ {"/boot/home/config/non-packaged/data/doom"}, -+ {"/boot/home/config/non-packaged/data/doomdata"}, ++ {NULL, "config/non-packaged/data/doom", "HOME"}, ++ {NULL, "config/non-packaged/data/doomdata", "HOME"}, ++ {"/boot/system/non-packaged/data/doomdata"}, ++ {"/boot/system/data/doomdata"}, // Doom data packages ++ {NULL, "config/data/doomdata", "HOME"}, // Doom data (user) packages) }, *search; static size_t num_search; -- -2.45.2 +2.48.1 diff --git a/games-fps/prboom-plus/prboom_plus-2.6.66.recipe b/games-fps/prboom-plus/prboom_plus-2.6.66.recipe index c79abb988..db7c8cf9b 100644 --- a/games-fps/prboom-plus/prboom_plus-2.6.66.recipe +++ b/games-fps/prboom-plus/prboom_plus-2.6.66.recipe @@ -1,18 +1,20 @@ SUMMARY="Enhanced clone of the classic first-person shooter Doom" DESCRIPTION="PrBoom+ is a Doom source port developed from the original PrBoom project by Andrey Budko. -The binaries will look for .wad files (in lowercase) in: +The binaries will look for .wad files in: * ~/config/non-packaged/data/prboom-plus * ~/config/non-packaged/data/doomdata * ~/config/non-packaged/data/doom * ~/config/settings/prboom-plus * ~/doom +* /boot/system/non-packaged/data/doomdata +* Any compatible game data package The binaries can be also used via command-line with the -iwad command. -Example: 'prboom-plus -iwad ~/config/non-packaged/data/doom/doom.wad'" +Example: 'prboom-plus -iwad /path/to/doom/doom.wad'" HOMEPAGE="https://github.com/coelckers/prboom-plus" COPYRIGHT="2016-2023 Andrey Budko et al." LICENSE="GNU GPL v2" -REVISION="3" +REVISION="4" SOURCE_URI="https://github.com/coelckers/prboom-plus/archive/v$portVersion.tar.gz" CHECKSUM_SHA256="4b647b4b14c3fac00711e6bf19f996bbfe37754a3b9bb5be6791f0c3fd993438" SOURCE_DIR="prboom-plus-$portVersion" @@ -26,14 +28,15 @@ PROVIDES=" prboom_plus$secondaryArchSuffix = $portVersion cmd:prboom_plus = $portVersion cmd:prboom_plus_game_server = $portVersion + engine:doom " REQUIRES=" haiku$secondaryArchSuffix -# lib:libdumb_0.9.3$secondaryArchSuffix # Optional, required by portmidi? -# lib:libfluidsynth$secondaryArchSuffix # Optional, for Fluidsynth MIDI + lib:libdumb_0.9.3$secondaryArchSuffix # Optional, used with portmidi + lib:libfluidsynth$secondaryArchSuffix # Optional, for Fluidsynth MIDI lib:libmad$secondaryArchSuffix lib:libpcreposix$secondaryArchSuffix -# lib:libportmidi$secondaryArchSuffix # Optional, related MIDI player doesn't seem to work + lib:libportmidi$secondaryArchSuffix # Optional, MIDI player lib:libSDL2_2.0$secondaryArchSuffix lib:libSDL2_image_2.0$secondaryArchSuffix lib:libSDL2_mixer_2.0$secondaryArchSuffix @@ -44,12 +47,12 @@ REQUIRES=" BUILD_REQUIRES=" haiku${secondaryArchSuffix}_devel -# devel:libdumb$secondaryArchSuffix # Optional, required by portmidi? -# devel:libfluidsynth$secondaryArchSuffix # Optional, for Fluidsynth MIDI, not working in-game -# devel:libGL$secondaryArchSuffix # Optional? Seems unused - devel:libmad$secondaryArchSuffix # Seems to not work, makes non-opl2 MIDI fail + devel:libdumb$secondaryArchSuffix # Optional, used with portmidi + devel:libfluidsynth$secondaryArchSuffix # Optional, for Fluidsynth MIDI + devel:libGL$secondaryArchSuffix # Optional, used during build, unsure if it affects the binary in any way + devel:libmad$secondaryArchSuffix devel:libpcreposix$secondaryArchSuffix -# devel:libportmidi$secondaryArchSuffix # Optional, MIDI player, not working in-game + devel:libportmidi$secondaryArchSuffix # Optional, MIDI player devel:libSDL2$secondaryArchSuffix devel:libSDL2_image$secondaryArchSuffix devel:libSDL2_mixer$secondaryArchSuffix @@ -65,29 +68,22 @@ BUILD_PREREQUIRES=" cmd:pkg_config$secondaryArchSuffix " -defineDebugInfoPackage prboom_plus$secondaryArchSuffix \ - $prefix/bin/prboom-plus \ - $prefix/bin/prboom-plus-game-server - BUILD() { nonpackdatadir=$(finddir B_USER_NONPACKAGED_DATA_DIRECTORY) - mkdir -p build && cd build - - cmake ../prboom2 $cmakeDirArgs \ - -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + cmake -Bbuild -S./prboom2 $cmakeDirArgs \ + -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_BINDIR="$prefix/bin" \ -DPRBOOMDATADIR="$dataDir/prboom-plus" \ -DDOOMWADDIR="$nonpackdatadir/prboom-plus" - make $jobArgs + make -C build $jobArgs } INSTALL() { - cd build - make install + make -C build install # Generate the rdef local MAJOR="`echo "$portVersion" | cut -b1`"