diff --git a/scriptmodules/ports/eduke32.sh b/scriptmodules/ports/eduke32.sh index 710c0b419c..b71edea8a9 100644 --- a/scriptmodules/ports/eduke32.sh +++ b/scriptmodules/ports/eduke32.sh @@ -76,16 +76,14 @@ function install_eduke32() { function game_data_eduke32() { local dest="$romdir/ports/duke3d" - if [[ "$md_id" == "eduke32" ]]; then - if [[ ! -f "$dest/duke3d.grp" ]]; then - mkUserDir "$dest" - local temp="$(mktemp -d)" - download "$__archive_url/3dduke13.zip" "$temp" - unzip -L -o "$temp/3dduke13.zip" -d "$temp" dn3dsw13.shr - unzip -L -o "$temp/dn3dsw13.shr" -d "$dest" duke3d.grp duke.rts - rm -rf "$temp" - chown -R $user:$user "$dest" - fi + if [[ ! -n $(find $dest -maxdepth 1 -iname duke3d.grp) ]]; then + mkUserDir "$dest" + local temp="$(mktemp -d)" + download "$__archive_url/3dduke13.zip" "$temp" + unzip -L -o "$temp/3dduke13.zip" -d "$temp" dn3dsw13.shr + unzip -L -o "$temp/dn3dsw13.shr" -d "$dest" duke3d.grp duke.rts + rm -rf "$temp" + chown -R $user:$user "$dest" fi } @@ -107,7 +105,7 @@ function configure_eduke32() { rm -f "$romdir/ports/Duke3D Shareware.sh" if [[ "$md_mode" == "install" ]]; then - game_data_eduke32 + [[ "$md_id" == "eduke32" ]] && game_data_eduke32 touch "$config" iniConfig " " '"' "$config" diff --git a/scriptmodules/ports/jfduke3d.sh b/scriptmodules/ports/jfduke3d.sh new file mode 100644 index 0000000000..9decd039c9 --- /dev/null +++ b/scriptmodules/ports/jfduke3d.sh @@ -0,0 +1,105 @@ +#!/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="jfduke3d" +rp_module_desc="lightweight Duke3D source port by JonoF" +rp_module_licence="GPL2 https://raw.githubusercontent.com/jonof/jfduke3d/master/GPL.TXT" +rp_module_repo="git https://github.com/jonof/jfduke3d.git master" +rp_module_section="exp" +rp_module_flags="" + +function depends_jfduke3d() { + local depends=( + libsdl2-dev libvorbis-dev libfluidsynth-dev + ) + + isPlatform "x86" && depends+=(nasm) + isPlatform "gl" || isPlatform "mesa" && depends+=(libgl1-mesa-dev libglu1-mesa-dev) + isPlatform "x11" && depends+=(libgtk-3-dev) + getDepends "${depends[@]}" +} + +function sources_jfduke3d() { + gitPullOrClone +} + +function build_jfduke3d() { + local gamedir="duke3d" + local require="duke3d" + local params=(RELEASE=1) + + if [[ ! -z "$1" ]] && [[ ! -z "$2" ]]; then + gamedir=$1 + require=$2 + fi + + params+=(DATADIR=$romdir/ports/$gamedir) + + ! isPlatform "x86" && params+=(USE_ASM=0) + ! isPlatform "x11" && params+=(WITHOUT_GTK=1) + ! isPlatform "gl3" && params+=(USE_POLYMOST=0) + + if isPlatform "gl" || isPlatform "mesa"; then + params+=(USE_OPENGL=USE_GL2) + elif isPlatform "gles"; then + params+=(USE_OPENGL=USE_GLES2) + else + params+=(USE_OPENGL=0) + fi + + make clean veryclean + make "${params[@]}" + + md_ret_require="$md_build/$require" +} + +function install_jfduke3d() { + md_ret_files=( + 'build' + 'README.md' + 'GPL.TXT' + ) + + if [[ ! -z "$1" ]]; then + md_ret_files+=("$1") + else + md_ret_files+=('duke3d') + fi +} + +function config_file_jfduke3d() { + local config="$1" + if [[ -f "$config" ]] || isPlatform "x86"; then + return + fi + + # no config file exists, creating one + # with alsa as the sound driver + cat >"$config" << _EOF_ +[Sound Setup] +MusicParams = "audio.driver=alsa" +_EOF_ + chown -R $user:$user "$config" +} + +function configure_jfduke3d() { + mkRomDir "ports/duke3d" + moveConfigDir "$home/.jfduke3d" "$md_conf_root/jfduke3d" + + # params are just for parity with eduke32, last one is not supported + addPort "$md_id" "duke3d" "Duke Nukem 3D" "$md_inst/duke3d" "-j$romdir/ports/duke3d -addon 0" + + if [[ "$md_mode" != "install" ]]; then + return + fi + game_data_eduke32 + config_file_jfduke3d "$md_conf_root/jfduke3d/duke3d.cfg" +} diff --git a/scriptmodules/ports/jfsw.sh b/scriptmodules/ports/jfsw.sh new file mode 100644 index 0000000000..9795f4b548 --- /dev/null +++ b/scriptmodules/ports/jfsw.sh @@ -0,0 +1,64 @@ +#!/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="jfsw" +rp_module_desc="Shadow Warrior source port by JonoF" +rp_module_help="Place your registered version game files in $romdir/ports/shadowwarrior" +rp_module_licence="GPL2 https://raw.githubusercontent.com/jonof/jfsw/master/GPL.TXT" +rp_module_repo="git https://github.com/jonof/jfsw.git master" +rp_module_section="exp" +rp_module_flags="" + +function depends_jfsw() { + depends_jfduke3d +} + +function sources_jfsw() { + gitPullOrClone +} + +function build_jfsw() { + build_jfduke3d "shadowwarrior" "sw" +} + +function install_jfsw() { + install_jfduke3d 'sw' +} + +function gamedata_jfsw() { + local dest="$romdir/ports/shadowwarrior" + if [[ ! -n $(find $dest -maxdepth 1 -iname sw.grp) ]]; then + mkUserDir "$dest" + local temp="$(mktemp -d)" + download "ftp://ftp.3drealms.com/share/3dsw12.zip" "$temp" + unzip -L -o "$temp/3dsw12.zip" -d "$temp" swsw12.shr + unzip -L -o "$temp/swsw12.shr" -d "$dest" sw.grp sw.rts + rm -rf "$temp" + fi + chown -R $user:$user "$dest" +} + +function configure_jfsw() { + local gamedir="$romdir/ports/shadowwarrior" + + mkRomDir "ports/shadowwarrior" + moveConfigDir "$home/.jfsw" "$md_conf_root/sw/jfsw" + + addPort "$md_id" "sw" "Shadow Warrior" "$md_inst/sw %ROM%" "" + [[ -n $(find $gamedir -maxdepth 1 -iname dragon.zip) ]] && addPort "$md_id" "sw" "Shadow Warrior Twin Dragon" "$md_inst/sw %ROM%" "-gdragon.zip" + [[ -n $(find $gamedir -maxdepth 1 -iname wt.grp) ]] && addPort "$md_id" "sw" "Shadow Warrior Wanton Destruction" "$md_inst/sw %ROM%" "-gwt.grp" + + if [[ "$md_mode" != "install" ]]; then + return + fi + gamedata_jfsw + config_file_jfduke3d "$md_conf_root/sw/jfsw/sw.cfg" +}