Merge pull request #11 from JustEnoughLinuxOS/dev

Merge in Dev Changes
This commit is contained in:
Tim Flaman 2022-12-16 14:34:33 -06:00 committed by GitHub
commit bd5275302f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
59 changed files with 2997 additions and 190 deletions

View file

@ -59,5 +59,6 @@ makeinstall_target() {
--with-system \
--with-thread \
--with-nowide \
--with-context \
install
}

View file

@ -2,7 +2,7 @@
# Copyright (C) 2019-present Shanti Gilbert (https://github.com/shantigilbert)
# Copyright (C) 2022-present Fewtarius
PKG_NAME="PPSSPPSDL"
PKG_VERSION="604810607b0fec15dfe942947ede5c65abd92eaf"
PKG_VERSION="aad5d7542e1f8e805121df4713317eda3ba9eb02"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPLv2"

View file

@ -10,7 +10,7 @@ case ${DEVICE} in
RG552|handheld)
PKG_SITE="https://github.com/dolphin-emu/dolphin"
PKG_URL="${PKG_SITE}.git"
PKG_VERSION="000c6c48137028284598043d6f116ac959f41042"
PKG_VERSION="a1c4861ad8666b622f96266a20af6e8e787c9693"
PKG_PATCH_DIRS+=" wayland"
;;
*)

View file

@ -0,0 +1,203 @@
diff --git a/Source/Core/Common/Config/Config.cpp b/Source/Core/Common/Config/Config.cpp
index 2211d0d5fb..29004787e4 100644
--- a/Source/Core/Common/Config/Config.cpp
+++ b/Source/Core/Common/Config/Config.cpp
@@ -5,6 +5,7 @@
#include <algorithm>
#include <list>
#include <map>
+#include <mutex>
#include <shared_mutex>
#include "Common/Config/Config.h"
diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp b/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp
index dc775ef607..0802a06039 100644
--- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp
+++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp
@@ -133,13 +133,13 @@ const OpArg& Arm64GPRCache::GetGuestGPROpArg(size_t preg) const
Arm64GPRCache::GuestRegInfo Arm64GPRCache::GetGuestGPR(size_t preg)
{
ASSERT(preg < GUEST_GPR_COUNT);
- return {32, PPCSTATE_OFF(gpr[preg]), m_guest_registers[GUEST_GPR_OFFSET + preg]};
+ return {32, PPCSTATE_OFF_GPR(preg), m_guest_registers[GUEST_GPR_OFFSET + preg]};
}
Arm64GPRCache::GuestRegInfo Arm64GPRCache::GetGuestCR(size_t preg)
{
ASSERT(preg < GUEST_CR_COUNT);
- return {64, PPCSTATE_OFF(cr.fields[preg]), m_guest_registers[GUEST_CR_OFFSET + preg]};
+ return {64, PPCSTATE_OFF_CR(preg), m_guest_registers[GUEST_CR_OFFSET + preg]};
}
Arm64GPRCache::GuestRegInfo Arm64GPRCache::GetGuestByIndex(size_t index)
@@ -450,8 +450,9 @@ ARM64Reg Arm64FPRCache::R(size_t preg, RegType type)
{
// Load the high 64bits from the file and insert them in to the high 64bits of the host
// register
- ARM64Reg tmp_reg = GetReg();
- m_float_emit->LDR(64, INDEX_UNSIGNED, tmp_reg, PPC_REG, u32(PPCSTATE_OFF(ps[preg].ps1)));
+ const ARM64Reg tmp_reg = GetReg();
+ m_float_emit->LDR(64, INDEX_UNSIGNED, tmp_reg, PPC_REG,
+ static_cast<s32>(PPCSTATE_OFF_PS1(preg)));
m_float_emit->INS(64, host_reg, 1, tmp_reg, 0);
UnlockRegister(tmp_reg);
@@ -505,7 +506,7 @@ ARM64Reg Arm64FPRCache::R(size_t preg, RegType type)
}
reg.SetDirty(false);
m_float_emit->LDR(load_size, INDEX_UNSIGNED, host_reg, PPC_REG,
- u32(PPCSTATE_OFF(ps[preg].ps0)));
+ static_cast<s32>(PPCSTATE_OFF_PS0(preg)));
return host_reg;
}
default:
@@ -553,7 +554,8 @@ ARM64Reg Arm64FPRCache::RW(size_t preg, RegType type)
// We are doing a full 128bit store because it takes 2 cycles on a Cortex-A57 to do a 128bit
// store.
// It would take longer to do an insert to a temporary and a 64bit store than to just do this.
- m_float_emit->STR(128, INDEX_UNSIGNED, flush_reg, PPC_REG, u32(PPCSTATE_OFF(ps[preg].ps0)));
+ m_float_emit->STR(128, INDEX_UNSIGNED, flush_reg, PPC_REG,
+ static_cast<s32>(PPCSTATE_OFF_PS0(preg)));
break;
case REG_DUP_SINGLE:
flush_reg = GetReg();
@@ -561,7 +563,8 @@ ARM64Reg Arm64FPRCache::RW(size_t preg, RegType type)
[[fallthrough]];
case REG_DUP:
// Store PSR1 (which is equal to PSR0) in memory.
- m_float_emit->STR(64, INDEX_UNSIGNED, flush_reg, PPC_REG, u32(PPCSTATE_OFF(ps[preg].ps1)));
+ m_float_emit->STR(64, INDEX_UNSIGNED, flush_reg, PPC_REG,
+ static_cast<s32>(PPCSTATE_OFF_PS1(preg)));
break;
default:
// All other types doesn't store anything in PSR1.
@@ -688,7 +691,7 @@ void Arm64FPRCache::FlushRegister(size_t preg, bool maintain_state)
if (dirty)
{
m_float_emit->STR(store_size, INDEX_UNSIGNED, host_reg, PPC_REG,
- u32(PPCSTATE_OFF(ps[preg].ps0)));
+ static_cast<s32>(PPCSTATE_OFF_PS0(preg)));
}
if (!maintain_state)
@@ -701,12 +704,18 @@ void Arm64FPRCache::FlushRegister(size_t preg, bool maintain_state)
{
if (dirty)
{
- // If the paired registers were at the start of ppcState we could do an STP here.
- // Too bad moving them would break savestate compatibility between x86_64 and AArch64
- // m_float_emit->STP(64, INDEX_SIGNED, host_reg, host_reg, PPC_REG,
- // PPCSTATE_OFF(ps[preg].ps0));
- m_float_emit->STR(64, INDEX_UNSIGNED, host_reg, PPC_REG, u32(PPCSTATE_OFF(ps[preg].ps0)));
- m_float_emit->STR(64, INDEX_UNSIGNED, host_reg, PPC_REG, u32(PPCSTATE_OFF(ps[preg].ps1)));
+ if (PPCSTATE_OFF_PS0(preg) <= 504)
+ {
+ m_float_emit->STP(64, INDEX_SIGNED, host_reg, host_reg, PPC_REG,
+ static_cast<s32>(PPCSTATE_OFF_PS0(preg)));
+ }
+ else
+ {
+ m_float_emit->STR(64, INDEX_UNSIGNED, host_reg, PPC_REG,
+ static_cast<s32>(PPCSTATE_OFF_PS0(preg)));
+ m_float_emit->STR(64, INDEX_UNSIGNED, host_reg, PPC_REG,
+ static_cast<s32>(PPCSTATE_OFF_PS1(preg)));
+ }
}
if (!maintain_state)
diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.h b/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.h
index 9860e4843e..c1b71f1212 100644
--- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.h
+++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.h
@@ -22,6 +22,18 @@ static const Arm64Gen::ARM64Reg DISPATCHER_PC =
#define PPCSTATE_OFF(elem) (offsetof(PowerPC::PowerPCState, elem))
+#define PPCSTATE_OFF_ARRAY(elem, i) \
+ (offsetof(PowerPC::PowerPCState, elem[0]) + sizeof(PowerPC::PowerPCState::elem[0]) * (i))
+
+#define PPCSTATE_OFF_GPR(i) PPCSTATE_OFF_ARRAY(gpr, i)
+#define PPCSTATE_OFF_CR(i) PPCSTATE_OFF_ARRAY(cr.fields, i)
+#define PPCSTATE_OFF_SR(i) PPCSTATE_OFF_ARRAY(sr, i)
+#define PPCSTATE_OFF_SPR(i) PPCSTATE_OFF_ARRAY(spr, i)
+
+static_assert(std::is_same_v<decltype(PowerPC::PowerPCState::ps[0]), PowerPC::PairedSingle&>);
+#define PPCSTATE_OFF_PS0(i) (PPCSTATE_OFF_ARRAY(ps, i) + offsetof(PowerPC::PairedSingle, ps0))
+#define PPCSTATE_OFF_PS1(i) (PPCSTATE_OFF_ARRAY(ps, i) + offsetof(PowerPC::PairedSingle, ps1))
+
// Some asserts to make sure we will be able to load everything
static_assert(PPCSTATE_OFF(spr[1023]) <= 16380, "LDR(32bit) can't reach the last SPR");
static_assert((PPCSTATE_OFF(ps[0].ps0) % 8) == 0,
diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp b/Source/Core/Core/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp
index d5889fd62c..427afe8c15 100644
--- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp
+++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp
@@ -111,7 +111,7 @@ void JitArm64::mfsr(UGeckoInstruction inst)
JITDISABLE(bJITSystemRegistersOff);
gpr.BindToRegister(inst.RD, false);
- LDR(INDEX_UNSIGNED, gpr.R(inst.RD), PPC_REG, PPCSTATE_OFF(sr[inst.SR]));
+ LDR(INDEX_UNSIGNED, gpr.R(inst.RD), PPC_REG, PPCSTATE_OFF_SR(inst.SR));
}
void JitArm64::mtsr(UGeckoInstruction inst)
@@ -120,7 +120,7 @@ void JitArm64::mtsr(UGeckoInstruction inst)
JITDISABLE(bJITSystemRegistersOff);
gpr.BindToRegister(inst.RS, true);
- STR(INDEX_UNSIGNED, gpr.R(inst.RS), PPC_REG, PPCSTATE_OFF(sr[inst.SR]));
+ STR(INDEX_UNSIGNED, gpr.R(inst.RS), PPC_REG, PPCSTATE_OFF_SR(inst.SR));
}
void JitArm64::mfsrin(UGeckoInstruction inst)
diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStorePaired.cpp b/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStorePaired.cpp
index f6a63ee2e6..91da6b2643 100644
--- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStorePaired.cpp
+++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStorePaired.cpp
@@ -77,7 +77,7 @@ void JitArm64::psq_l(UGeckoInstruction inst)
}
else
{
- LDR(INDEX_UNSIGNED, scale_reg, PPC_REG, PPCSTATE_OFF(spr[SPR_GQR0 + inst.I]));
+ //LDR(INDEX_UNSIGNED, scale_reg, PPC_REG, PPCSTATE_OFF(spr[SPR_GQR0 + inst.I]));
UBFM(type_reg, scale_reg, 16, 18); // Type
UBFM(scale_reg, scale_reg, 24, 29); // Scale
@@ -179,7 +179,7 @@ void JitArm64::psq_st(UGeckoInstruction inst)
m_float_emit.FCVTN(32, D0, VS);
}
- LDR(INDEX_UNSIGNED, scale_reg, PPC_REG, PPCSTATE_OFF(spr[SPR_GQR0 + inst.I]));
+ //LDR(INDEX_UNSIGNED, scale_reg, PPC_REG, PPCSTATE_OFF(spr[SPR_GQR0 + inst.I]));
UBFM(type_reg, scale_reg, 0, 2); // Type
UBFM(scale_reg, scale_reg, 8, 13); // Scale
diff --git a/Source/Core/DiscIO/WIACompression.cpp b/Source/Core/DiscIO/WIACompression.cpp
index 20d19c4877..10d6d67c22 100644
--- a/Source/Core/DiscIO/WIACompression.cpp
+++ b/Source/Core/DiscIO/WIACompression.cpp
@@ -165,18 +165,18 @@ bool Bzip2Decompressor::Decompress(const DecompressionBuffer& in, DecompressionB
m_started = true;
}
- constexpr auto clamped_cast = [](size_t x) {
- return static_cast<unsigned int>(
- std::min<size_t>(std::numeric_limits<unsigned int>().max(), x));
- };
+ //constexpr auto clamped_cast = [](size_t x) {
+ //return static_cast<unsigned int>(
+ //std::min<size_t>(std::numeric_limits<unsigned int>().max(), x));
+ //};
char* const in_ptr = reinterpret_cast<char*>(const_cast<u8*>(in.data.data() + *in_bytes_read));
m_stream.next_in = in_ptr;
- m_stream.avail_in = clamped_cast(in.bytes_written - *in_bytes_read);
+ //m_stream.avail_in = clamped_cast(in.bytes_written - *in_bytes_read);
char* const out_ptr = reinterpret_cast<char*>(out->data.data() + out->bytes_written);
m_stream.next_out = out_ptr;
- m_stream.avail_out = clamped_cast(out->data.size() - out->bytes_written);
+ //m_stream.avail_out = clamped_cast(out->data.size() - out->bytes_written);
const int result = BZ2_bzDecompress(&m_stream);

View file

@ -128,7 +128,7 @@ ln -sf /storage/roms/savestates/gamecube /storage/.config/dolphin-emu/StateSaves
fi
#GC Controller Profile
if [ "$CON" = "default" ]
if [ "$CON" = "gcpad" ]
then
cp -r /usr/config/dolphin-emu/GCPadNew.ini /storage/.config/dolphin-emu/GCPadNew.ini
fi

View file

@ -10,7 +10,7 @@ PKG_SHORTDESC="Fast PlayStation 1 emulator for x86-64/AArch32/AArch64 "
case ${DEVICE} in
RG552|handheld)
PKG_VERSION="9d23df3aba5f132fdc5ad46da47c90d77bbf4725"
PKG_VERSION="3f5552d6acb429a3e953b40c1734fda2cdac72be"
PKG_PATCH_DIRS+=" new"
;;
*)

View file

@ -18,20 +18,30 @@ if [ ! "${OPENGL}" = "no" ]; then
fi
if [ "${OPENGLES_SUPPORT}" = yes ]; then
# if [ "${DEVICE}" = "RG552" ]
# then
# PKG_MAKE_OPTS_TARGET+="USE_GLES=0"
# else
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
PKG_MAKE_OPTS_TARGET+="USE_GLES=1"
# fi
fi
make_target() {
case ${ARCH} in
arm|aarch64)
export HOST_CPU=aarch64
# if [ "${DEVICE}" = "RG552" ]
# then
# export USE_GLES=0
# else
export USE_GLES=1
# fi
BINUTILS="$(get_build_dir binutils)/.aarch64-libreelec-linux-gnueabi"
;;
esac
export APIDIR=$(get_build_dir mupen64plussa-core)/.install_pkg/usr/local/include/mupen64plus
export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -D_REENTRANT"
export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -pthread"
export SDL_LDLIBS="-lSDL2_net -lSDL2"
export CROSS_COMPILE="${TARGET_PREFIX}"
export V=1

View file

@ -136,7 +136,7 @@ Joy Mapping Increase Volume = ""
# Joystick event string for decreasing the volume
Joy Mapping Decrease Volume = ""
# Joystick event string for fast-forward
Joy Mapping Fast Forward = ""
Joy Mapping Fast Forward = "J0B8/B7"
# Joystick event string for advancing by one frame when paused
Joy Mapping Frame Advance = ""
# Joystick event string for pressing the game shark button

View file

@ -136,7 +136,7 @@ Joy Mapping Increase Volume = ""
# Joystick event string for decreasing the volume
Joy Mapping Decrease Volume = ""
# Joystick event string for fast-forward
Joy Mapping Fast Forward = ""
Joy Mapping Fast Forward = "J0B8/B11"
# Joystick event string for advancing by one frame when paused
Joy Mapping Frame Advance = ""
# Joystick event string for pressing the game shark button

View file

@ -136,7 +136,7 @@ Joy Mapping Increase Volume = ""
# Joystick event string for decreasing the volume
Joy Mapping Decrease Volume = ""
# Joystick event string for fast-forward
Joy Mapping Fast Forward = ""
Joy Mapping Fast Forward = "J0B8/B11"
# Joystick event string for advancing by one frame when paused
Joy Mapping Frame Advance = ""
# Joystick event string for pressing the game shark button

View file

@ -136,7 +136,7 @@ Joy Mapping Increase Volume = ""
# Joystick event string for decreasing the volume
Joy Mapping Decrease Volume = ""
# Joystick event string for fast-forward
Joy Mapping Fast Forward = ""
Joy Mapping Fast Forward = "J0B8/B7"
# Joystick event string for advancing by one frame when paused
Joy Mapping Frame Advance = ""
# Joystick event string for pressing the game shark button

View file

@ -136,7 +136,7 @@ Joy Mapping Increase Volume = ""
# Joystick event string for decreasing the volume
Joy Mapping Decrease Volume = ""
# Joystick event string for fast-forward
Joy Mapping Fast Forward = ""
Joy Mapping Fast Forward = "J0B8/B7"
# Joystick event string for advancing by one frame when paused
Joy Mapping Frame Advance = ""
# Joystick event string for pressing the game shark button
@ -434,6 +434,8 @@ EnableNativeResTexrects = 1
ThreadedVideo = 1
# Screen aspect ratio (0=stretch, 1=force 4:3, 2=force 16:9, 3=adjust)
AspectRatio = 1
# Display On-screen FPS
ShowFPS = 0
[Video-Glide64mk2]
@ -542,6 +544,8 @@ fb_render = -1
autoframeskip = False
# If autoframeskip is true, skip up to this many frames to maintain clock schedule; if autoframeskip is false, skip exactly this many frames
maxframeskip = 0
# Display On-screen FPS
show_fps = 0
[Video-Rice]

View file

@ -136,7 +136,7 @@ Joy Mapping Increase Volume = ""
# Joystick event string for decreasing the volume
Joy Mapping Decrease Volume = ""
# Joystick event string for fast-forward
Joy Mapping Fast Forward = ""
Joy Mapping Fast Forward = "J0B8/B7"
# Joystick event string for advancing by one frame when paused
Joy Mapping Frame Advance = ""
# Joystick event string for pressing the game shark button
@ -384,7 +384,7 @@ AudioPlugin = "mupen64plus-audio-sdl.so"
# Filename of input plugin
InputPlugin = "mupen64plus-input-sdl.so"
# Filename of RSP plugin
RspPlugin = "mupen64plus-rsp-cxd4.so"
RspPlugin = "mupen64plus-rsp-hle.so"
[Video-General]
@ -404,9 +404,11 @@ Rotate = 0
###### Hardware Compatibility ######
# Leave enabled unless a mobile gpu doesn't support it.
EnableFragmentDepthWrite = 1
EnableFragmentDepthWrite = 0
# Hardware per pixel lighting, supposedly good for GLES3.1 devices or higher.
EnableHWLighting = 0
EnableHWLighting = 1
# Do not use shaders to emulate N64 blending modes. Works faster on slow GPU. Can cause glitches.
EnableLegacyBlending = 0
###### Enhancements #######
# Internal render resoluton rather than output. So 2 x 240p is 480p, etc.
@ -419,7 +421,7 @@ FXAA = 0
anisotropy = 0
# Bilinear filtering mode (0=N64 3point, 1=standard)
# @rishooty: best to use this at 1x native res, any higher turn it off.
bilinearMode = 1
bilinearMode = 0
###### Compatibility ######
# Make texrect coordinates continuous to avoid black lines between them. (0=Off/default, 1=Auto, 2=Force)

View file

@ -6,38 +6,25 @@
. /etc/profile
echo 'starting mupen64plus stand alone emulator...'
#Emulation Station Features
CORE="$1"
ROM="${2##*/}"
PLATFORM="n64"
GAME=$(echo "${2}"| sed "s#^/.*/##")
ASPECT=$(get_setting game_aspect_ratio n64 "${GAME}")
IRES=$(get_setting internal_resolution n64 "${GAME}")
RSP=$(get_setting rsp_plugin n64 "${GAME}")
FPS=$(get_setting show_fps n64 "${GAME}")
PAK=$(get_setting controller_pak n64 "${GAME}")
CON=$(get_setting input_configuration n64 "${GAME}")
SHARE="/usr/local/share/mupen64plus"
INPUTCFGBASE="$SHARE/InputAutoCfg.ini"
CONF="/storage/.config/system/configs/system.cfg"
M64PCONF="/storage/.config/game/configs/mupen64plussa/mupen64plus.cfg"
TMP="/tmp/mupen64plussa"
GAMEDATA="/storage/.config/game/configs/mupen64plussa"
rm -rf $TMP
mkdir -p $TMP
function get_setting() {
#We look for the setting on the ROM first, if not found we search for platform and lastly we search globally
PAT="s|^${PLATFORM}\[\"${ROM}\"\].*${1}=\(.*\)|\1|p"
EES=$(sed -n "${PAT}" "${CONF}" | head -1)
if [ -z "${EES}" ]; then
PAT="s|^${PLATFORM}[\.-]${1}=\(.*\)|\1|p"
EES=$(sed -n "${PAT}" "${CONF}" | head -1)
fi
if [ -z "${EES}" ]; then
PAT="s|^global[\.-].*${1}=\(.*\)|\1|p"
EES=$(sed -n "${PAT}" "${CONF}" | head -1)
fi
[ -z "${EES}" ] && EES="false"
}
RESOLUTION=$(batocera-resolution "currentResolution")
RESA=${RESOLUTION%x*}
RESB=${RESOLUTION#*x}
SCREENWIDTH=$((RESA>=RESB ? RESA : RESB))
SCREENHEIGHT=$((RESA<RESB ? RESA : RESB))
if [[ ! -f "$GAMEDATA/custominput.ini" ]]; then
mkdir -p $GAMEDATA
@ -49,58 +36,62 @@ if [[ ! -f "$M64PCONF" ]]; then
cp $SHARE/mupen64plus.cfg $M64PCONF
fi
rm -rf $TMP
mkdir -p $TMP
cp $M64PCONF $TMP
RESOLUTION=$(batocera-resolution "currentResolution")
echo ${RESOLUTION}
RESA=${RESOLUTION%x*}
RESB=${RESOLUTION#*x}
SCREENWIDTH=$((RESA>=RESB ? RESA : RESB))
echo ${SCREENWIDTH}
SCREENHEIGHT=$((RESA<RESB ? RESA : RESB))
echo ${SCREENHEIGHT}
SET_PARAMS="--set Core[SharedDataPath]=$TMP --set Video-Rice[ResolutionWidth]=$SCREENWIDTH"
# Game Aspect Ratio
# Get configuration from system.cfg
get_setting "game_aspect_ratio"
echo ${EES}
if [ "${EES}" == "fullscreen" ]; then
# TODO: Set aspect ratio to fullscreen
SET_PARAMS="$SET_PARAMS --set Video-General[ScreenWidth]=$SCREENWIDTH --set Video-General[ScreenHeight]=$SCREENHEIGHT --set Video-Glide64mk2[aspect]=2 --set Video-GLideN64[AspectRatio]=3"
else
# TODO: Set aspect ratio to 4:3
if [ $1 = "m64p_rice" ]; then
GAMEWIDTH=$(((SCREENHEIGHT * 4) / 3))
SET_PARAMS="$SET_PARAMS --set Video-General[ScreenWidth]=$GAMEWIDTH --set Video-General[ScreenHeight]=$SCREENHEIGHT"
#Aspect Ratio
if [ "${ASPECT}" = "fullscreen" ]; then
# TODO: Set aspect ratio to fullscreen
SET_PARAMS="$SET_PARAMS --set Video-General[ScreenWidth]=$SCREENWIDTH --set Video-General[ScreenHeight]=$SCREENHEIGHT --set Video-Glide64mk2[aspect]=2 --set Video-GLideN64[AspectRatio]=3"
else
SET_PARAMS="$SET_PARAMS --set Video-General[ScreenWidth]=$SCREENWIDTH --set Video-General[ScreenHeight]=$SCREENHEIGHT --set Video-Glide64mk2[aspect]=0 --set Video-GLideN64[AspectRatio]=1"
# TODO: Set aspect ratio to 4:3
if [ "{$CORE}" = "m64p_rice" ]; then
GAMEWIDTH=$(((SCREENHEIGHT * 4) / 3))
SET_PARAMS="$SET_PARAMS --set Video-General[ScreenWidth]=$GAMEWIDTH --set Video-General[ScreenHeight]=$SCREENHEIGHT"
else
SET_PARAMS="$SET_PARAMS --set Video-General[ScreenWidth]=$SCREENWIDTH --set Video-General[ScreenHeight]=$SCREENHEIGHT --set Video-Glide64mk2[aspect]=0 --set Video-GLideN64[AspectRatio]=1"
fi
fi
fi
# Game Aspect Ratio
# Get configuration from system.cfg
get_setting "input_configuration"
echo ${EES}
if [ "${EES}" == "zlswap" ]; then
#cat $INPUTCFGBASE <(echo) $SHARE/zlswap.ini > $TMP/InputAutoCfg.ini
cp $SHARE/zlswap.ini $TMP/InputAutoCfg.ini
elif [ "${EES}" == "custom" ]; then
cp $GAMEDATA/custominput.ini $TMP/InputAutoCfg.ini
else
# Default
cp $SHARE/default.ini $TMP/InputAutoCfg.ini
fi
# Native Res Factor (Upscaling)
if [ "{$CORE}" = "m64p_gliden64" ]; then
sed -i "/UseNativeResolutionFactor/c\UseNativeResolutionFactor = $IRES" /tmp/mupen64plussa/mupen64plus.cfg
fi
# Input Config
if [ "${CON}" = "zlswap" ]; then
cp $SHARE/zlswap.ini $TMP/InputAutoCfg.ini
elif [ "${CON}" = "custom" ]; then
cp $GAMEDATA/custominput.ini $TMP/InputAutoCfg.ini
else
# Default
cp $SHARE/default.ini $TMP/InputAutoCfg.ini
fi
# Controller Pak
sed -i "0,/plugin =/c\plugin = $PAK" /tmp/mupen64plussa/mupen64plus.cfg
# Show FPS
# Get configuration from system.cfg
get_setting "show_fps"
echo ${EES}
if [ "${EES}" == "auto" ] || [ "${EES}" == "disabled" ] || [ "${EES}" == "false" ] || [ "${EES}" == "none" ] || [ "${EES}" == "0" ]; then
SET_PARAMS="$SET_PARAMS --set Video-Glide64mk2[show_fps]=0 --set Video-Rice[ShowFPS]=\"False\" --set Video-GLideN64[ShowFPS]=0"
if [ "${FPS}" = "true" ]; then
sed -i '/ShowFPS = (False|True)/c\ShowFPS = True' /tmp/mupen64plussa/mupen64plus.cfg
sed -i '/ShowFPS = [0,1]/c\ShowFPS = 1' /tmp/mupen64plussa/mupen64plus.cfg
sed -i '/show_fps/c\show_fps = 1' /tmp/mupen64plussa/mupen64plus.cfg
else
sed -i '/ShowFPS = (False|True)/c\ShowFPS = False' /tmp/mupen64plussa/mupen64plus.cfg
sed -i '/ShowFPS = [0,1]/c\ShowFPS = 0' /tmp/mupen64plussa/mupen64plus.cfg
sed -i '/show_fps/c\show_fps = 0' /tmp/mupen64plussa/mupen64plus.cfg
fi
# RSP
if [ "${RSP}" = "hle" ]; then
SET_PARAMS="$SET_PARAMS --rsp mupen64plus-rsp-hle.so"
else
SET_PARAMS="$SET_PARAMS --set Video-Glide64mk2[show_fps]=1 --set Video-Rice[ShowFPS]=\"True\" --set Video-GLideN64[ShowFPS]=1"
SET_PARAMS="$SET_PARAMS --rsp mupen64plus-rsp-cxd4.so"
fi
echo ${SET_PARAMS}

View file

@ -28,12 +28,17 @@ make_target() {
export VC=0
export CROSS_COMPILE="${TARGET_PREFIX}"
BINUTILS="$(get_build_dir binutils)/.aarch64-libreelec-linux-gnueabi"
# if [ "${DEVICE}" = "RG552" ]
# then
# export USE_GLES=0
# else
export USE_GLES=1
# fi
;;
esac
export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -D_REENTRANT"
export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -pthread"
export SDL_LDLIBS="-lSDL2_net -lSDL2"
export USE_GLES=1
export V=1
export OSD=0
make -C projects/unix clean
@ -57,6 +62,7 @@ makeinstall_target() {
cp ${PKG_DIR}/config/${DEVICE}/* ${INSTALL}/usr/local/share/mupen64plus/
chmod 644 ${INSTALL}/usr/local/share/mupen64plus/mupen64plus.cfg
fi
mkdir -p ${INSTALL}/usr/bin
cp ${PKG_DIR}/m64p.sh ${INSTALL}/usr/bin
chmod 755 ${INSTALL}/usr/bin/m64p.sh

View file

@ -18,20 +18,30 @@ if [ ! "${OPENGL}" = "no" ]; then
fi
if [ "${OPENGLES_SUPPORT}" = yes ]; then
# if [ "${DEVICE}" = "RG552" ]
# then
# PKG_MAKE_OPTS_TARGET+="USE_GLES=0"
# else
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
PKG_MAKE_OPTS_TARGET+="USE_GLES=1"
# fi
fi
make_target() {
case ${ARCH} in
arm|aarch64)
export HOST_CPU=aarch64
# if [ "${DEVICE}" = "RG552" ]
# then
# export USE_GLES=0
# else
export USE_GLES=1
# fi
BINUTILS="$(get_build_dir binutils)/.aarch64-libreelec-linux-gnueabi"
;;
esac
export APIDIR=$(get_build_dir mupen64plussa-core)/.install_pkg/usr/local/include/mupen64plus
export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -D_REENTRANT"
export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -pthread"
export SDL_LDLIBS="-lSDL2_net -lSDL2"
export CROSS_COMPILE="${TARGET_PREFIX}"
export V=1

View file

@ -15,20 +15,30 @@ fi
if [ "${OPENGLES_SUPPORT}" = yes ]; then
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
fi
if [ "${VULKAN_SUPPORT}" = "no" ]; then
PKG_MAKE_OPTS_TARGET+="HLEVIDEO=1"
else
PKG_MAKE_OPTS_TARGET+="HLEVIDEO=0"
fi
make_target() {
case ${ARCH} in
arm|aarch64)
export HOST_CPU=aarch64
# if [ "${DEVICE}" = "RG552" ]
# then
# export USE_GLES=0
# else
export USE_GLES=1
# fi
BINUTILS="$(get_build_dir binutils)/.aarch64-libreelec-linux-gnueabi"
CPPFLAGS="-DUSE_SSE2NEON"
;;
esac
export APIDIR=$(get_build_dir mupen64plussa-core)/.install_pkg/usr/local/include/mupen64plus
export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -D_REENTRANT"
export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -pthread"
export SDL_LDLIBS="-lSDL2_net -lSDL2"
export CROSS_COMPILE="${TARGET_PREFIX}"
export V=1

View file

@ -18,20 +18,30 @@ if [ ! "${OPENGL}" = "no" ]; then
fi
if [ "${OPENGLES_SUPPORT}" = yes ]; then
# if [ "${DEVICE}" = "RG552" ]
# then
# PKG_MAKE_OPTS_TARGET+="USE_GLES=0"
# else
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
PKG_MAKE_OPTS_TARGET+="USE_GLES=1"
# fi
fi
make_target() {
case ${ARCH} in
arm|aarch64)
export HOST_CPU=aarch64
# if [ "${DEVICE}" = "RG552" ]
# then
# export USE_GLES=0
# else
export USE_GLES=1
# fi
BINUTILS="$(get_build_dir binutils)/.aarch64-libreelec-linux-gnueabi"
;;
esac
export APIDIR=$(get_build_dir mupen64plussa-core)/.install_pkg/usr/local/include/mupen64plus
export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -D_REENTRANT"
export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -pthread"
export SDL_LDLIBS="-lSDL2_net -lSDL2"
export CROSS_COMPILE="${TARGET_PREFIX}"
export V=1

View file

@ -18,20 +18,30 @@ if [ ! "${OPENGL}" = "no" ]; then
fi
if [ "${OPENGLES_SUPPORT}" = yes ]; then
# if [ "${DEVICE}" = "RG552" ]
# then
# PKG_MAKE_OPTS_TARGET+="USE_GLES=0"
# else
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
PKG_MAKE_OPTS_TARGET+="USE_GLES=1"
# fi
fi
make_target() {
case ${ARCH} in
arm|aarch64)
export HOST_CPU=aarch64
# if [ "${DEVICE}" = "RG552" ]
# then
# export USE_GLES=0
# else
export USE_GLES=1
# fi
BINUTILS="$(get_build_dir binutils)/.aarch64-libreelec-linux-gnueabi"
;;
esac
export APIDIR=$(get_build_dir mupen64plussa-core)/.install_pkg/usr/local/include/mupen64plus
export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -D_REENTRANT"
export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -pthread"
export SDL_LDLIBS="-lSDL2_net -lSDL2"
export CROSS_COMPILE="${TARGET_PREFIX}"
export V=1

View file

@ -18,20 +18,30 @@ if [ ! "${OPENGL}" = "no" ]; then
fi
if [ "${OPENGLES_SUPPORT}" = yes ]; then
# if [ "${DEVICE}" = "RG552" ]
# then
# PKG_MAKE_OPTS_TARGET+="USE_GLES=0"
# else
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
PKG_MAKE_OPTS_TARGET+="USE_GLES=1"
# fi
fi
make_target() {
case ${ARCH} in
arm|aarch64)
export HOST_CPU=aarch64
# if [ "${DEVICE}" = "RG552" ]
# then
# export USE_GLES=0
# else
export USE_GLES=1
# fi
BINUTILS="$(get_build_dir binutils)/.aarch64-libreelec-linux-gnueabi"
;;
esac
export APIDIR=$(get_build_dir mupen64plussa-core)/.install_pkg/usr/local/include/mupen64plus
export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -D_REENTRANT"
export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -pthread"
export SDL_LDLIBS="-lSDL2_net -lSDL2"
export CROSS_COMPILE="${TARGET_PREFIX}"
export V=1

View file

@ -24,19 +24,25 @@ make_target() {
case ${ARCH} in
arm|aarch64)
export HOST_CPU=aarch64
export USE_GLES=1
BINUTILS="$(get_build_dir binutils)/.aarch64-libreelec-linux-gnueabi"
PKG_MAKE_OPTS_TARGET+="-DNOHQ=On -DCRC_ARMV8=On -DEGL=0n -DNEON_OPT=On"
# if [ "${DEVICE}" = "RG552" ]
# then
# export USE_GLES=0
# PKG_MAKE_OPTS_TARGET+="-DNOHQ=On -DCRC_ARMV8=On -DNEON_OPT=On"
# else
export USE_GLES=1
PKG_MAKE_OPTS_TARGET+="-DNOHQ=On -DCRC_ARMV8=On -DEGL=On -DNEON_OPT=On"
# fi
;;
esac
export APIDIR=$(get_build_dir mupen64plussa-core)/.install_pkg/usr/local/include/mupen64plus
export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -D_REENTRANT"
export SDL_CFLAGS="-I${SYSROOT_PREFIX}/usr/include/SDL2 -pthread"
export SDL_LDLIBS="-lSDL2_net -lSDL2"
export CROSS_COMPILE="${TARGET_PREFIX}"
export V=1
export VC=0
./src/getRevision.sh
cmake ${PKG_MAKE_OPTS_TARGET} -DMUPENPLUSAPI=On -S src -B projects/cmake
cmake ${PKG_MAKE_OPTS_TARGET} -DMUPENPLUSAPI=On -DGLIDEN64_BUILD_TYPE=Release -DCMAKE_C_COMPILER="${CC}" -DCMAKE_CXX_COMPILER="${CXX}" -DCMAKE_C_FLAGS="${CFLAGS}" -DCMAKE_CXX_FLAGS="${CXXFLAGS} -pthread" -S src -B projects/cmake
make clean -C projects/cmake
make -Wno-unused-variable -C projects/cmake
}

View file

@ -18,20 +18,30 @@ if [ ! "${OPENGL}" = "no" ]; then
fi
if [ "${OPENGLES_SUPPORT}" = yes ]; then
# if [ "${DEVICE}" = "RG552" ]
# then
# PKG_MAKE_OPTS_TARGET+="USE_GLES=0"
# else
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
PKG_MAKE_OPTS_TARGET+="USE_GLES=1"
# fi
fi
make_target() {
case ${ARCH} in
arm|aarch64)
export HOST_CPU=aarch64
# if [ "${DEVICE}" = "RG552" ]
# then
# export USE_GLES=0
# else
export USE_GLES=1
# fi
BINUTILS="$(get_build_dir binutils)/.aarch64-libreelec-linux-gnueabi"
;;
esac
export APIDIR=$(get_build_dir mupen64plussa-core)/.install_pkg/usr/local/include/mupen64plus
export SDL_CFLAGS="-I$SYSROOT_PREFIX/usr/include/SDL2 -D_REENTRANT"
export SDL_CFLAGS="-I$SYSROOT_PREFIX/usr/include/SDL2 -pthread"
export SDL_LDLIBS="-lSDL2_net -lSDL2"
export CROSS_COMPILE="$TARGET_PREFIX"
export V=1

View file

@ -0,0 +1,148 @@
[General]
LastFilename =
ShowLag = False
ShowFrameCount = False
ISOPaths = 1
RecursiveISOPaths = False
NANDRootPath =
WirelessMac =
[Interface]
ConfirmStop = True
UsePanicHandlers = True
OnScreenDisplayMessages = True
HideCursor = False
AutoHideCursor = False
MainWindowPosX = 403
MainWindowPosY = 148
MainWindowWidth = 800
MainWindowHeight = 600
Language = 0
ShowToolbar = True
ShowStatusbar = True
ShowLogWindow = False
ShowLogConfigWindow = False
ExtendedFPSInfo = False
ThemeName40 = Clean Blue
PauseOnFocusLost = False
[Display]
FullscreenResolution = Auto
Fullscreen = True
RenderToMain = False
RenderWindowXPos = -1
RenderWindowYPos = -1
RenderWindowWidth = 640
RenderWindowHeight = 480
RenderWindowAutoSize = False
KeepWindowOnTop = False
ProgressiveScan = False
PAL60 = True
DisableScreenSaver = True
ForceNTSCJ = False
[GameList]
ListDrives = False
ListWad = True
ListElfDol = True
ListWii = True
ListGC = True
ListJap = True
ListPal = True
ListUsa = True
ListAustralia = True
ListFrance = True
ListGermany = True
ListItaly = True
ListKorea = True
ListNetherlands = True
ListRussia = True
ListSpain = True
ListTaiwan = True
ListWorld = True
ListUnknown = True
ListSort = 3
ListSortSecondary = 0
ColorCompressed = True
ColumnPlatform = True
ColumnBanner = True
ColumnNotes = True
ColumnFileName = False
ColumnID = False
ColumnRegion = True
ColumnSize = True
ColumnState = True
[Core]
HLE_BS2 = False
TimingVariance = 40
CPUCore = 4
Fastmem = True
CPUThread = True
DSPHLE = True
SkipIdle = True
SyncOnSkipIdle = True
SyncGPU = False
SyncGpuMaxDistance = 200000
SyncGpuMinDistance = -200000
SyncGpuOverclock = 1.00000000
FPRF = False
AccurateNaNs = False
DefaultISO =
DVDRoot =
Apploader =
EnableCheats = True
SelectedLanguage = 0
OverrideGCLang = False
DPL2Decoder = False
Latency = 2
MemcardAPath =
MemcardBPath =
AgpCartAPath =
AgpCartBPath =
SlotA = 1
SlotB = 255
SerialPort1 = 255
BBA_MAC =
SIDevice0 = 6
AdapterRumble0 = True
SimulateKonga0 = False
SIDevice1 = 6
AdapterRumble1 = True
SimulateKonga1 = False
SIDevice2 = 0
AdapterRumble2 = True
SimulateKonga2 = False
SIDevice3 = 0
AdapterRumble3 = True
SimulateKonga3 = False
WiiSDCard = False
WiiKeyboard = False
WiimoteContinuousScanning = False
WiimoteEnableSpeaker = False
RunCompareServer = False
RunCompareClient = False
EmulationSpeed = 1.00000000
FrameSkip = 0x00000003
Overclock = 4.00000000
OverclockEnable = False
GFXBackend =
GPUDeterminismMode = auto
PerfMapDir =
[Movie]
PauseMovie = False
Author =
DumpFrames = False
DumpFramesSilent = False
ShowInputDisplay = False
[DSP]
EnableJIT = True
DumpAudio = False
DumpUCode = False
Backend = ALSA
Volume = 100
CaptureLog = False
[Input]
BackgroundInput = False
[FifoPlayer]
LoopReplay = True
[Analytics]
ID = 5082f0c30a7e422b1220107f69d6c108
Enabled = False
PermissionAsked = True

View file

@ -0,0 +1,29 @@
[GCPad1]
Device = evdev/0/retrogame_joypad
Buttons/A = Button 1
Buttons/B = Button 0
Buttons/Start = Button 8
Buttons/X = Button 2
Buttons/Y = Button 3
Buttons/Z = Button 7
Buttons/Hotkey = Button 9
C-Stick/Dead Zone = 25.000000000000000
C-Stick/Down = Axis 3+
C-Stick/Left = Axis 2-
C-Stick/Modifier = Control_L
C-Stick/Modifier/Range = 50.000000000000000
C-Stick/Right = Axis 2+
C-Stick/Up = Axis 3-
D-Pad/Down = Button 14
D-Pad/Left = Button 15
D-Pad/Right = Button 16
D-Pad/Up = Button 13
Main Stick/Dead Zone = 25.000000000000000
Main Stick/Down = Axis 1+
Main Stick/Left = Axis 0-
Main Stick/Modifier = Shift_L
Main Stick/Modifier/Range = 50.000000000000000
Main Stick/Right = Axis 0+
Main Stick/Up = Axis 1-
Triggers/L = Button 4
Triggers/R = Button 5

View file

@ -0,0 +1,55 @@
[Hardware]
VSync = False
Adapter = 0
[Settings]
AspectRatio = 2
Crop = False
wideScreenHack = False
UseXFB = False
UseRealXFB = False
SafeTextureCacheColorSamples = 128
ShowFPS = False
LogRenderTimeToFile = False
OverlayStats = False
OverlayProjStats = False
DumpTextures = False
HiresTextures = False
ConvertHiresTextures = False
CacheHiresTextures = False
DumpEFBTarget = False
FreeLook = False
UseFFV1 = False
EnablePixelLighting = False
FastDepthCalc = True
MSAA = 1
SSAA = False
EFBScale = 2
TexFmtOverlayEnable = False
TexFmtOverlayCenter = False
Wireframe = False
DisableFog = False
EnableShaderDebugging = False
BorderlessFullscreen = False
SWZComploc = True
SWZFreeze = True
SWDumpObjects = False
SWDumpTevStages = False
SWDumpTevTexFetches = False
SWDrawStart = 0
SWDrawEnd = 100000
[Enhancements]
ForceFiltering = False
MaxAnisotropy = 0
PostProcessingShader =
[Stereoscopy]
StereoMode = 0
StereoDepth = 20
StereoConvergencePercentage = 100
StereoSwapEyes = False
[Hacks]
EFBAccessEnable = False
BBoxEnable = False
ForceProgressive = True
EFBToTextureEnable = True
EFBScaledCopy = False
EFBEmulateFormatChanges = False

View file

@ -0,0 +1,27 @@
[Wiimote1]
Device = evdev/0/retrogame_joypad
Extension = Classic
Source = 1
Classic/Buttons/A = Button 1
Classic/Buttons/B = Button 0
Classic/Buttons/X = Button 2
Classic/Buttons/Y = Button 3
Classic/Buttons/ZL = Button 6
Classic/Buttons/ZR = Button 7
Classic/Buttons/- = Button 8
Classic/Buttons/+ = Button 9
Classic/Left Stick/Up = Axis 1-
Classic/Left Stick/Down = Axis 1+
Classic/Left Stick/Left = Axis 0-
Classic/Left Stick/Right = Axis 0+
Classic/Right Stick/Up = Axis 3-
Classic/Right Stick/Down = Axis 3+
Classic/Right Stick/Left = Axis 2-
Classic/Right Stick/Right = Axis 2+
Classic/Triggers/L = Button 4
Classic/Triggers/R = Button 5
Classic/D-Pad/Up = Button 13
Classic/D-Pad/Down = Button 14
Classic/D-Pad/Left = Button 15
Classic/D-Pad/Right = Button 16

View file

@ -0,0 +1,25 @@
[Wiimote1]
Device = evdev/0/retrogame_joypad
Extension = Nunchuk
Buttons/A = Button 0
Buttons/B = Button 1
Buttons/1 = Button 3
Buttons/2 = Button 2
Buttons/- = Button 8
Buttons/+ = Button 9
D-Pad/Up = Button 13
D-Pad/Down = Button 14
D-Pad/Left = Button 15
D-Pad/Right = Button 16
Shake/X = Button 6
Shake/Y = Button 6
Shake/Z = Button 6
Nunchuk/Buttons/C = Button 5
Nunchuk/Buttons/Z = Button 4
Nunchuk/Stick/Up = Axis 1-
Nunchuk/Stick/Down = Axis 1+
Nunchuk/Stick/Left = Axis 0-
Nunchuk/Stick/Right = Axis 0+
Nunchuk/Shake/X = Button 7
Nunchuk/Shake/Y = Button 7
Nunchuk/Shake/Z = Button 7

View file

@ -0,0 +1,15 @@
[Wiimote1]
Device = evdev/0/retrogame_joypad
Buttons/A = Button 0
Buttons/B = Button 1
Buttons/1 = Button 3
Buttons/2 = Button 2
Buttons/- = Button 8
Buttons/+ = Button 9
D-Pad/Up = Button 13
D-Pad/Down = Button 14
D-Pad/Left = Button 15
D-Pad/Right = Button 16
Shake/X = Button 4
Shake/Y = Button 4
Shake/Z = Button 4

View file

@ -0,0 +1,148 @@
[General]
LastFilename =
ShowLag = False
ShowFrameCount = False
ISOPaths = 1
RecursiveISOPaths = False
NANDRootPath =
WirelessMac =
[Interface]
ConfirmStop = True
UsePanicHandlers = True
OnScreenDisplayMessages = True
HideCursor = False
AutoHideCursor = False
MainWindowPosX = 403
MainWindowPosY = 148
MainWindowWidth = 800
MainWindowHeight = 600
Language = 0
ShowToolbar = True
ShowStatusbar = True
ShowLogWindow = False
ShowLogConfigWindow = False
ExtendedFPSInfo = False
ThemeName40 = Clean Blue
PauseOnFocusLost = False
[Display]
FullscreenResolution = Auto
Fullscreen = True
RenderToMain = False
RenderWindowXPos = -1
RenderWindowYPos = -1
RenderWindowWidth = 640
RenderWindowHeight = 480
RenderWindowAutoSize = False
KeepWindowOnTop = False
ProgressiveScan = False
PAL60 = True
DisableScreenSaver = True
ForceNTSCJ = False
[GameList]
ListDrives = False
ListWad = True
ListElfDol = True
ListWii = True
ListGC = True
ListJap = True
ListPal = True
ListUsa = True
ListAustralia = True
ListFrance = True
ListGermany = True
ListItaly = True
ListKorea = True
ListNetherlands = True
ListRussia = True
ListSpain = True
ListTaiwan = True
ListWorld = True
ListUnknown = True
ListSort = 3
ListSortSecondary = 0
ColorCompressed = True
ColumnPlatform = True
ColumnBanner = True
ColumnNotes = True
ColumnFileName = False
ColumnID = False
ColumnRegion = True
ColumnSize = True
ColumnState = True
[Core]
HLE_BS2 = False
TimingVariance = 40
CPUCore = 4
Fastmem = True
CPUThread = True
DSPHLE = True
SkipIdle = True
SyncOnSkipIdle = True
SyncGPU = False
SyncGpuMaxDistance = 200000
SyncGpuMinDistance = -200000
SyncGpuOverclock = 1.00000000
FPRF = False
AccurateNaNs = False
DefaultISO =
DVDRoot =
Apploader =
EnableCheats = True
SelectedLanguage = 0
OverrideGCLang = False
DPL2Decoder = False
Latency = 2
MemcardAPath =
MemcardBPath =
AgpCartAPath =
AgpCartBPath =
SlotA = 1
SlotB = 255
SerialPort1 = 255
BBA_MAC =
SIDevice0 = 6
AdapterRumble0 = True
SimulateKonga0 = False
SIDevice1 = 6
AdapterRumble1 = True
SimulateKonga1 = False
SIDevice2 = 0
AdapterRumble2 = True
SimulateKonga2 = False
SIDevice3 = 0
AdapterRumble3 = True
SimulateKonga3 = False
WiiSDCard = False
WiiKeyboard = False
WiimoteContinuousScanning = False
WiimoteEnableSpeaker = False
RunCompareServer = False
RunCompareClient = False
EmulationSpeed = 1.00000000
FrameSkip = 0x00000003
Overclock = 4.00000000
OverclockEnable = False
GFXBackend = Vulkan
GPUDeterminismMode = auto
PerfMapDir =
[Movie]
PauseMovie = False
Author =
DumpFrames = False
DumpFramesSilent = False
ShowInputDisplay = False
[DSP]
EnableJIT = True
DumpAudio = False
DumpUCode = False
Backend = ALSA
Volume = 100
CaptureLog = False
[Input]
BackgroundInput = False
[FifoPlayer]
LoopReplay = True
[Analytics]
ID = 5082f0c30a7e422b1220107f69d6c108
Enabled = False
PermissionAsked = True

View file

@ -0,0 +1,29 @@
[GCPad1]
Device = evdev/0/Microsoft X-Box 360 pad
Buttons/A = Button 1
Buttons/B = Button 0
Buttons/Start = Button 6
Buttons/X = Button 3
Buttons/Y = Button 2
Buttons/Z = Button 5
Buttons/Hotkey = Button 7
C-Stick/Dead Zone = 25.000000000000000
C-Stick/Down = Axis 4+
C-Stick/Left = Axis 3-
C-Stick/Modifier = Control_L
C-Stick/Modifier/Range = 50.000000000000000
C-Stick/Right = Axis 3+
C-Stick/Up = Axis 4-
D-Pad/Down = Axis 7+
D-Pad/Left = Axis 6-
D-Pad/Right = Axis 6+
D-Pad/Up = Axis 7-
Main Stick/Dead Zone = 25.000000000000000
Main Stick/Down = Axis 1+
Main Stick/Left = Axis 0-
Main Stick/Modifier = Shift_L
Main Stick/Modifier/Range = 50.000000000000000
Main Stick/Right = Axis 0+
Main Stick/Up = Axis 1-
Triggers/L = Axis 2+
Triggers/R = Axis 5+

View file

@ -0,0 +1,55 @@
[Hardware]
VSync = False
Adapter = 0
[Settings]
AspectRatio = 0
Crop = False
wideScreenHack = False
UseXFB = False
UseRealXFB = False
SafeTextureCacheColorSamples = 128
ShowFPS = False
LogRenderTimeToFile = False
OverlayStats = False
OverlayProjStats = False
DumpTextures = False
HiresTextures = False
ConvertHiresTextures = False
CacheHiresTextures = False
DumpEFBTarget = False
FreeLook = False
UseFFV1 = False
EnablePixelLighting = False
FastDepthCalc = True
MSAA = 1
SSAA = False
EFBScale = 2
TexFmtOverlayEnable = False
TexFmtOverlayCenter = False
Wireframe = False
DisableFog = False
EnableShaderDebugging = False
BorderlessFullscreen = False
SWZComploc = True
SWZFreeze = True
SWDumpObjects = False
SWDumpTevStages = False
SWDumpTevTexFetches = False
SWDrawStart = 0
SWDrawEnd = 100000
[Enhancements]
ForceFiltering = False
MaxAnisotropy = 0
PostProcessingShader =
[Stereoscopy]
StereoMode = 0
StereoDepth = 20
StereoConvergencePercentage = 100
StereoSwapEyes = False
[Hacks]
EFBAccessEnable = False
BBoxEnable = False
ForceProgressive = True
EFBToTextureEnable = True
EFBScaledCopy = False
EFBEmulateFormatChanges = False

View file

@ -0,0 +1,27 @@
[Wiimote1]
Device = evdev/0/Microsoft X-Box 360 pad
Extension = Classic
Source = 1
Classic/Buttons/A = Button 1
Classic/Buttons/B = Button 0
Classic/Buttons/X = Button 3
Classic/Buttons/Y = Button 2
Classic/Buttons/ZL = Axis 2+
Classic/Buttons/ZR = Axis 5+
Classic/Buttons/- = Button 6
Classic/Buttons/+ = Button 7
Classic/Buttons/Home = Button 8
Classic/Left Stick/Up = Axis 1-
Classic/Left Stick/Down = Axis 1+
Classic/Left Stick/Left = Axis 0-
Classic/Left Stick/Right = Axis 0+
Classic/Right Stick/Up = Axis 4-
Classic/Right Stick/Down = Axis 4+
Classic/Right Stick/Left = Axis 3-
Classic/Right Stick/Right = Axis 3+
Classic/Triggers/L = Button 4
Classic/Triggers/R = Button 5
Classic/D-Pad/Up = Axis 7-
Classic/D-Pad/Down = Axis 7+
Classic/D-Pad/Left = Axis 6-
Classic/D-Pad/Right = Axis 6+

View file

@ -0,0 +1,26 @@
[Wiimote1]
Device = evdev/0/Microsoft X-Box 360 pad
Extension = Nunchuk
Buttons/A = Button 0
Buttons/B = Button 1
Buttons/1 = Button 2
Buttons/2 = Button 3
Buttons/- = Button 6
Buttons/+ = Button 7
D-Pad/Up = Axis 7-
D-Pad/Down = Axis 7+
D-Pad/Left = Axis 6-
D-Pad/Right = Axis 6+
Buttons/Home = Button 8
Shake/X = Button 4
Shake/Y = Button 4
Shake/Z = Button 4
Nunchuk/Buttons/C = Button 5
Nunchuk/Buttons/Z = Axis 5+
Nunchuk/Stick/Up = Axis 1-
Nunchuk/Stick/Down = Axis 1+
Nunchuk/Stick/Left = Axis 0-
Nunchuk/Stick/Right = Axis 0+
Nunchuk/Shake/X = Axis 2+
Nunchuk/Shake/Y = Axis 2+
Nunchuk/Shake/Z = Axis 2+

View file

@ -0,0 +1,16 @@
[Wiimote1]
Device = evdev/0/Microsoft X-Box 360 pad
Buttons/A = Button 0
Buttons/B = Button 1
Buttons/1 = Button 2
Buttons/2 = Button 3
Buttons/- = Button 6
Buttons/+ = Button 7
Buttons/Home = Button 8
Shake/X = Button 4
Shake/Y = Button 4
Shake/Z = Button 4
D-Pad/Up = Axis 7-
D-Pad/Down = Axis 7+
D-Pad/Left = Axis 6-
D-Pad/Right = Axis 6+

View file

@ -0,0 +1,27 @@
[Wiimote1]
Device = evdev/0/Microsoft X-Box 360 pad
Extension = Classic
Source = 1
Classic/Buttons/A = Button 1
Classic/Buttons/B = Button 0
Classic/Buttons/X = Button 3
Classic/Buttons/Y = Button 2
Classic/Buttons/ZL = Axis 2+
Classic/Buttons/ZR = Axis 5+
Classic/Buttons/- = Button 6
Classic/Buttons/+ = Button 7
Classic/Buttons/Home = Button 8
Classic/Left Stick/Up = Axis 1-
Classic/Left Stick/Down = Axis 1+
Classic/Left Stick/Left = Axis 0-
Classic/Left Stick/Right = Axis 0+
Classic/Right Stick/Up = Axis 4-
Classic/Right Stick/Down = Axis 4+
Classic/Right Stick/Left = Axis 3-
Classic/Right Stick/Right = Axis 3+
Classic/Triggers/L = Button 4
Classic/Triggers/R = Button 5
Classic/D-Pad/Up = Axis 7-
Classic/D-Pad/Down = Axis 7+
Classic/D-Pad/Left = Axis 6-
Classic/D-Pad/Right = Axis 6+

View file

@ -0,0 +1,62 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
PKG_NAME="primehack"
PKG_LICENSE="GPLv2"
PKG_DEPENDS_TARGET="toolchain libevdev libdrm ffmpeg zlib libpng lzo libusb zstd ecm"
PKG_SITE="https://github.com/shiiion/dolphin"
PKG_URL="${PKG_SITE}.git"
PKG_VERSION="55330bfebbcde86c169715c25f2b693cbbe55a75"
PKG_LONGDESC="PrimeHack A Dolphin Emulator fork for Metroid Prime Trilogy."
PKG_PATCH_DIRS+=" wayland"
if [ ! "${OPENGL}" = "no" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGL} glu libglvnd"
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_X11=OFF \
-DENABLE_EGL=ON"
fi
if [ "${OPENGLES_SUPPORT}" = yes ]; then
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_X11=OFF \
-DENABLE_EGL=ON"
fi
if [ "${DISPLAYSERVER}" = "wl" ]; then
PKG_DEPENDS_TARGET+=" wayland ${WINDOWMANAGER} xorg-server xrandr libXi"
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_WAYLAND=ON \
-DENABLE_X11=OFF"
fi
if [ "${VULKAN_SUPPORT}" = "yes" ]
then
PKG_DEPENDS_TARGET+=" vulkan-loader vulkan-headers"
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_VULKAN=ON"
fi
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_HEADLESS=ON \
-DENABLE_EVDEV=ON \
-DUSE_DISCORD_PRESENCE=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DUSE_MGBA=OFF \
-DLINUX_LOCAL_DEV=ON \
-DENABLE_TESTS=OFF \
-DENABLE_LLVM=OFF \
-DENABLE_ANALYTICS=OFF \
-DENABLE_LTO=ON \
-DENABLE_QT=OFF \
-DENCODE_FRAMEDUMPS=OFF \
-DENABLE_CLI_TOOL=OFF"
makeinstall_target() {
mkdir -p ${INSTALL}/usr/bin
cp -rf ${PKG_BUILD}/.${TARGET_NAME}/Binaries/primehack* ${INSTALL}/usr/bin
cp -rf ${PKG_DIR}/scripts/* ${INSTALL}/usr/bin
chmod +x ${INSTALL}/usr/bin/start_primehack.sh
mkdir -p ${INSTALL}/usr/config/primehack
cp -rf ${PKG_BUILD}/Data/Sys/* ${INSTALL}/usr/config/primehack
cp -rf ${PKG_DIR}/config/${DEVICE}/* ${INSTALL}/usr/config/primehack
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,111 @@
diff --git a/Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp b/Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp
index 6df37b4..64ade4a 100644
--- a/Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp
+++ b/Source/Core/InputCommon/ControllerInterface/evdev/evdev.cpp
@@ -392,6 +392,65 @@ void Init()
StartHotplugThread();
}
+struct joypad_udev_entry
+{
+ const char *devnode;
+ struct udev_device *dev;
+};
+
+int isNumber(const char *s) {
+ int n;
+
+ if(strlen(s) == 0) {
+ return 0;
+ }
+
+ for(n=0; n<strlen(s); n++) {
+ if(!(s[n] == '0' || s[n] == '1' || s[n] == '2' || s[n] == '3' || s[n] == '4' ||
+ s[n] == '5' || s[n] == '6' || s[n] == '7' || s[n] == '8' || s[n] == '9'))
+ return 0;
+ }
+ return 1;
+}
+
+// compare /dev/input/eventX and /dev/input/eventY where X and Y are numbers
+int strcmp_events(const char* x, const char* y) {
+
+ // find a common string
+ int n, common, is_number;
+ int a, b;
+
+ n=0;
+ while(x[n] == y[n] && x[n] != '\0' && y[n] != '\0') {
+ n++;
+ }
+ common = n;
+
+ // check if remaining string is a number
+ is_number = 1;
+ if(isNumber(x+common) == 0) is_number = 0;
+ if(isNumber(y+common) == 0) is_number = 0;
+
+ if(is_number == 1) {
+ a = atoi(x+common);
+ b = atoi(y+common);
+
+ if(a == b) return 0;
+ if(a < b) return -1;
+ return 1;
+ } else {
+ return strcmp(x, y);
+ }
+}
+
+/* Used for sorting devnodes to appear in the correct order */
+static int sort_devnodes(const void *a, const void *b)
+{
+ const struct joypad_udev_entry *aa = (const struct joypad_udev_entry *) a;
+ const struct joypad_udev_entry *bb = (const struct joypad_udev_entry *) b;
+ return strcmp_events(aa->devnode, bb->devnode);
+}
+
// Only call this when ControllerInterface::m_devices_population_mutex is locked
void PopulateDevices()
{
@@ -404,6 +463,10 @@ void PopulateDevices()
// We use udev to iterate over all /dev/input/event* devices.
// Note: the Linux kernel is currently limited to just 32 event devices. If
// this ever changes, hopefully udev will take care of this.
+ unsigned sorted_count = 0;
+ struct joypad_udev_entry sorted[64];
+ const char* devnode;
+ int i;
udev* const udev = udev_new();
ASSERT_MSG(CONTROLLERINTERFACE, udev != nullptr, "Couldn't initialize libudev.");
@@ -422,11 +485,25 @@ void PopulateDevices()
udev_device* dev = udev_device_new_from_syspath(udev, path);
- if (const char* devnode = udev_device_get_devnode(dev))
- AddDeviceNode(devnode);
-
- udev_device_unref(dev);
+ devnode = udev_device_get_devnode(dev);
+ if (devnode != NULL && sorted_count < 64) {
+ sorted[sorted_count].devnode = devnode;
+ sorted[sorted_count].dev = dev;
+ sorted_count++;
+ } else {
+ udev_device_unref(dev);
+ }
}
+
+ /* Sort the udev entries by devnode name so that they are
+ * created in the proper order */
+ qsort(sorted, sorted_count, sizeof(struct joypad_udev_entry), sort_devnodes);
+
+ for (i = 0; i < sorted_count; i++) {
+ AddDeviceNode(sorted[i].devnode);
+ udev_device_unref(sorted[i].dev);
+ }
+
udev_enumerate_unref(enumerate);
udev_unref(udev);
}

View file

@ -0,0 +1,13 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index eb0f83f..9d41166 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -128,7 +128,7 @@ endif()
include(CCache)
# for revision info
-find_package(Git)
+#find_package(Git)
if(GIT_FOUND)
# make sure version information gets re-run when the current Git HEAD changes
execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse --git-path HEAD

View file

@ -0,0 +1,13 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5124dfbc81..7936cca11d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -134,7 +134,7 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# Set up paths
set(bindir ${CMAKE_INSTALL_PREFIX}/bin CACHE PATH "bindir")
-set(datadir ${CMAKE_INSTALL_PREFIX}/share/dolphin-emu CACHE PATH "datadir")
+set(datadir ${CMAKE_INSTALL_PREFIX}/share/primehack CACHE PATH "datadir")
set(mandir ${CMAKE_INSTALL_PREFIX}/share/man CACHE PATH "mandir")
add_definitions(-DDATA_DIR="${datadir}/")

View file

@ -0,0 +1,13 @@
--- a/Source/Core/VideoBackends/OGL/OGLRender.cpp 2020-12-31 00:27:53.998709857 +0100
+++ b/Source/Core/VideoBackends/OGL/OGLRender.cpp 2020-12-31 00:28:40.414557344 +0100
@@ -736,10 +736,6 @@
g_Config.VerifyValidity();
UpdateActiveConfig();
- OSD::AddMessage(fmt::format("Video Info: {}, {}, {}", g_ogl_config.gl_vendor,
- g_ogl_config.gl_renderer, g_ogl_config.gl_version),
- 5000);
-
if (!g_ogl_config.bSupportsGLBufferStorage && !g_ogl_config.bSupportsGLPinnedMemory)
{
OSD::AddMessage(fmt::format("Your OpenGL driver does not support {}_buffer_storage.",

View file

@ -0,0 +1,39 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5124dfbc81..7936cca11d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -134,7 +134,7 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# Set up paths
set(bindir ${CMAKE_INSTALL_PREFIX}/bin CACHE PATH "bindir")
-set(datadir ${CMAKE_INSTALL_PREFIX}/share/dolphin-emu CACHE PATH "datadir")
+set(datadir ${CMAKE_INSTALL_PREFIX}/share/primehack CACHE PATH "datadir")
set(mandir ${CMAKE_INSTALL_PREFIX}/share/man CACHE PATH "mandir")
add_definitions(-DDATA_DIR="${datadir}/")
diff --git a/Source/Core/Common/CommonPaths.h b/Source/Core/Common/CommonPaths.h
index cb8aacddf8..b6d4637cc4 100644
--- a/Source/Core/Common/CommonPaths.h
+++ b/Source/Core/Common/CommonPaths.h
@@ -24,7 +24,7 @@
#define NOMEDIA_FILE ".nomedia"
#else
#define USERDATA_DIR "user"
-#define DOLPHIN_DATA_DIR "dolphin-emu"
+#define DOLPHIN_DATA_DIR "primehack"
#endif
// Dirs in both User and Sys
diff --git a/Source/Core/DolphinNoGUI/CMakeLists.txt b/Source/Core/DolphinNoGUI/CMakeLists.txt
index f21955d809..e4a6ab61a2 100644
--- a/Source/Core/DolphinNoGUI/CMakeLists.txt
+++ b/Source/Core/DolphinNoGUI/CMakeLists.txt
@@ -17,7 +17,7 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
target_sources(dolphin-nogui PRIVATE PlatformFBDev.cpp)
endif()
-set_target_properties(dolphin-nogui PROPERTIES OUTPUT_NAME dolphin-emu-nogui)
+set_target_properties(dolphin-nogui PROPERTIES OUTPUT_NAME primehack-nogui)
target_link_libraries(dolphin-nogui
PRIVATE

View file

@ -0,0 +1,13 @@
diff --git a/Source/Core/DolphinNoGUI/CMakeLists.txt b/Source/Core/DolphinNoGUI/CMakeLists.txt
index f21955d809..e4a6ab61a2 100644
--- a/Source/Core/DolphinNoGUI/CMakeLists.txt
+++ b/Source/Core/DolphinNoGUI/CMakeLists.txt
@@ -17,7 +17,7 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
target_sources(dolphin-nogui PRIVATE PlatformFBDev.cpp)
endif()
-set_target_properties(dolphin-nogui PROPERTIES OUTPUT_NAME dolphin-emu-nogui)
+set_target_properties(dolphin-nogui PROPERTIES OUTPUT_NAME primehack-nogui)
target_link_libraries(dolphin-nogui
PRIVATE

View file

@ -0,0 +1,156 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
. /etc/profile
#Check if primehack exists in .config
if [ ! -d "/storage/.config/primehack" ]; then
mkdir -p "/storage/.config/primehack"
cp -r "/usr/config/prime" "/storage/.config/"
fi
#Check if Wii custom controller profile exists in .config/dolphin-emu
if [ ! -f "/storage/.config/primehack/Custom_WiimoteNew.ini" ]; then
cp -r "/usr/config/primehack/WiiControllerProfiles/remote.ini" "/storage/.config/primehack/Custom_WiimoteNew.ini"
fi
#Gamecube controller profile needed for hotkeys to work
cp -r "/usr/config/primehack/GCPadNew.ini" "/storage/.config/primehack/GCPadNew.ini"
#Link Save States to /roms/savestates/wii
if [ ! -d "/storage/roms/savestates/wii/" ]; then
mkdir -p "/storage/roms/savestates/wii/"
fi
rm -rf /storage/.config/primehack/StateSaves
ln -sf /storage/roms/savestates/wii /storage/.config/primehack/StateSaves
#Emulation Station options
GAME=$(echo "${1}"| sed "s#^/.*/##")
AA=$(get_setting anti_aliasing wii "${GAME}")
ASPECT=$(get_setting aspect_ratio wii "${GAME}")
RENDERER=$(get_setting graphics_backend wii "${GAME}")
IRES=$(get_setting internal_resolution wii "${GAME}")
FPS=$(get_setting show_fps wii "${GAME}")
CON=$(get_setting wii_controller_profile wii "${GAME}")
#Anti-Aliasing
if [ "$AA" = "0" ]
then
sed -i '/MSAA/c\MSAA = 0' /storage/.config/primehack/GFX.ini
sed -i '/SSAA/c\SSAA = False' /storage/.config/primehack/GFX.ini
fi
if [ "$AA" = "2m" ]
then
sed -i '/MSAA/c\MSAA = 2' /storage/.config/primehack/GFX.ini
sed -i '/SSAA/c\SSAA = False' /storage/.config/primehack/GFX.ini
fi
if [ "$AA" = "2s" ]
then
sed -i '/MSAA/c\MSAA = 2' /storage/.config/primehack/GFX.ini
sed -i '/SSAA/c\SSAA = True' /storage/.config/primehack/GFX.ini
fi
if [ "$AA" = "4m" ]
then
sed -i '/MSAA/c\MSAA = 4' /storage/.config/primehack/GFX.ini
sed -i '/SSAA/c\SSAA = False' /storage/.config/primehack/GFX.ini
fi
if [ "$AA" = "4s" ]
then
sed -i '/MSAA/c\MSAA = 4' /storage/.config/primehack/GFX.ini
sed -i '/SSAA/c\SSAA = True' /storage/.config/primehack/GFX.ini
fi
if [ "$AA" = "8m" ]
then
sed -i '/MSAA/c\MSAA = 8' /storage/.config/primehack/GFX.ini
sed -i '/SSAA/c\SSAA = False' /storage/.config/primehack/GFX.ini
fi
if [ "$AA" = "8s" ]
then
sed -i '/MSAA/c\MSAA = 8' /storage/.config/primehack/GFX.ini
sed -i '/SSAA/c\SSAA = True' /storage/.config/primehack/GFX.ini
fi
#Aspect Ratio
if [ "$ASPECT" = "0" ]
then
sed -i '/AspectRatio/c\AspectRatio = 0' /storage/.config/primehack/GFX.ini
fi
if [ "$ASPECT" = "1" ]
then
sed -i '/AspectRatio/c\AspectRatio = 1' /storage/.config/primehack/GFX.ini
fi
if [ "$ASPECT" = "2" ]
then
sed -i '/AspectRatio/c\AspectRatio = 2' /storage/.config/primehack/GFX.ini
fi
if [ "$ASPECT" = "3" ]
then
sed -i '/AspectRatio/c\AspectRatio = 3' /storage/.config/primehack/GFX.ini
fi
#Video Backend
if [ "$RENDERER" = "opengl" ]
then
sed -i '/GFXBackend/c\GFXBackend = OGL' /storage/.config/primehack/Dolphin.ini
fi
if [ "$RENDERER" = "vulkan" ]
then
sed -i '/GFXBackend/c\GFXBackend = Vulkan' /storage/.config/primehack/Dolphin.ini
fi
if [ "$RENDERER" = "software" ]
then
sed -i '/GFXBackend/c\GFXBackend = Software Renderer' /storage/.config/primehack/Dolphin.ini
fi
#Internal Resolution
if [ "$IRES" = "1" ]
then
sed -i '/InternalResolution/c\InternalResolution = 1' /storage/.config/primehack/GFX.ini
fi
if [ "$IRES" = "2" ]
then
sed -i '/InternalResolution/c\InternalResolution = 2' /storage/.config/primehack/GFX.ini
fi
if [ "$IRES" = "3" ]
then
sed -i '/InternalResolution/c\InternalResolution = 3' /storage/.config/primehack/GFX.ini
fi
#Show FPS
if [ "$FPS" = "true" ]
then
sed -i '/ShowFPS/c\ShowFPS = True' /storage/.config/primehack/GFX.ini
fi
if [ "$FPS" = "false" ]
then
sed -i '/ShowFPS/c\ShowFPS = False' /storage/.config/primehack/GFX.ini
fi
#Wii Controller Profile
if [ "$CON" = "remote" ]
then
cp -r /usr/config/primehack/WiiControllerProfiles/remote.ini /storage/.config/primehack/WiimoteNew.ini
fi
if [ "$CON" = "nunchuck" ]
then
cp -r /usr/config/primehack/WiiControllerProfiles/nunchuck.ini /storage/.config/primehack/WiimoteNew.ini
fi
if [ "$CON" = "classic" ]
then
cp -r /usr/config/primehack/WiiControllerProfiles/classic.ini /storage/.config/primehack/WiimoteNew.ini
fi
if [ "$CON" = "custom" ]
then
cp -r /storage/.config/primehack/Custom_WiimoteNew.ini /storage/.config/primehack/WiimoteNew.ini
fi
#Link .config/dolphin-emu to .local
rm -rf /storage/.local/share/primehack
ln -sf /storage/.config/primehack /storage/.local/share/primehack
#Run Dolphin emulator
/usr/bin/primehack-nogui -p wayland -a HLE -e "${1}"

View file

@ -1,3 +1,65 @@
mupen64plus-alt-map = "False"
mupen64plus-aspect = "4:3"
mupen64plus-astick-deadzone = "15"
mupen64plus-astick-sensitivity = "100"
mupen64plus-BackgroundMode = "Stripped"
mupen64plus-BilinearMode = "standard"
mupen64plus-CorrectTexrectCoords = "Auto"
mupen64plus-CountPerOp = "0"
mupen64plus-CountPerOpDenomPot = "0"
mupen64plus-cpucore = "dynamic_recompiler"
mupen64plus-d-cbutton = "C3"
mupen64plus-DitheringPattern = "True"
mupen64plus-DitheringQuantization = "True"
mupen64plus-EnableCopyAuxToRDRAM = "True"
mupen64plus-EnableCopyColorToRDRAM = "Async"
mupen64plus-EnableCopyDepthToRDRAM = "Software"
mupen64plus-EnableEnhancedHighResStorage = "False"
mupen64plus-EnableEnhancedTextureStorage = "False"
mupen64plus-EnableFBEmulation = "True"
mupen64plus-EnableFragmentDepthWrite = "False"
mupen64plus-EnableHiResAltCRC = "False"
mupen64plus-EnableHWLighting = "True"
mupen64plus-EnableInaccurateTextureCoordinates = "False"
mupen64plus-EnableLegacyBlending = "False"
mupen64plus-EnableLODEmulation = "True"
mupen64plus-EnableNativeResFactor = "1"
mupen64plus-EnableNativeResTexrects = "Optimized"
mupen64plus-EnableOverscan = "Enabled"
mupen64plus-EnableTexCoordBounds = "False"
mupen64plus-EnableTextureCache = "True"
mupen64plus-ForceDisableExtraMem = "False"
mupen64plus-FrameDuping = "True"
mupen64plus-Framerate = "Original"
mupen64plus-FXAA = "0"
mupen64plus-GLideN64IniBehaviour = "late"
mupen64plus-HybridFilter = "True"
mupen64plus-IgnoreTLBExceptions = "False"
mupen64plus-l-cbutton = "C2"
mupen64plus-MaxHiResTxVramLimit = "0"
mupen64plus-MaxTxCacheSize = "8000"
mupen64plus-MultiSampling = "0"
mupen64plus-OverscanBottom = "0"
mupen64plus-OverscanLeft = "0"
mupen64plus-OverscanRight = "0"
mupen64plus-OverscanTop = "0"
mupen64plus-pak1 = "memory"
mupen64plus-pak2 = "none"
mupen64plus-pak3 = "none"
mupen64plus-pak4 = "none"
mupen64plus-r-cbutton = "C1"
mupen64plus-rdp-plugin = "gliden64"
mupen64plus-RDRAMImageDitheringMode = "BlueNoise"
mupen64plus-rsp-plugin = "hle"
mupen64plus-ThreadedRenderer = "True"
mupen64plus-txCacheCompression = "True"
mupen64plus-txEnhancementMode = "None"
mupen64plus-txFilterIgnoreBG = "True"
mupen64plus-txFilterMode = "None"
mupen64plus-txHiresEnable = "False"
mupen64plus-txHiresFullAlphaChannel = "False"
mupen64plus-u-cbutton = "C4"
mupen64plus-virefresh = "Auto"
pcsx_rearmed_analog_axis_modifier = "circle"
pcsx_rearmed_async_cd = "sync"
pcsx_rearmed_bios = "auto"

View file

@ -2,12 +2,12 @@
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
PKG_NAME="yuzusa"
PKG_VERSION="48b4eca28a397adbaa68d1042262172fcdee6be8"
PKG_VERSION="a4696285af946588dc33b19e49a3baa0f8b2b60d"
PKG_ARCH="x86_64"
PKG_LICENSE="GPLv3"
PKG_SITE="https://github.com/yuzu-emu/yuzu"
PKG_URL="$PKG_SITE.git"
PKG_DEPENDS_TARGET="toolchain libfmt boost ffmpeg zstd zlib libzip lz4 opus libusb"
PKG_DEPENDS_TARGET="toolchain libfmt boost ffmpeg zstd zlib libzip lz4 opus libusb nlohmann-json"
PKG_SHORTDESC="Nintendo Switch emulator"
PKG_TOOLCHAIN="cmake"
GET_HANDLER_SUPPORT="git"
@ -37,7 +37,6 @@ PKG_CMAKE_OPTS_TARGET+=" -DENABLE_QT=OFF \
-DENABLE_SDL2=ON \
-DARCHITECTURE_x86_64=ON \
-DBUILD_SHARED_LIBS=OFF \
-DYUZU_USE_BUNDLED_LIBUSB=OFF \
-DENABLE_WEB_SERVICE=OFF \
-DUSE_DISCORD_PRESENCE=OFF"

View file

@ -1,59 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c6fc5dd9e..78098416b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -195,7 +195,7 @@ if (YUZU_TESTS)
find_package(Catch2 2.13.7 REQUIRED CONFIG)
endif()
-find_package(Boost 1.73.0 COMPONENTS context)
+find_package(Boost 1.80.0 COMPONENTS context REQUIRED)
if (Boost_FOUND)
set(Boost_LIBRARIES Boost::boost)
# Conditionally add Boost::context only if the found Boost package provides it
@@ -205,7 +205,7 @@ if (Boost_FOUND)
list(APPEND Boost_LIBRARIES Boost::context)
endif()
else()
- message(FATAL_ERROR "Boost 1.73.0 or newer not found")
+ message(FATAL_ERROR "Boost 1.80.0 or newer not found")
endif()
# boost:asio has functions that require AcceptEx et al
@@ -386,11 +386,9 @@ endif()
# Ensure libusb is properly configured (based on dolphin libusb include)
if(NOT APPLE AND NOT YUZU_USE_BUNDLED_LIBUSB)
- find_package(PkgConfig)
+ add_definitions(-D__LIBUSB__)
if (PKG_CONFIG_FOUND AND NOT CMAKE_SYSTEM_NAME MATCHES "DragonFly|FreeBSD")
- pkg_check_modules(LIBUSB QUIET libusb-1.0>=1.0.24)
- else()
- find_package(LibUSB)
+ find_package(LibUSB)
endif()
if (LIBUSB_FOUND)
@@ -398,8 +396,7 @@ if(NOT APPLE AND NOT YUZU_USE_BUNDLED_LIBUSB)
target_include_directories(usb INTERFACE "${LIBUSB_INCLUDE_DIRS}")
target_link_libraries(usb INTERFACE "${LIBUSB_LIBRARIES}")
else()
- message(WARNING "libusb not found, falling back to externals")
- set(YUZU_USE_BUNDLED_LIBUSB ON)
+ message(WARNING "libusb not found")
endif()
endif()
diff --git a/src/input_common/drivers/gc_adapter.cpp b/src/input_common/drivers/gc_adapter.cpp
index 826fa2109..bc6d90f1d 100644
--- a/src/input_common/drivers/gc_adapter.cpp
+++ b/src/input_common/drivers/gc_adapter.cpp
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#include <fmt/format.h>
-#include <libusb.h>
+#include <libusb-1.0/libusb.h>
#include "common/logging/log.h"
#include "common/param_package.h"

View file

@ -1,15 +0,0 @@
diff --git a/src/input_common/drivers/sdl_driver.cpp b/src/input_common/drivers/sdl_driver.cpp
index 45ce588f0..402b4956c 100644
--- a/src/input_common/drivers/sdl_driver.cpp
+++ b/src/input_common/drivers/sdl_driver.cpp
@@ -211,8 +211,8 @@ public:
std::string GetControllerName() const {
if (sdl_controller) {
switch (SDL_GameControllerGetType(sdl_controller.get())) {
- case SDL_CONTROLLER_TYPE_XBOX360:
- return "Xbox 360 Controller";
+ // case SDL_CONTROLLER_TYPE_XBOX360:
+ // return "Xbox 360 Controller";
case SDL_CONTROLLER_TYPE_XBOXONE:
return "Xbox One Controller";
case SDL_CONTROLLER_TYPE_PS3:

View file

@ -2,13 +2,11 @@
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
PKG_NAME="citra"
PKG_VERSION="70bf7d8a63b0b501e8f5cff89a86a3e2d4083aa0"
PKG_REV="1"
PKG_VERSION="f0b09a5c0cb3767d43f5f8ca12a783012298fd44"
PKG_LICENSE="GPLv3"
PKG_SITE="https://github.com/libretro/citra"
PKG_URL="$PKG_SITE.git"
PKG_DEPENDS_TARGET="toolchain boost"
PKG_PRIORITY="optional"
PKG_SECTION="libretro"
PKG_SHORTDESC="Citra - Nintendo 3DS emulator for libretro"
PKG_TOOLCHAIN="make"

View file

@ -7,7 +7,7 @@ PKG_VERSION="24c373245ebdab946f11627520edea76e1f23b8e"
PKG_ARCH="any"
PKG_LICENSE="GPLv3"
PKG_SITE="https://github.com/stenzek/duckstation"
PKG_URL="$PKG_SITE/archive/$PKG_VERSION.tar.gz"
PKG_URL="$PKG_SITE.git"
PKG_DEPENDS_TARGET="toolchain SDL2 nasm:host pulseaudio openssl libidn2 nghttp2 zlib curl libevdev"
PKG_SECTION="libretro"
PKG_SHORTDESC="DuckStation - PlayStation 1, aka. PSX Emulator"

View file

@ -0,0 +1,53 @@
diff --git a/src/core/cpu_core.h b/src/core/cpu_core.h
index c9199153..5d82b5c0 100644
--- a/src/core/cpu_core.h
+++ b/src/core/cpu_core.h
@@ -84,6 +84,8 @@ struct State
std::array<u8, DCACHE_SIZE> dcache = {};
std::array<u32, ICACHE_LINES> icache_tags = {};
std::array<u8, ICACHE_SIZE> icache_data = {};
+
+ static constexpr u32 GTERegisterOffset(u32 index) { return offsetof(State, gte_regs.r32) + (sizeof(u32) * index); }
};
extern State g_state;
diff --git a/src/core/cpu_recompiler_code_generator.cpp b/src/core/cpu_recompiler_code_generator.cpp
index 68492b03..e550844e 100644
--- a/src/core/cpu_recompiler_code_generator.cpp
+++ b/src/core/cpu_recompiler_code_generator.cpp
@@ -2377,7 +2377,7 @@ Value CodeGenerator::DoGTERegisterRead(u32 index)
default:
{
- EmitLoadCPUStructField(value.host_reg, RegSize_32, offsetof(State, gte_regs.r32[index]));
+ EmitLoadCPUStructField(value.host_reg, RegSize_32, State::GTERegisterOffset(index));
}
break;
}
@@ -2406,7 +2406,7 @@ void CodeGenerator::DoGTERegisterWrite(u32 index, const Value& value)
{
// sign-extend z component of vector registers
Value temp = ConvertValueSize(value.ViewAsSize(RegSize_16), RegSize_32, true);
- EmitStoreCPUStructField(offsetof(State, gte_regs.r32[index]), temp);
+ EmitStoreCPUStructField(State::GTERegisterOffset(index), temp);
return;
}
break;
@@ -2419,7 +2419,7 @@ void CodeGenerator::DoGTERegisterWrite(u32 index, const Value& value)
{
// zero-extend unsigned values
Value temp = ConvertValueSize(value.ViewAsSize(RegSize_16), RegSize_32, false);
- EmitStoreCPUStructField(offsetof(State, gte_regs.r32[index]), temp);
+ EmitStoreCPUStructField(State::GTERegisterOffset(index), temp);
return;
}
break;
@@ -2461,7 +2461,7 @@ void CodeGenerator::DoGTERegisterWrite(u32 index, const Value& value)
default:
{
// written as-is, 2x16 or 1x32 bits
- EmitStoreCPUStructField(offsetof(State, gte_regs.r32[index]), value);
+ EmitStoreCPUStructField(State::GTERegisterOffset(index), value);
return;
}
}

View file

@ -3,8 +3,8 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="mesa"
PKG_VERSION="22.3.0"
PKG_SHA256="644bf936584548c2b88762111ad58b4aa3e4688874200e5a4eb74e53ce301746"
PKG_VERSION="22.3.1"
PKG_SHA256="3c9cd611c0859d307aba0659833386abdca4c86162d3c275ba5be62d16cf31eb"
PKG_LICENSE="OSS"
PKG_SITE="http://www.mesa3d.org/"
PKG_URL="https://mesa.freedesktop.org/archive/mesa-${PKG_VERSION}.tar.xz"

View file

@ -142,7 +142,13 @@ msx.rgascale=0
n64.integerscale=1
n64.cpugovernor=performance
n64.ratio=4/3
n64.game_aspect_ratio=4:3
n64.rgascale=0
n64.internal_resolution=1
n64.rsp_plugin=hle
n64.input_configuration=zlswap
n64.controller_pak=2
n64.show_fps=0
naomi.integerscale=1
naomi.cpugovernor=performance
naomi.ratio=4/3

View file

@ -288,6 +288,8 @@ then
jslisten set "-9 dolphin-emu-nogui"
if [ "$EMU" = "dolphinsa-gc" ]; then
RUNTHIS='${TBASH} /usr/bin/start_dolphin_gc.sh "${ROMNAME}"'
elif [ "$EMU" = "primehack" ]; then
RUNTHIS='${TBASH} /usr/bin/start_primehack.sh "${ROMNAME}"'
fi
;;
@ -295,6 +297,8 @@ then
jslisten set "-9 dolphin-emu-nogui"
if [ "$EMU" = "dolphinsa-wii" ]; then
RUNTHIS='${TBASH} /usr/bin/start_dolphin_wii.sh "${ROMNAME}"'
elif [ "$EMU" = "primehack" ]; then
RUNTHIS='${TBASH} /usr/bin/start_primehack.sh "${ROMNAME}"'
fi
;;
"switch")

View file

@ -2,8 +2,8 @@
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="nlohmann-json"
PKG_VERSION="3.6.1"
PKG_SHA256="80c45b090e40bf3d7a7f2a6e9f36206d3ff710acfa8d8cc1f8c763bb3075e22e"
PKG_VERSION="3.11.2"
PKG_SHA256="d69f9deb6a75e2580465c6c4c5111b89c4dc2fa94e3a85fcd2ffcd9a143d9273"
PKG_LICENSE="MIT"
PKG_SITE="https://nlohmann.github.io/json/"
PKG_URL="https://github.com/nlohmann/json/archive/v$PKG_VERSION.tar.gz"

View file

@ -6,11 +6,29 @@
<choice name="4/3" value="4:3" />
<choice name="fullscreen" value="fullscreen" />
</feature>
<feature name="internal resolution">
<choice name="native (240p)" value="1"/>
<choice name="2x (480p)" value="2"/>
<choice name="3x (720p)" value="3"/>
<choice name="4x (1080p)" value="4"/>
</feature>
<feature name="rsp plugin">
<choice name="fast" value="hle" />
<choice name="accurate" value="mle" />
</feature>
<feature name="input configuration">
<choice name="default" value="default" />
<choice name="z & l swap" value="zlswap" />
<choice name="custom" value="custom" />
</feature>
<feature name="controller pak">
<choice name="None" value="1" />
<choice name="Memory" value="2" />
<choice name="Rumble" value="5" />
</feature>
<feature name="show fps">
<choice name="yes" value="true"/>
<choice name="no" value="false"/>
</feature>
</features>
</emulator>
<emulator name="yabasanshiroSA">
@ -33,7 +51,7 @@
<choice name="8x SSAA" value="8s"/>
</feature>
<feature name="aspect ratio">
<choice name="default" value="0"/>
<choice name="auto" value="0"/>
<choice name="16/9" value="1"/>
<choice name="4/3" value="2"/>
<choice name="stretch" value="3"/>
@ -53,7 +71,7 @@
<choice name="no" value="false"/>
</feature>
<feature name="gamecube controller profile">
<choice name="default" value="default"/>
<choice name="gc gamepad" value="gcpad"/>
<choice name="custom" value="custom"/>
</feature>
</features>
@ -70,7 +88,46 @@
<choice name="8x SSAA" value="8s"/>
</feature>
<feature name="aspect ratio">
<choice name="default" value="0"/>
<choice name="auto" value="0"/>
<choice name="16/9" value="1"/>
<choice name="4/3" value="2"/>
<choice name="stretch" value="3"/>
</feature>
<feature name="graphics backend">
<choice name="opengl" value="opengl"/>
<choice name="vulkan" value="vulkan"/>
<choice name="software" value="software"/>
</feature>
<feature name="internal resolution">
<choice name="native (480p)" value="1"/>
<choice name="2x (720P)" value="2"/>
<choice name="3x (1080P)" value="3"/>
</feature>
<feature name="show fps">
<choice name="yes" value="true"/>
<choice name="no" value="false"/>
</feature>
<feature name="wii controller profile">
<choice name="Wiimote" value="remote"/>
<choice name="Wiimote w/ Nunchuck" value="nunchuck"/>
<choice name="Classic Controller" value="classic"/>
<choice name="custom" value="custom"/>
</feature>
</features>
</emulator>
<emulator name="primehack">
<features>
<feature name="anti aliasing">
<choice name="off" value="0"/>
<choice name="2x MSAA" value="2m"/>
<choice name="2x SSAA" value="2s"/>
<choice name="4x MSAA" value="4m"/>
<choice name="4x SSAA" value="4s"/>
<choice name="8x MSAA" value="8m"/>
<choice name="8x SSAA" value="8s"/>
</feature>
<feature name="aspect ratio">
<choice name="auto" value="0"/>
<choice name="16/9" value="1"/>
<choice name="4/3" value="2"/>
<choice name="stretch" value="3"/>

View file

@ -1454,6 +1454,7 @@
<core default="true">pcsx_rearmed32</core>
<core>pcsx_rearmed</core>
<core>swanstation</core>
<core>duckstation</core>
</cores>
</emulator>
<emulator name="Duckstation">

View file

@ -806,6 +806,11 @@
<core default="true">dolphinsa-gc</core>
</cores>
</emulator>
<emulator name="primehack">
<cores>
<core>primehack</core>
</cores>
</emulator>
<emulator name="retroarch">
<cores>
<core>dolphin</core>
@ -830,6 +835,11 @@
<core default="true">dolphinsa-wii</core>
</cores>
</emulator>
<emulator name="primehack">
<cores>
<core>primehack</core>
</cores>
</emulator>
<emulator name="retroarch">
<cores>
<core>dolphin</core>
@ -1484,6 +1494,7 @@
<emulator name="retroarch">
<cores>
<core default="true">swanstation</core>
<core>duckstation</core>
</cores>
</emulator>
<emulator name="Duckstation">

View file

@ -11,7 +11,7 @@ PKG_EMUS="hatarisa openbor hypseus-singe moonlight hypseus-singe pico-8 flycasts
scummvmsa PPSSPPSDL yabasanshiroSA vicesa mupen64plussa-audio-sdl \
mupen64plussa-input-sdl mupen64plussa-ui-console mupen64plussa-video-rice \
mupen64plussa-core mupen64plussa-rsp-hle mupen64plussa-rsp-cxd4 mupen64plussa-video-glide64mk2 \
mupen64plussa-video-gliden64 lzdoom gzdoom ecwolf amiberry raze drastic"
mupen64plussa-video-gliden64 lzdoom gzdoom ecwolf amiberry raze"
PKG_RETROARCH="retroarch retroarch-overlays retroarch-joypads retroarch-assets libretro-database core-info"
@ -28,22 +28,22 @@ LIBRETRO_CORES="2048 81 a5200 atari800 beetle-gba beetle-lynx beetle-ngp beetle-
sameduck scummvm smsplus-gx snes9x snes9x2002 snes9x2005_plus snes9x2010 stella \
stella-2014 swanstation TIC-80 tgbdual tyrquake xrick uae4arm uzem vba-next vbam \
vecx vice yabasanshiro xmil mesen virtualjaguar ecwolf_libretro vitaquake2 \
bsnes-mercury-performance"
bsnes-mercury-performance duckstation"
PKG_DEPENDS_TARGET="${PKG_EMUS} ${PKG_RETROARCH} ${LIBRETRO_CORES}"
### Emulators or cores for specific devices
case "${DEVICE}" in
RG351P|RG351V|RG351MP|RGB20S)
PKG_DEPENDS_TARGET+=" common-shaders glsl-shaders"
PKG_DEPENDS_TARGET+=" common-shaders glsl-shaders drastic"
;;
RG552)
PKG_DEPENDS_TARGET+=" duckstationsa dolphinsa dolphin slang-shaders beetle-saturn"
PKG_DEPENDS_TARGET+=" duckstationsa dolphinsa dolphin slang-shaders beetle-saturn drastic"
;;
RG503|RG353P)
PKG_DEPENDS_TARGET+=" duckstationsa common-shaders glsl-shaders"
PKG_DEPENDS_TARGET+=" duckstationsa common-shaders glsl-shaders drastic dolphinsa"
;;
handheld)
PKG_DEPENDS_TARGET+=" duckstationsa dolphinsa dolphin pcsx2sa pcsx2 desmume bsnes citra slang-shaders minivmac minivmacsa play beetle-saturn"
PKG_DEPENDS_TARGET+=" duckstationsa dolphinsa dolphin pcsx2sa pcsx2 desmume bsnes citra slang-shaders minivmac minivmacsa play beetle-saturn yuzusa primehack"
;;
esac