#!/bin/bash
#
# SPDX-License-Identifier: MIT
#
# PortMaster's control.txt adapted for Anbernic's stock OS by PocketKode (PocketKode Port Bridge).
# Based on PortMaster's muOS control.txt (MIT, PortMaster); the muOS-only parts (func.sh, GET_VAR,
# /mnt/mmc/MUOS) are replaced. See LICENSE and CREDITS.md.

CUR_TTY=/dev/tty0

DEVICE_NAME="RG40XXH"
ANALOG_STICKS=2

export controlfolder="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

# The app's folder (e.g. /roms/pk-minecraft): PortMaster in share/PortMaster, the port in ports/<port>
export directory="$(cd "$controlfolder/../.." && pwd | sed 's|^/||')"

export ESUDO=""
export ESUDOKILL="-1"

# The stock OS's built-in controls; SDL's own mapping for them is wrong (Y on L1, SELECT/START on L2/R2), this one
# follows Anbernic's RetroArch map (/mnt/vendor/deep/retro/autoconfig/udev/ANBERNIC-keys.cfg)
SDL_CTRL_NAME="ANBERNIC-keys"
STOCK_PAD="19002cb4010000000100000000010000,ANBERNIC-keys,a:b0,b:b1,y:b2,x:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,guide:b8,leftstick:b9,lefttrigger:b10,righttrigger:b11,rightstick:b12,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Linux,"
echo "$STOCK_PAD" > /tmp/gamecontrollerdb.txt
export SDL_GAMECONTROLLERCONFIG_FILE="/tmp/gamecontrollerdb.txt"
export SDL_GAMECONTROLLERCONFIG="$STOCK_PAD"

get_controls() {
  cat /dev/zero > /dev/fb0 2>/dev/null
  LOWRES="N"
  ANALOGSTICKS=$ANALOG_STICKS
  sdl_controllerconfig="$STOCK_PAD"
}

# device_info.txt reads `free` (Chinese on the stock OS unless LANG=C) and SDL's current mode (the stock OS's
# framebuffer reports a 1280x1024 virtual size; the panel is 640x480)
LANG=C LC_ALL=C source $controlfolder/device_info.txt
export DISPLAY_WIDTH=640 DISPLAY_HEIGHT=480 ASPECT_X=4 ASPECT_Y=3
[ -z "$DEVICE_RAM" ] && export DEVICE_RAM=1
source $controlfolder/funcs.txt

# gptokeyb reads the controller through SDL: from APPS it would get /usr/lib's SDL 2.0.12, which doesn't open the
# built-in controls; SDL 2.28 (/usr/lib/aarch64-linux-gnu) does
GPTK_LIBS="/usr/lib/aarch64-linux-gnu:$LD_LIBRARY_PATH"
export GPTOKEYB2="$ESUDO env LD_LIBRARY_PATH=$GPTK_LIBS LD_PRELOAD=$controlfolder/libinterpose.${DEVICE_ARCH}.so $controlfolder/gptokeyb2 $ESUDOKILL"
export GPTOKEYB="$ESUDO env LD_LIBRARY_PATH=$GPTK_LIBS $controlfolder/gptokeyb $ESUDOKILL"
