#!/bin/bash # PORTMASTER: netfishing.zip, NETfishing.sh XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share} if [ -d "/opt/system/Tools/PortMaster/" ]; then controlfolder="/opt/system/Tools/PortMaster" elif [ -d "/opt/tools/PortMaster/" ]; then controlfolder="/opt/tools/PortMaster" elif [ -d "$XDG_DATA_HOME/PortMaster/" ]; then controlfolder="$XDG_DATA_HOME/PortMaster" else controlfolder="/roms/ports/PortMaster" fi if [ ! -f "$controlfolder/control.txt" ]; then echo "PortMaster control.txt was not found at $controlfolder" >&2 exit 1 fi source "$controlfolder/control.txt" [ -f "${controlfolder}/mod_${CFW_NAME}.txt" ] && source "${controlfolder}/mod_${CFW_NAME}.txt" get_controls GAMEDIR="/${directory}/ports/netfishing" if [ ! -d "$GAMEDIR" ] && [ -d "/mnt/mmc/ports/netfishing" ]; then GAMEDIR="/mnt/mmc/ports/netfishing" fi CONFDIR="$GAMEDIR/conf" GAME_EXECUTABLE="$GAMEDIR/NETfishing.aarch64" WESTON_DIR="/tmp/netfishing-weston" WESTON_RUNTIME="weston_pkg_0.2" HARBOURMASTER="$controlfolder/harbourmaster" if [ ! -x "$HARBOURMASTER" ] && [ -x "/mnt/mmc/MUOS/PortMaster/harbourmaster" ]; then HARBOURMASTER="/mnt/mmc/MUOS/PortMaster/harbourmaster" fi mkdir -p "$CONFDIR/data" "$CONFDIR/config" "$CONFDIR/cache" "$WESTON_DIR" chmod +x "$GAME_EXECUTABLE" > "$GAMEDIR/log.txt" && exec > >(tee "$GAMEDIR/log.txt") 2>&1 if [ ! -f "$controlfolder/libs/${WESTON_RUNTIME}.squashfs" ]; then if [ ! -x "$HARBOURMASTER" ]; then pm_message "NETfishing requires the latest PortMaster and WestonPack runtime." sleep 5 exit 1 fi $ESUDO "$HARBOURMASTER" --quiet --no-check runtime_check "${WESTON_RUNTIME}.squashfs" fi if [ ! -f "$controlfolder/libs/${WESTON_RUNTIME}.squashfs" ]; then pm_message "WestonPack could not be installed. Check the network connection and PortMaster runtime manager." sleep 5 exit 1 fi if [[ "$PM_CAN_MOUNT" != "N" ]]; then $ESUDO umount "$WESTON_DIR" 2>/dev/null fi $ESUDO mount "$controlfolder/libs/${WESTON_RUNTIME}.squashfs" "$WESTON_DIR" cd "$GAMEDIR" || exit 1 # Godot 4.7 identifies the muOS H700 virtual controller with a CRC-bearing # GUID and numbers its buttons without the volume keys exposed by SDL2. The # PortMaster SDL2 database entry therefore cannot drive Godot's gamepad layer. GODOT_MUOS_MAPPING="19004ca6010000000100000000010000,muOS-Keys,a:b0,b:b1,x:b3,y:b2,leftshoulder:b4,rightshoulder:b5,lefttrigger:b10,righttrigger:b11,guide:b8,start:b7,back:b6,dpup:h0.1,dpleft:h0.8,dpright:h0.2,dpdown:h0.4,leftx:a0,lefty:a1,leftstick:b9,rightx:a2,righty:a3,rightstick:b12,platform:Linux," MUOS_SDL2_GUID="19000000010000000100000000010000" if [[ "$sdl_controllerconfig" == "${MUOS_SDL2_GUID},"* ]]; then netfishing_controllerconfig="$GODOT_MUOS_MAPPING" elif [ -n "$sdl_controllerconfig" ]; then netfishing_controllerconfig="$sdl_controllerconfig" else netfishing_controllerconfig="$GODOT_MUOS_MAPPING" fi NETFISHING_GODOT_OPTIONS=() NETFISHING_GAME_ENVIRONMENT=() DEVICE_COMPATIBILITY="" if [[ -r /proc/device-tree/compatible ]]; then DEVICE_COMPATIBILITY="$(tr '\0' ' ' /dev/null fi pm_finish