Merge pull request #929 from JustEnoughLinuxOS/dev

PR for release
This commit is contained in:
fewtarius 2023-01-11 07:42:29 -05:00 committed by GitHub
commit 8f40a51b9a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
196 changed files with 83468 additions and 8241 deletions

View file

@ -100,7 +100,7 @@ jobs:
* Decompress the image.
* Write the image to an SDCARD using an imaging tool. Common imaging tools include [Balena Etcher](https://www.balena.io/etcher/), [Raspberry Pi Imager](https://www.raspberrypi.com/software/), and [Win32 Disk Imager](https://sourceforge.net/projects/win32diskimager/). If you're skilled with the command line, dd works fine too.
Download: [[Ayaneo Air / Air Pro /Atari VCS/Generic x86_64](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.img.gz)]
Download: [[Ayaneo Handhelds, Atari VCS, and other x86_64 devices](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.img.gz)]
## Upgrading
* Download and install the update online via the System Settings menu.
@ -109,7 +109,7 @@ jobs:
* Copy the update to your device over the network to your device's update share.
* Reboot the device, and the update will begin automatically.
Download: [[Ayaneo Air / Air Pro /Atari VCS/x86_64](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.tar)]
Download: [[Ayaneo Handhelds, Atari VCS, and other x86_64 devices](https://github.com/JustEnoughLinuxOS/distribution-dev/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.tar)]
## Documentation
* [Home](https://github.com/JustEnoughLinuxOS/distribution/wiki)

View file

@ -97,7 +97,7 @@ jobs:
* Decompress the image.
* Write the image to an SDCARD using an imaging tool. Common imaging tools include [Balena Etcher](https://www.balena.io/etcher/), [Raspberry Pi Imager](https://www.raspberrypi.com/software/), and [Win32 Disk Imager](https://sourceforge.net/projects/win32diskimager/). If you're skilled with the command line, dd works fine too.
Download: [[Ayaneo Air / Air Pro /Atari VCS/Generic x86_64](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.img.gz)]
Download: [[Ayaneo Handhelds, Atari VCS, and other x86_64 devices] (https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.img.gz)]
## Upgrading
* Download and install the update online via the System Settings menu.
@ -108,7 +108,7 @@ jobs:
* Copy the update to your device over the network to your device's update share.
* Reboot the device, and the update will begin automatically.
Download: [[Ayaneo Air / Air Pro /Atari VCS/x86_64](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.tar)]
Download: [[Ayaneo Handhelds, Atari VCS, and other x86_64 devices](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-handheld.x86_64-${{ steps.version.outputs.version }}.tar)]
## Documentation
* [Home](https://github.com/JustEnoughLinuxOS/distribution/wiki)

View file

@ -47,7 +47,6 @@ jobs:
run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_OUTPUT
- name: Repository Dispatch
if: steps.changes.outputs.changes != '0'
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ secrets.REPO_ACCESS }}

View file

@ -30,6 +30,10 @@ x86_64: handheld
handheld:
DEVICE_ROOT=handheld PROJECT=PC DEVICE=handheld ARCH=x86_64 ./scripts/build_distro
RK3588:
DEVICE_ROOT=RK3588 PROJECT=Rockchip DEVICE=RK3588 ARCH=arm ./scripts/build_distro
DEVICE_ROOT=RK3588 PROJECT=Rockchip DEVICE=RK3588 ARCH=aarch64 ./scripts/build_distro
update:
PROJECT=PC DEVICE=handheld ARCH=x86_64 ./scripts/update_packages

View file

@ -10,7 +10,7 @@
# determine architecture's family
case $TARGET_CPU in
generic|cortex-a35|cortex-a53|cortex-a57|cortex-a72|exynos-m1|qdf24xx|thunderx|xgene1|cortex-a57.cortex-a53|cortex-a72.cortex-a53|cortex-a55)
generic|cortex-a35|cortex-a53|cortex-a57|cortex-a72|exynos-m1|qdf24xx|thunderx|xgene1|cortex-a57.cortex-a53|cortex-a72.cortex-a53|cortex-a55|cortex-a76.cortex-a55)
TARGET_SUBARCH=aarch64
TARGET_VARIANT=armv8-a
TARGET_ABI=eabi

View file

@ -41,7 +41,7 @@
TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
TARGET_FEATURES+=" neon"
;;
cortex-a35|cortex-a53|cortex-a72.cortex-a53|cortex-a55)
cortex-a35|cortex-a53|cortex-a72.cortex-a53|cortex-a55|cortex-a76.cortex-a55)
TARGET_SUBARCH=armv8-a
TARGET_ABI=eabi
TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"

View file

@ -1,5 +1,3 @@
np2kai # Last major commit before hiatus is broken
vicesa # Doesn't support updating with the script.
duckstationsa # Latest commits break device patching. Need to research.
ecwolf
raze

View file

@ -3,10 +3,15 @@
PKG_NAME="zlib"
PKG_VERSION="1.2.13"
PKG_SHA256="b3a24de97a8fdbc835b9833169501030b8977031bcb54b3b3ac13740f846ab30"
PKG_LICENSE="OSS"
PKG_SITE="http://www.zlib.net"
PKG_URL="http://zlib.net/${PKG_NAME}-${PKG_VERSION}.tar.xz"
PKG_DEPENDS_HOST="cmake:host"
PKG_URL="https://zlib.net/fossils/${PKG_NAME}-${PKG_VERSION}.tar.gz"
PKG_DEPENDS_HOST="ccache:host cmake:host"
PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="A general purpose (ZIP) data compression library."
PKG_TOOLCHAIN="cmake-make"
PKG_CMAKE_OPTS_HOST="-DINSTALL_PKGCONFIG_DIR=${TOOLCHAIN}/lib/pkgconfig"
PKG_CMAKE_OPTS_TARGET="-DINSTALL_PKGCONFIG_DIR=/usr/lib/pkgconfig"

View file

@ -2,8 +2,7 @@
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="zstd"
PKG_VERSION="1.5.0"
PKG_SHA256="5194fbfa781fcf45b98c5e849651aa7b3b0a008c6b72d4a0db760f3002291e94"
PKG_VERSION="1.5.2"
PKG_LICENSE="BSD/GPLv2"
PKG_SITE="http://www.zstd.net"
PKG_URL="https://github.com/facebook/zstd/releases/download/v${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.gz"
@ -20,4 +19,4 @@ PKG_MESON_OPTS_HOST="-Dlegacy_level=0 \
-Dbin_programs=false \
-Dzlib=disabled \
-Dlzma=disabled \
-Dlz4=disabled"
-Dlz4=disabled"

View file

@ -3,12 +3,13 @@
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="sqlite"
PKG_VERSION="autoconf-3280000"
PKG_SHA256="d61b5286f062adfce5125eaf544d495300656908e61fca143517afcc0a89b7c3"
PKG_VERSION="3.40.1"
PKG_VERSION_SQLITE="${PKG_VERSION/./}00"
PKG_SHA256="2c5dea207fa508d765af1ef620b637dcb06572afa6f01f0815bd5bbf864b33d9"
PKG_LICENSE="PublicDomain"
PKG_SITE="https://www.sqlite.org/"
PKG_URL="https://www.sqlite.org/2019/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS_HOST="gcc:host"
PKG_URL="https://www.sqlite.org/2022/${PKG_NAME}-autoconf-${PKG_VERSION_SQLITE/./0}.tar.gz"
PKG_DEPENDS_HOST="ccache:host autoconf:host automake:host"
PKG_DEPENDS_TARGET="toolchain ncurses"
PKG_LONGDESC="An Embeddable SQL Database Engine."
# libsqlite3.a(sqlite3.o): requires dynamic R_X86_64_PC32 reloc against 'sqlite3_stricmp' which may overflow at runtime
@ -23,15 +24,15 @@ PKG_CONFIGURE_OPTS_TARGET="--disable-static \
pre_configure_target() {
# sqlite fails to compile with fast-math link time optimization.
CFLAGS=`echo $CFLAGS | sed -e "s|-Ofast|-O3|g"`
CFLAGS=`echo $CFLAGS | sed -e "s|-ffast-math||g"`
CFLAGS=$(echo ${CFLAGS} | sed -e "s|-Ofast|-O3|g")
CFLAGS=$(echo ${CFLAGS} | sed -e "s|-ffast-math||g")
# This option adds additional logic to the ANALYZE command and to the query planner
# that can help SQLite to chose a better query plan under certain situations. The
# ANALYZE command is enhanced to collect histogram data from each index and store
# that data in the sqlite_stat3 table. The query planner will then use the histogram
# that data in the sqlite_stat4 table. The query planner will then use the histogram
# data to help it make better index choices.
CFLAGS="$CFLAGS -DSQLITE_ENABLE_STAT3"
CFLAGS+=" -DSQLITE_ENABLE_STAT4"
# When this C-preprocessor macro is defined, SQLite includes some additional APIs
# that provide convenient access to meta-data about tables and queries. The APIs that
@ -43,7 +44,7 @@ pre_configure_target() {
# - sqlite3_column_origin_name()
# - sqlite3_column_origin_name16()
# - sqlite3_table_column_metadata()
CFLAGS="$CFLAGS -DSQLITE_ENABLE_COLUMN_METADATA=1"
CFLAGS+=" -DSQLITE_ENABLE_COLUMN_METADATA=1"
# This macro sets the default limit on the amount of memory that will be used for
# memory-mapped I/O for each open database file. If the N is zero, then memory
@ -51,5 +52,5 @@ pre_configure_target() {
# SQLITE_MAX_MMAP_SIZE can be modified at start-time using the
# sqlite3_config(SQLITE_CONFIG_MMAP_SIZE) call, or at run-time using the
# mmap_size pragma.
CFLAGS="$CFLAGS -DSQLITE_TEMP_STORE=3 -DSQLITE_DEFAULT_MMAP_SIZE=268435456"
CFLAGS+=" -DSQLITE_TEMP_STORE=3 -DSQLITE_DEFAULT_MMAP_SIZE=268435456"
}

View file

@ -0,0 +1,47 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="arm-mem"
PKG_VERSION="b48ea154fd74410022d8189003cd69fad8f3d02c" # Apr 30, 2019
PKG_SHA256="93240defef3abba7d42a7420e55ae4f8b90cc99ef16044fdfb8b5820a17e766d"
PKG_ARCH="arm"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/bavison/arm-mem"
PKG_URL="https://github.com/bavison/arm-mem/archive/${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain"
PKG_DEPENDS_INIT="toolchain arm-mem"
PKG_LONGDESC="arm-mem is a ARM-accelerated versions of selected functions from string.h"
PKG_BUILD_FLAGS="+pic"
if target_has_feature neon; then
PKG_LIB_ARM_MEM="libarmmem-v7l.so"
else
PKG_LIB_ARM_MEM="libarmmem-v6l.so"
fi
PKG_MAKE_OPTS_TARGET="${PKG_LIB_ARM_MEM}"
pre_make_target() {
export CROSS_COMPILE=${TARGET_PREFIX}
}
make_init() {
: # reuse make_target()
}
makeinstall_target() {
mkdir -p ${INSTALL}/usr/lib
cp -P ${PKG_LIB_ARM_MEM} ${INSTALL}/usr/lib
mkdir -p ${INSTALL}/etc
echo "/usr/lib/${PKG_LIB_ARM_MEM}" >> ${INSTALL}/etc/ld.so.preload
}
makeinstall_init() {
mkdir -p ${INSTALL}/usr/lib
cp -P ${PKG_LIB_ARM_MEM} ${INSTALL}/usr/lib
mkdir -p ${INSTALL}/etc
echo "/usr/lib/${PKG_LIB_ARM_MEM}" >> ${INSTALL}/etc/ld.so.preload
}

View file

@ -14,6 +14,9 @@ PKG_LONGDESC="The Glibc package contains the main C library."
PKG_BUILD_FLAGS="+bfd -gold"
case "${DEVICE}" in
RK3588)
OPT_ENABLE_KERNEL=5.10.0
;;
*)
OPT_ENABLE_KERNEL=5.15.0
;;

View file

@ -2,12 +2,9 @@
# Copyright (C) 2019-present Shanti Gilbert (https://github.com/shantigilbert)
# Copyright (C) 2022-present Fewtarius
PKG_NAME="PPSSPPSDL"
PKG_VERSION="40386bca08d33c2d6584d6e7da4efee9bfeb3f96"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPLv2"
PKG_SITE="https://github.com/hrydgard/ppsspp"
PKG_URL="https://github.com/hrydgard/ppsspp.git"
PKG_DEPENDS_TARGET="toolchain ffmpeg libzip SDL2 zlib zip"
PKG_SHORTDESC="PPSSPPDL"
PKG_LONGDESC="PPSSPP Standalone"
@ -16,6 +13,19 @@ PKG_BUILD_FLAGS="+lto"
PKG_PATCH_DIRS+="${DEVICE}"
case ${DEVICE} in
RK3588)
PKG_VERSION="40386bca08d33c2d6584d6e7da4efee9bfeb3f96"
PKG_SITE="https://github.com/hrydgard/ppsspp"
PKG_URL="${PKG_SITE}.git"
;;
*)
PKG_VERSION="555a5d45f71cde6dfcb017168b7f68f93372a4f0"
PKG_SITE="https://github.com/hrydgard/ppsspp"
PKG_URL="${PKG_SITE}.git"
;;
esac
if [ ! "${OPENGL}" = "no" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGL} glu libglvnd glew"
PKG_CMAKE_OPTS_TARGET+=" -DUSING_FBDEV=OFF \

View file

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="UTF-8"?>
<emulated_controller>
<type>Wii U GamePad</type>
<controller>
<api>SDLController</api>
<uuid>0_030003f05e0400008e02000010010000</uuid>
<display_name>Xbox 360 Controller</display_name>
<rumble>0.15</rumble>
<axis>
<deadzone>0.25</deadzone>
<range>1</range>
</axis>
<rotation>
<deadzone>0.25</deadzone>
<range>1</range>
</rotation>
<trigger>
<deadzone>0.25</deadzone>
<range>1</range>
</trigger>
<mappings>
<entry>
<mapping>24</mapping>
<button>40</button>
</entry>
<entry>
<mapping>23</mapping>
<button>46</button>
</entry>
<entry>
<mapping>22</mapping>
<button>41</button>
</entry>
<entry>
<mapping>21</mapping>
<button>47</button>
</entry>
<entry>
<mapping>20</mapping>
<button>38</button>
</entry>
<entry>
<mapping>19</mapping>
<button>44</button>
</entry>
<entry>
<mapping>18</mapping>
<button>39</button>
</entry>
<entry>
<mapping>17</mapping>
<button>45</button>
</entry>
<entry>
<mapping>16</mapping>
<button>8</button>
</entry>
<entry>
<mapping>15</mapping>
<button>7</button>
</entry>
<entry>
<mapping>14</mapping>
<button>14</button>
</entry>
<entry>
<mapping>1</mapping>
<button>1</button>
</entry>
<entry>
<mapping>2</mapping>
<button>0</button>
</entry>
<entry>
<mapping>3</mapping>
<button>3</button>
</entry>
<entry>
<mapping>4</mapping>
<button>2</button>
</entry>
<entry>
<mapping>5</mapping>
<button>9</button>
</entry>
<entry>
<mapping>6</mapping>
<button>10</button>
</entry>
<entry>
<mapping>7</mapping>
<button>42</button>
</entry>
<entry>
<mapping>8</mapping>
<button>43</button>
</entry>
<entry>
<mapping>9</mapping>
<button>6</button>
</entry>
<entry>
<mapping>10</mapping>
<button>4</button>
</entry>
<entry>
<mapping>11</mapping>
<button>11</button>
</entry>
<entry>
<mapping>12</mapping>
<button>12</button>
</entry>
<entry>
<mapping>13</mapping>
<button>13</button>
</entry>
</mappings>
</controller>
</emulated_controller>

View file

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="UTF-8"?>
<emulated_controller>
<type>Wii U Pro Controller</type>
<controller>
<api>SDLController</api>
<uuid>0_030003f05e0400008e02000010010000</uuid>
<display_name>Xbox 360 Controller</display_name>
<rumble>0.15</rumble>
<axis>
<deadzone>0.25</deadzone>
<range>1</range>
</axis>
<rotation>
<deadzone>0.25</deadzone>
<range>1</range>
</rotation>
<trigger>
<deadzone>0.25</deadzone>
<range>1</range>
</trigger>
<mappings>
<entry>
<mapping>24</mapping>
<button>40</button>
</entry>
<entry>
<mapping>23</mapping>
<button>46</button>
</entry>
<entry>
<mapping>22</mapping>
<button>41</button>
</entry>
<entry>
<mapping>21</mapping>
<button>47</button>
</entry>
<entry>
<mapping>20</mapping>
<button>38</button>
</entry>
<entry>
<mapping>19</mapping>
<button>44</button>
</entry>
<entry>
<mapping>18</mapping>
<button>39</button>
</entry>
<entry>
<mapping>17</mapping>
<button>45</button>
</entry>
<entry>
<mapping>16</mapping>
<button>8</button>
</entry>
<entry>
<mapping>15</mapping>
<button>7</button>
</entry>
<entry>
<mapping>14</mapping>
<button>14</button>
</entry>
<entry>
<mapping>1</mapping>
<button>1</button>
</entry>
<entry>
<mapping>2</mapping>
<button>0</button>
</entry>
<entry>
<mapping>3</mapping>
<button>3</button>
</entry>
<entry>
<mapping>4</mapping>
<button>2</button>
</entry>
<entry>
<mapping>5</mapping>
<button>9</button>
</entry>
<entry>
<mapping>6</mapping>
<button>10</button>
</entry>
<entry>
<mapping>7</mapping>
<button>42</button>
</entry>
<entry>
<mapping>8</mapping>
<button>43</button>
</entry>
<entry>
<mapping>9</mapping>
<button>6</button>
</entry>
<entry>
<mapping>10</mapping>
<button>4</button>
</entry>
<entry>
<mapping>11</mapping>
<button>11</button>
</entry>
<entry>
<mapping>12</mapping>
<button>12</button>
</entry>
<entry>
<mapping>13</mapping>
<button>13</button>
</entry>
</mappings>
</controller>
</emulated_controller>

View file

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8"?>
<content>
<logflag>0</logflag>
<advanced_ppc_logging>false</advanced_ppc_logging>
<mlc_path></mlc_path>
<permanent_storage>true</permanent_storage>
<language>0</language>
<use_discord_presence>false</use_discord_presence>
<fullscreen_menubar>false</fullscreen_menubar>
<check_update>false</check_update>
<save_screenshot>true</save_screenshot>
<vk_warning>false</vk_warning>
<gp_download>true</gp_download>
<macos_disclaimer>false</macos_disclaimer>
<fullscreen>true</fullscreen>
<proxy_server></proxy_server>
<console_language>1</console_language>
<window_position>
<x>-1</x>
<y>-1</y>
</window_position>
<window_size>
<x>-1</x>
<y>-1</y>
</window_size>
<window_maximized>false</window_maximized>
<open_pad>false</open_pad>
<pad_position>
<x>-1</x>
<y>-1</y>
</pad_position>
<pad_size>
<x>-1</x>
<y>-1</y>
</pad_size>
<pad_maximized>false</pad_maximized>
<GameList>
<style>0</style>
<order></order>
<name_width>500</name_width>
<version_width>100</version_width>
<dlc_width>70</dlc_width>
<game_time_width>140</game_time_width>
<game_started_width>160</game_started_width>
<region_width>886</region_width>
</GameList>
<RecentLaunchFiles/>
<RecentNFCFiles/>
<GamePaths>
<Entry>/storage/roms/wiiu</Entry>
</GamePaths>
<GameCache/>
<GraphicPack/>
<Graphic>
<api>1</api>
<device>00000000040000000000000000000000</device>
<VSync>1</VSync>
<GX2DrawdoneSync>true</GX2DrawdoneSync>
<UpscaleFilter>1</UpscaleFilter>
<DownscaleFilter>0</DownscaleFilter>
<FullscreenScaling>0</FullscreenScaling>
<AsyncCompile>true</AsyncCompile>
<vkAccurateBarriers>true</vkAccurateBarriers>
<Overlay>
<Position>0</Position>
<TextColor>4282069997</TextColor>
<TextScale>100</TextScale>
<FPS>true</FPS>
<DrawCalls>false</DrawCalls>
<CPUUsage>true</CPUUsage>
<CPUPerCoreUsage>true</CPUPerCoreUsage>
<RAMUsage>true</RAMUsage>
<VRAMUsage>true</VRAMUsage>
<Debug>false</Debug>
</Overlay>
<Notification>
<Position>4</Position>
<TextColor>4294967295</TextColor>
<TextScale>100</TextScale>
<ControllerProfiles>true</ControllerProfiles>
<ControllerBattery>false</ControllerBattery>
<ShaderCompiling>true</ShaderCompiling>
<FriendService>false</FriendService>
</Notification>
</Graphic>
<Audio>
<api>3</api>
<delay>2</delay>
<TVChannels>1</TVChannels>
<PadChannels>1</PadChannels>
<InputChannels>0</InputChannels>
<TVVolume>100</TVVolume>
<PadVolume>0</PadVolume>
<InputVolume>50</InputVolume>
<TVDevice>alsa_output.pci-0000_04_00.6.analog-stereo</TVDevice>
<PadDevice></PadDevice>
<InputDevice></InputDevice>
</Audio>
<Account>
<PersistentId>2147483649</PersistentId>
<OnlineEnabled>false</OnlineEnabled>
<ActiveService>0</ActiveService>
</Account>
<Debug>
<CrashDumpUnix>0</CrashDumpUnix>
</Debug>
<Input>
<DSUC host="127.0.0.1" port="26760"/>
</Input>
</content>

View file

@ -0,0 +1,86 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2022-present Frank Hartung (supervisedthinking (@) gmail.com)
# Copyright (C) 2022-present Fewtarius
PKG_NAME="cemu"
PKG_VERSION="33bd10b" #v2.0-25
PKG_ARCH="x86_64"
PKG_LICENSE="MPL-2.0"
PKG_SITE="https://github.com/cemu-project/Cemu"
PKG_URL="https://github.com/cemu-project/Cemu.git"
PKG_DEPENDS_TARGET="toolchain libzip glslang glm curl rapidjson openssl boost libfmt pugixml libpng gtk3 wxwidgets"
PKG_LONGDESC="Cemu is a Wii U emulator that is able to run most Wii U games and homebrew in a playable state"
PKG_GIT_CLONE_BRANCH="main"
PKG_GIT_CLONE_SINGLE="yes"
GET_HANDLER_SUPPORT="git"
PKG_BUILD_FLAGS="+lto"
configure_package() {
# Displayserver Support
if [ "${DISPLAYSERVER}" = "x11" ]; then
PKG_DEPENDS_TARGET+=" xorg-server"
elif [ "${DISPLAYSERVER}" = "wl" ]; then
PKG_DEPENDS_TARGET+=" wayland"
fi
# OpenGL Support
if [ "${OPENGL_SUPPORT}" = "yes" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGL}"
fi
# Vulkan Support
if [ "${VULKAN_SUPPORT}" = "yes" ]; then
PKG_DEPENDS_TARGET+=" ${VULKAN}"
fi
}
pre_configure_target() {
# Force build of cubeb submodule
sed -e '/find_package(cubeb)/d' -i ${PKG_BUILD}/CMakeLists.txt
# Fix glm linking
sed -e "s#glm::glm#glm#" -i ${PKG_BUILD}/src/{Common,input}/CMakeLists.txt
PKG_CMAKE_OPTS_TARGET="-D ENABLE_VCPKG=OFF \
-D PORTABLE=OFF \
-D ENABLE_DISCORD_RPC=OFF \
-D ENABLE_SDL=ON \
-D ENABLE_CUBEB=ON \
-D ENABLE_WXWIDGETS=ON \
-Wno-dev"
# Wayland Support
if [ "${DISPLAYSERVER}" = "wl" ]; then
PKG_CMAKE_OPTS_TARGET+=" -D ENABLE_WAYLAND=ON"
else
PKG_CMAKE_OPTS_TARGET+=" -D ENABLE_WAYLAND=OFF"
fi
# OpenGL Support
if [ "${OPENGL_SUPPORT}" = "yes" ]; then
PKG_CMAKE_OPTS_TARGET+=" -D ENABLE_OPENGL=ON"
else
PKG_CMAKE_OPTS_TARGET+=" -D ENABLE_OPENGL=OFF"
fi
# Vulkan Support
if [ "${VULKAN_SUPPORT}" = "yes" ]; then
PKG_CMAKE_OPTS_TARGET+=" -D ENABLE_VULKAN=ON"
else
PKG_CMAKE_OPTS_TARGET+=" -D ENABLE_VULKAN=OFF"
fi
}
makeinstall_target() {
# Copy binary, scripts & config files
mkdir -p ${INSTALL}/usr/bin
cp -v ${PKG_BUILD}/bin/Cemu_* ${INSTALL}/usr/bin/cemu
cp -v ${PKG_DIR}/scripts/* ${INSTALL}/usr/bin/
chmod 0755 ${INSTALL}/usr/bin/*
mkdir -p ${INSTALL}/usr/config/Cemu
cp -PR ${PKG_DIR}/config/* ${INSTALL}/usr/config/Cemu
# Copy system files
mkdir -p ${INSTALL}/usr/share/Cemu
cp -PR ${PKG_BUILD}/bin/{gameProfiles,resources} ${INSTALL}/usr/share/Cemu
}

View file

@ -0,0 +1,11 @@
--- a/src/gui/CemuApp.cpp
+++ b/src/gui/CemuApp.cpp
@@ -132,7 +132,6 @@
{
if (!wxLocale::IsAvailable(wxLANGUAGE_DEFAULT) || !m_locale.Init(wxLANGUAGE_DEFAULT))
{
- m_locale.Init(wxLANGUAGE_ENGLISH);
m_locale.AddCatalogLookupPathPrefix(ActiveSettings::GetDataPath("resources").generic_string());
m_locale.AddCatalog("cemu");
}

View file

@ -0,0 +1,84 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2022-present Frank Hartung (supervisedthinking (@) gmail.com)
# Copyright (C) 2022-present Fewtarius
# Source environment variables
. /etc/profile
# Ensure we're using pulseaudio
rr_audio.sh pulseaudio
export SDL_AUDIODRIVER=pulseaudio
# Set up mime db
mkdir -p /storage/.local/share/mime/packages
cp -rf /usr/share/mime/packages/* /storage/.local/share/mime/packages
update-mime-database /storage/.local/share/mime
# Set common paths
CEMU_CONFIG_ROOT="/storage/.config/Cemu"
CEMU_CACHE_LOG="${CEMU_CONFIG_ROOT}/share/log.txt"
CEMU_VAR_LOG="/var/log/Cemu.log"
CEMU_HOME_CONFIG="${CEMU_CONFIG_ROOT}/share"
CEMU_HOME_LOCAL="/storage/.local/share/Cemu"
# create link to config directory
if [ ! -d ${CEMU_HOME_CONFIG} ]; then
mkdir -p ${CEMU_HOME_CONFIG}
echo created ${CEMU_HOME_CONFIG}
fi
if [ -d ${CEMU_HOME_LOCAL} ] && [ ! -L ${CEMU_HOME_LOCAL} ]; then
cp -rf ${CEMU_HOME_LOCAL}/* ${CEMU_HOME_CONFIG}
rm -rf ${CEMU_HOME_LOCAL}
echo moved ${CEMU_HOME_LOCAL} to ${CEMU_HOME_CONFIG}
fi
if [ ! -L ${CEMU_HOME_LOCAL} ]; then
ln -sf ${CEMU_HOME_CONFIG} ${CEMU_HOME_LOCAL}
echo created symlink from ${CEMU_HOME_CONFIG} to ${CEMU_HOME_LOCAL}
fi
# Create symlink to logfile
if [ ! -L ${CEMU_VAR_LOG} ]; then
ln -sf ${CEMU_CACHE_LOG} ${CEMU_VAR_LOG}
fi
# Make sure CEMU settings exist, and set the audio output.
if [ ! -f "${CEMU_CONFIG_ROOT}/settings.xml" ]
then
cp -f /usr/config/Cemu/settings.xml ${CEMU_CONFIG_ROOT}/settings.xml
fi
# Make sure the basic controller profiles exist.
if [ ! -d "${CEMU_CONFIG_ROOT}/controllerProfiles" ]
then
mkdir -p ${CEMU_CONFIG_ROOT}
fi
if [ ! -f "${CEMU_CONFIG_ROOT}/controllerProfiles/controller0.xml" ]
then
cp /usr/config/Cemu/controllerProfiles/controller0.xml ${CEMU_CONFIG_ROOT}/controllerProfiles/
fi
FILE=$(echo $@ | sed "s#^/.*/##g")
FPS=$(get_setting show_fps wiiu "${FILE}")
CON=$(get_setting wiiu_controller_profile wiiu "${FILE}")
if [ -z "${FPS}" ]
then
FPS="0"
fi
if [ -z "${CON}" ]
then
CON="Wii U GamePad"
fi
xmlstarlet ed --inplace -u "//Overlay/Position" -v "${FPS}" ${CEMU_CONFIG_ROOT}/settings.xml
xmlstarlet ed --inplace -u "//fullscreen" -v "true" ${CEMU_CONFIG_ROOT}/settings.xml
xmlstarlet ed --inplace -u "//Audio/TVDevice" -v "$(pactl get-default-sink)" ${CEMU_CONFIG_ROOT}/settings.xml
xmlstarlet ed --inplace -u "//emulated_controller/type" -v "${CON}" ${CEMU_CONFIG_ROOT}/controllerProfiles/controller0.xml
# Run the emulator
cemu -g "$@"
rr_audio.sh alsa

View file

@ -29,6 +29,7 @@ ln -sf /storage/roms/3ds/citrasa/nand /storage/.config/citra-emu/nand
#Emulation Station Features
GAME=$(echo "${1}"| sed "s#^/.*/##")
RES=$(get_setting resolution_scale 3ds "${GAME}")
ROTATE=$(get_setting rotate_screen 3ds "${GAME}")
SLAYOUT=$(get_setting screen_layout 3ds "${GAME}")
#Resolution Scale
@ -45,32 +46,53 @@ ln -sf /storage/roms/3ds/citrasa/nand /storage/.config/citra-emu/nand
sed -i '/resolution_factor =/c\resolution_factor = 2' /storage/.config/citra-emu/sdl2-config.ini
fi
#Rotate Screen
if [ "$ROTATE" = "0" ]
then
sed -i '/upright_screen =/c\upright_screen = 0' /storage/.config/citra-emu/sdl2-config.ini
fi
if [ "$ROTATE" = "1" ]
then
sed -i '/upright_screen =/c\upright_screen = 1' /storage/.config/citra-emu/sdl2-config.ini
fi
#Screen Layout
if [ "$SLAYOUT" = "0" ]
then
sed -i '/layout_option =/c\layout_option = 0' /storage/.config/citra-emu/sdl2-config.ini
sed -i '/swap_screen =/c\swap_screen = 0' /storage/.config/citra-emu/sdl2-config.ini
sed -i '/custom_layout =/c\custom_layout = 0' /storage/.config/citra-emu/sdl2-config.ini
fi
if [ "$SLAYOUT" = "1a" ]
then
sed -i '/layout_option =/c\layout_option = 1' /storage/.config/citra-emu/sdl2-config.ini
sed -i '/swap_screen =/c\swap_screen = 0' /storage/.config/citra-emu/sdl2-config.ini
sed -i '/custom_layout =/c\custom_layout = 0' /storage/.config/citra-emu/sdl2-config.ini
fi
if [ "$SLAYOUT" = "1b" ]
then
sed -i '/layout_option =/c\layout_option = 1' /storage/.config/citra-emu/sdl2-config.ini
sed -i '/swap_screen =/c\swap_screen = 1' /storage/.config/citra-emu/sdl2-config.ini
sed -i '/custom_layout =/c\custom_layout = 0' /storage/.config/citra-emu/sdl2-config.ini
fi
if [ "$SLAYOUT" = "2" ]
then
sed -i '/layout_option =/c\layout_option = 2' /storage/.config/citra-emu/sdl2-config.ini
sed -i '/swap_screen =/c\swap_screen = 0' /storage/.config/citra-emu/sdl2-config.ini
sed -i '/custom_layout =/c\custom_layout = 0' /storage/.config/citra-emu/sdl2-config.ini
fi
if [ "$SLAYOUT" = "3" ]
then
sed -i '/layout_option =/c\layout_option = 3' /storage/.config/citra-emu/sdl2-config.ini
sed -i '/swap_screen =/c\swap_screen = 0' /storage/.config/citra-emu/sdl2-config.ini
sed -i '/custom_layout =/c\custom_layout = 0' /storage/.config/citra-emu/sdl2-config.ini
fi
if [ "$SLAYOUT" = "4" ]
then
sed -i '/layout_option =/c\layout_option = 0' /storage/.config/citra-emu/sdl2-config.ini
sed -i '/swap_screen =/c\swap_screen = 0' /storage/.config/citra-emu/sdl2-config.ini
sed -i '/custom_layout =/c\custom_layout = 1' /storage/.config/citra-emu/sdl2-config.ini
fi
rm -rf /storage/.local/share/citra-emu

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 = OGL
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

@ -2,42 +2,26 @@
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
PKG_NAME="dolphinsa"
PKG_VERSION="9d81c84db0bec5c8e8b193efaa43688396e7c638"
PKG_LICENSE="GPLv2"
PKG_SITE="https://github.com/dolphin-emu/dolphin"
PKG_URL="${PKG_SITE}.git"
PKG_DEPENDS_TARGET="toolchain libevdev libdrm ffmpeg zlib libpng lzo libusb zstd ecm"
PKG_LONGDESC="Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements. "
case ${DEVICE} in
handheld)
PKG_SITE="https://github.com/dolphin-emu/dolphin"
PKG_URL="${PKG_SITE}.git"
PKG_VERSION="e4c007e2e1a442dbab620f91ca5f6b9b2b27dd5b"
PKG_PATCH_DIRS+=" wayland"
;;
*)
PKG_SITE="https://github.com/rtissera/dolphin"
PKG_URL="${PKG_SITE}.git"
PKG_VERSION="0b160db48796f727311cea16072174d96b784f80"
PKG_GIT_CLONE_BRANCH="egldrm"
PKG_PATCH_DIRS+=" legacy"
;;
esac
PKG_TOOLCHAIN="cmake"
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"
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_WAYLAND=ON"
fi
if [ "${VULKAN_SUPPORT}" = "yes" ]
@ -48,7 +32,6 @@ fi
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_HEADLESS=ON \
-DENABLE_EVDEV=ON \
-DTHREADS_PTHREAD_ARG=OFF \
-DUSE_DISCORD_PRESENCE=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DUSE_MGBA=OFF \
@ -59,7 +42,8 @@ PKG_CMAKE_OPTS_TARGET+=" -DENABLE_HEADLESS=ON \
-DENABLE_LTO=ON \
-DENABLE_QT=OFF \
-DENCODE_FRAMEDUMPS=OFF \
-DENABLE_CLI_TOOL=OFF"
-DENABLE_CLI_TOOL=OFF \
-DENABLE_X11=OFF"
makeinstall_target() {
@ -74,16 +58,3 @@ makeinstall_target() {
cp -rf ${PKG_BUILD}/Data/Sys/* ${INSTALL}/usr/config/dolphin-emu
cp -rf ${PKG_DIR}/config/${DEVICE}/* ${INSTALL}/usr/config/dolphin-emu
}
post_install() {
case ${DEVICE} in
*)
DOLPHIN_PLATFORM="wayland"
;;
esac
sed -e "s/@DOLPHIN_PLATFORM@/${DOLPHIN_PLATFORM}/g" \
-i ${INSTALL}/usr/bin/start_dolphin_gc.sh
sed -e "s/@DOLPHIN_PLATFORM@/${DOLPHIN_PLATFORM}/g" \
-i ${INSTALL}/usr/bin/start_dolphin_wii.sh
}

View file

@ -1,118 +0,0 @@
diff --git a/Source/Core/Core/HW/GCPadEmu.cpp b/Source/Core/Core/HW/GCPadEmu.cpp
index c8e7016..fb089c4 100644
--- a/Source/Core/Core/HW/GCPadEmu.cpp
+++ b/Source/Core/Core/HW/GCPadEmu.cpp
@@ -26,6 +26,7 @@ static const u16 button_bitmasks[] = {
PAD_BUTTON_Y,
PAD_TRIGGER_Z,
PAD_BUTTON_START,
+ PAD_BUTTON_HOTKEY,
0 // MIC HAX
};
@@ -37,7 +38,7 @@ static const u16 trigger_bitmasks[] = {
static const u16 dpad_bitmasks[] = {PAD_BUTTON_UP, PAD_BUTTON_DOWN, PAD_BUTTON_LEFT,
PAD_BUTTON_RIGHT};
-static const char* const named_buttons[] = {"A", "B", "X", "Y", "Z", "Start"};
+static const char* const named_buttons[] = {"A", "B", "X", "Y", "Z", "Start", "Hotkey"};
static const char* const named_triggers[] = {
// i18n: The left trigger button (labeled L on real controllers)
diff --git a/Source/Core/DolphinNoGUI/PlatformDRM.cpp b/Source/Core/DolphinNoGUI/PlatformDRM.cpp
index b210cea..77d4e86 100644
--- a/Source/Core/DolphinNoGUI/PlatformDRM.cpp
+++ b/Source/Core/DolphinNoGUI/PlatformDRM.cpp
@@ -11,6 +11,12 @@
#include "Core/Core.h"
#include "Core/State.h"
+#include "Core/HW/GCPad.h"
+#include "InputCommon/GCPadStatus.h"
+#include <fmt/format.h>
+#include "Core/Config/GraphicsSettings.h"
+#include "VideoCommon/VideoConfig.h"
+
#include <climits>
#include <cstdio>
@@ -54,9 +60,67 @@ void PlatformDRM::MainLoop()
{
while (IsRunning())
{
+ static int hotkey = 0;
+ static int slot = 0;
+ static int stereo = 0;
+
UpdateRunningFlag();
Core::HostDispatchJobs();
+ if(Pad::IsInitialized()) {
+ GCPadStatus x = Pad::GetStatus(0);
+
+ if( (x.button & PAD_BUTTON_HOTKEY) == PAD_BUTTON_HOTKEY) { // hotkey pressed
+ if(hotkey == 1) {
+ hotkey = 2;
+ }
+ } else {
+ hotkey = 1; // assure hotkey is released between actions
+ }
+
+ if(hotkey == 2) { // hotkey pressed
+ if( (x.button & PAD_BUTTON_START) == PAD_BUTTON_START) {
+ RequestShutdown();
+ hotkey = 0;
+ }
+
+ if( (x.button & PAD_TRIGGER_L) == PAD_TRIGGER_L) {
+ State::Load(slot);
+ hotkey = 0;
+ }
+ if( (x.button & PAD_TRIGGER_R) == PAD_TRIGGER_R) {
+ State::Save(slot);
+ hotkey = 0;
+ }
+ if( (x.button & PAD_BUTTON_DOWN) == PAD_BUTTON_DOWN) {
+ if(slot > 0) slot--;
+ Core::DisplayMessage(fmt::format("Slot {} selected", slot), 4000);
+ hotkey = 0;
+ }
+ if( (x.button & PAD_BUTTON_UP) == PAD_BUTTON_UP) {
+ if(slot < 10) slot++;
+ Core::DisplayMessage(fmt::format("Slot {} selected", slot), 4000);
+ hotkey = 0;
+ }
+ if( (x.button & PAD_BUTTON_Y) == PAD_BUTTON_Y) {
+ Core::SaveScreenShot();
+ hotkey = 0;
+ }
+ if( (x.button & PAD_BUTTON_X) == PAD_BUTTON_X) {
+ if(stereo == 0) {
+ Config::SetCurrent(Config::GFX_STEREO_MODE, StereoMode::SBS);
+ stereo = 1;
+ } else {
+ Config::SetCurrent(Config::GFX_STEREO_MODE, StereoMode::Off);
+ stereo = 0;
+ }
+ hotkey = 0;
+ }
+ }
+
+ }
+ //
+
// TODO: Is this sleep appropriate?
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
diff --git a/Source/Core/InputCommon/GCPadStatus.h b/Source/Core/InputCommon/GCPadStatus.h
index 7da1bbd..57d294d 100644
--- a/Source/Core/InputCommon/GCPadStatus.h
+++ b/Source/Core/InputCommon/GCPadStatus.h
@@ -27,6 +27,7 @@ enum PadButton
PAD_BUTTON_X = 0x0400,
PAD_BUTTON_Y = 0x0800,
PAD_BUTTON_START = 0x1000,
+ PAD_BUTTON_HOTKEY = 0x2000,
};
struct GCPadStatus

View file

@ -1,12 +0,0 @@
diff --git a/CMake/FindLibevdev.cmake b/CMake/FindLibevdev.cmake
index e89a5f229d..a7c73e0536 100644
--- a/CMake/FindLibevdev.cmake
+++ b/CMake/FindLibevdev.cmake
@@ -12,6 +12,7 @@ FIND_PATH(
HINTS ${PC_LIBEVDEV_INCLUDEDIR} ${PC_LIBEVDEV_INCLUDE_DIRS}
/usr/include
/usr/local/include
+ /usr/include/libevdev-1.0
${LIBEVDEV_PATH_INCLUDES}
)

View file

@ -1,203 +0,0 @@
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

@ -142,4 +142,4 @@ rm -rf /storage/.local/share/dolphin-emu
ln -sf /storage/.config/dolphin-emu /storage/.local/share/dolphin-emu
#Run Dolphin emulator
/usr/bin/dolphin-emu-nogui -p @DOLPHIN_PLATFORM@ -a HLE -e "${1}"
/usr/bin/dolphin-emu-nogui -p wayland -a HLE -e "${1}"

View file

@ -153,4 +153,4 @@ rm -rf /storage/.local/share/dolphin-emu
ln -sf /storage/.config/dolphin-emu /storage/.local/share/dolphin-emu
#Run Dolphin emulator
/usr/bin/dolphin-emu-nogui -p @DOLPHIN_PLATFORM@ -a HLE -e "${1}"
/usr/bin/dolphin-emu-nogui -p wayland -a HLE -e "${1}"

View file

@ -0,0 +1,328 @@
[Main]
SettingsVersion = 3
EmulationSpeed = 1.000000
FastForwardSpeed = 0.000000
TurboSpeed = 0.000000
SyncToHostRefreshRate = false
IncreaseTimerResolution = true
InhibitScreensaver = true
StartPaused = false
StartFullscreen = true
PauseOnFocusLoss = false
PauseOnMenu = true
SaveStateOnExit = true
CreateSaveStateBackups = true
CompressSaveStates = true
ConfirmPowerOff = true
LoadDevicesFromSaveStates = false
ApplyCompatibilitySettings = true
ApplyGameSettings = true
AutoLoadCheats = true
DisableAllEnhancements = false
RewindEnable = false
RewindFrequency = 10.000000
RewindSaveSlots = 10
RunaheadFrameCount = 0
[Console]
Region = Auto
Enable8MBRAM = false
[CPU]
ExecutionMode = Recompiler
OverclockEnable = false
OverclockNumerator = 1
OverclockDenominator = 1
RecompilerMemoryExceptions = false
RecompilerBlockLinking = true
RecompilerICache = false
FastmemMode = MMap
[GPU]
Renderer = Software
Adapter =
ResolutionScale = 1
Multisamples = 1
UseDebugDevice = false
PerSampleShading = false
UseThread = true
ThreadedPresentation = true
UseSoftwareRendererForReadbacks = false
TrueColor = true
ScaledDithering = true
TextureFilter = Nearest
DownsampleMode = Disabled
DisableInterlacing = true
ForceNTSCTimings = false
WidescreenHack = false
ChromaSmoothing24Bit = false
PGXPEnable = false
PGXPCulling = true
PGXPTextureCorrection = true
PGXPVertexCache = false
PGXPCPU = false
PGXPPreserveProjFP = false
PGXPTolerance = -1.000000
PGXPDepthBuffer = false
PGXPDepthClearThreshold = 1228800.000000
FullscreenMode =
[Display]
CropMode = Overscan
ActiveStartOffset = 0
ActiveEndOffset = 0
LineStartOffset = 0
LineEndOffset = 0
Force4_3For24Bit = false
AspectRatio = Auto (Game Native)
CustomAspectRatioNumerator = 0
LinearFiltering = true
IntegerScaling = false
Stretch = false
PostProcessing = false
ShowOSDMessages = true
ShowFPS = false
ShowSpeed = false
ShowResolution = false
ShowCPU = false
ShowGPU = false
ShowStatusIndicators = true
ShowInputs = false
ShowEnhancements = false
DisplayAllFrames = false
InternalResolutionScreenshots = false
VSync = false
MaxFPS = 0.000000
OSDScale = 100.000000
[CDROM]
ReadaheadSectors = 8
RegionCheck = false
LoadImageToRAM = false
LoadImagePatches = false
MuteCDAudio = false
ReadSpeedup = 1
SeekSpeedup = 1
[Audio]
Backend = Cubeb
Driver =
StretchMode = TimeStretch
BufferMS = 50
OutputLatencyMS = 20
OutputVolume = 100
FastForwardVolume = 100
OutputMuted = false
DumpOnBoot = false
[Hacks]
DMAMaxSliceTicks = 1000
DMAHaltTicks = 100
GPUFIFOSize = 16
GPUMaxRunAhead = 128
[BIOS]
SearchDirectory = /storage/roms/bios
PathNTSCU =
PathNTSCJ =
PathPAL =
PatchTTYEnable = false
PatchFastBoot = true
[Controller1]
Type = AnalogController
[Controller2]
Type = None
[Controller3]
Type = None
[Controller4]
Type = None
[Controller5]
Type = None
[Controller6]
Type = None
[Controller7]
Type = None
[Controller8]
Type = None
[MemoryCards]
Card1Type = PerGameTitle
Card2Type = None
UsePlaylistTitle = true
Directory = memcards
[ControllerPorts]
MultitapMode = Disabled
PointerXScale = 8.000000
PointerYScale = 8.000000
PointerXInvert = false
PointerYInvert = false
[Cheevos]
Enabled = false
TestMode = false
UnofficialTestMode = false
UseFirstDiscFromPlaylist = true
RichPresence = false
ChallengeMode = false
[Logging]
LogLevel = Debug
LogFilter =
LogToConsole = true
LogToDebug = true
LogToWindow = false
LogToFile = true
[Debug]
ShowVRAM = false
DumpCPUToVRAMCopies = false
DumpVRAMToCPUCopies = false
ShowGPUState = false
ShowCDROMState = false
ShowSPUState = false
ShowTimersState = false
ShowMDECState = false
ShowDMAState = false
[TextureReplacements]
EnableVRAMWriteReplacements = false
PreloadTextures = false
DumpVRAMWrites = false
DumpVRAMWriteForceAlphaChannel = true
DumpVRAMWriteWidthThreshold = 128
DumpVRAMWriteHeightThreshold = 128
[Folders]
Cache = cache
Cheats = cheats
Covers = covers
Dumps = dump
GameSettings = gamesettings
InputProfiles = inputprofiles
SaveStates = savestates
Screenshots = screenshots
Shaders = shaders
Textures = textures
[InputSources]
SDL = true
SDLControllerEnhancedMode = false
Evdev = false
XInput = false
RawInput = false
[Pad1]
Type = AnalogController
Up = SDL-0/DPadUp
Right = SDL-0/DPadRight
Down = SDL-0/DPadDown
Left = SDL-0/DPadLeft
Triangle = SDL-0/X
Circle = SDL-0/A
Cross = SDL-0/B
Square = SDL-0/Y
Select = SDL-0/Back
Start = SDL-0/Start
L1 = SDL-0/LeftShoulder
R1 = SDL-0/RightShoulder
L2 = SDL-0/+LeftTrigger
R2 = SDL-0/+RightTrigger
L3 = SDL-0/LeftStick & SDL-0/-LeftX
R3 = SDL-0/RightStick
LLeft = SDL-0/-LeftX
LRight = SDL-0/+LeftX
LDown = SDL-0/+LeftY
LUp = SDL-0/-LeftY
RLeft = SDL-0/-RightX
RRight = SDL-0/+RightX
RDown = SDL-0/+RightY
RUp = SDL-0/-RightY
[Pad2]
Type = None
[Pad3]
Type = None
[Pad4]
Type = None
[Pad5]
Type = None
[Pad6]
Type = None
[Pad7]
Type = None
[Pad8]
Type = None
[Hotkeys]
Screenshot = SDL-0/Back & SDL-0/A
ToggleWidescreen = SDL-0/Back & SDL-0/Y
OpenPauseMenu = SDL-0/Back & SDL-0/X
LoadSelectedSaveState = SDL-0/Back & SDL-0/LeftShoulder
SaveSelectedSaveState = SDL-0/Back & SDL-0/RightShoulder
SelectPreviousSaveStateSlot = SDL-0/Back & SDL-0/+RightY
SelectNextSaveStateSlot = SDL-0/Back & SDL-0/-RightY
ToggleFastForward = SDL-0/Back & SDL-0/+RightTrigger
PowerOff = SDL-0/Back & SDL-0/Start
Reset = SDL-0/Back & SDL-0/B
ChangeDisc = SDL-0/Back & SDL-0/-RightX
SwapMemoryCards = SDL-0/Back & SDL-0/+RightX
Rewind = SDL-0/Back & SDL-0/+LeftTrigger
[NoGUI]
WindowX = 0
WindowY = 0
WindowWidth = 1920
WindowHeight = 1152
[GameList]
RecursivePaths = /storage/roms/psx

View file

@ -3,39 +3,25 @@
PKG_NAME="duckstationsa"
PKG_LICENSE="GPLv3"
PKG_VERSION="6a7407565a61fb470a495cc98068db729b8f1e4f"
PKG_DEPENDS_TARGET="toolchain SDL2 nasm:host pulseaudio openssl libidn2 nghttp2 zlib curl libevdev ecm"
PKG_SITE="https://github.com/stenzek/duckstation"
PKG_URL="${PKG_SITE}.git"
PKG_SHORTDESC="Fast PlayStation 1 emulator for x86-64/AArch32/AArch64 "
case ${DEVICE} in
handheld)
PKG_VERSION="06d6447e59f208f21ba42f4df1665b789db13fb7"
PKG_PATCH_DIRS+=" new"
;;
*)
PKG_VERSION="5ab5070d73f1acc51e064bd96be4ba6ce3c06f5c"
PKG_PATCH_DIRS+=" legacy"
;;
esac
PKG_TOOLCHAIN="cmake"
PKG_PATCH_DIRS+="wayland"
if [ ! "${OPENGL}" = "no" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGL} glu libglvnd"
PKG_CMAKE_OPTS_TARGET+=" -DUSE_X11=OFF"
fi
if [ "${OPENGLES_SUPPORT}" = yes ]; then
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
PKG_CMAKE_OPTS_TARGET+=" -DUSE_X11=OFF \
-DUSE_DRMKMS=ON \
-DENABLE_EGL=ON \
-DUSE_MALI=OFF \
-DENABLE_VULKAN=OFF"
fi
if [ "${DISPLAYSERVER}" = "wl" ]; then
PKG_DEPENDS_TARGET+=" wayland ${WINDOWMANAGER} xorg-server xrandr libXi"
PKG_CMAKE_OPTS_TARGET+=" -DUSE_X11=OFF -DUSE_WAYLAND=ON"
PKG_CMAKE_OPTS_TARGET+=" -DUSE_WAYLAND=ON"
fi
if [ "${VULKAN_SUPPORT}" = "yes" ]; then
@ -53,7 +39,8 @@ pre_configure_target() {
-DUSE_SDL2=ON \
-DENABLE_CHEEVOS=ON \
-DUSE_FBDEV=OFF \
-DUSE_EVDEV=ON"
-DUSE_EVDEV=ON \
-DUSE_X11=OFF"
}
makeinstall_target() {

View file

@ -1,129 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a02270e7..dbb48953 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,6 +40,7 @@ if(SUPPORTS_WAYLAND)
endif()
if((LINUX OR FREEBSD) OR ANDROID)
option(USE_EGL "Support EGL OpenGL context creation" ON)
+ option(USE_MALI "Link with libmali for EGL support" OFF)
endif()
if((LINUX OR FREEBSD) AND NOT ANDROID)
option(USE_DRMKMS "Support DRM/KMS OpenGL contexts" OFF)
@@ -232,7 +233,7 @@ elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86" OR ${CMAKE_SYSTEM_PROCESSOR} STR
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm64")
set(CPU_ARCH "aarch64")
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv7-a" OR
- ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv7l")
+ ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv7l" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv8l")
set(CPU_ARCH "aarch32")
if(ANDROID)
# Force ARM mode, since apparently ANDROID_ARM_MODE isn't working..
@@ -240,8 +241,13 @@ elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm" OR ${CMAKE_SYSTEM_PROCESSOR} STR
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -marm")
else()
# Enable NEON.
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -marm -march=armv7-a")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -marm -march=armv7-a")
+ if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv8l")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -marm -mtune=cortex-a55")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -marm -mtune=cortex-a55")
+ else()
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -marm -march=armv7-a")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -marm -march=armv7-a")
+ endif()
endif()
else()
message(FATAL_ERROR "Unknown system processor: " ${CMAKE_SYSTEM_PROCESSOR})
diff -u -r /home/romain/duckstation/CMakeModules/FindEGL.cmake ./CMakeModules/FindEGL.cmake
--- /home/romain/duckstation/CMakeModules/FindEGL.cmake 2021-02-13 00:29:48.693304818 +0100
+++ ./CMakeModules/FindEGL.cmake 2021-02-13 00:45:35.564462969 +0100
@@ -86,6 +86,17 @@
${PKG_EGL_LIBRARY_DIRS}
)
+if(USE_MALI)
+pkg_check_modules(PKG_MALI QUIET mali)
+find_library(MALI_LIBRARY
+ NAMES
+ mali
+ HINTS
+ ${PKG_MALI_LIBRARY_DIRS}
+)
+endif()
+
+
# NB: We do *not* use the version information from pkg-config, as that
# is the implementation version (eg: the Mesa version)
if(EGL_INCLUDE_DIR)
@@ -117,7 +128,11 @@
cmake_push_check_state(RESET)
list(APPEND CMAKE_REQUIRED_LIBRARIES "${EGL_LIBRARY}")
+if(USE_MALI)
+list(APPEND CMAKE_REQUIRED_LIBRARIES "${MALI_LIBRARY}")
+endif()
list(APPEND CMAKE_REQUIRED_INCLUDES "${EGL_INCLUDE_DIR}")
+list(APPEND CMAKE_REQUIRED_DEFINITIONS "-DEGL_NO_X11 -DUSE_X11=NO")
check_cxx_source_compiles("
#include <EGL/egl.h>
@@ -161,7 +176,11 @@
mark_as_advanced(EGL_LIBRARY EGL_INCLUDE_DIR HAVE_EGL)
# compatibility variables
+if (USE_MALI)
+set(EGL_LIBRARIES ${EGL_LIBRARY} ${MALI_LIBRARY})
+else()
set(EGL_LIBRARIES ${EGL_LIBRARY})
+endif()
set(EGL_INCLUDE_DIRS ${EGL_INCLUDE_DIR})
set(EGL_VERSION_STRING ${EGL_VERSION})
Seulement dans ./CMakeModules: FindEGL.cmake.orig
diff -u -r /home/romain/duckstation/dep/glad/CMakeLists.txt ./dep/glad/CMakeLists.txt
--- /home/romain/duckstation/dep/glad/CMakeLists.txt 2021-02-13 00:29:48.765302377 +0100
+++ ./dep/glad/CMakeLists.txt 2021-02-13 00:42:20.848512028 +0100
@@ -17,8 +17,9 @@
target_sources(glad PRIVATE src/glad_wgl.c)
else()
if(USE_EGL)
+ target_compile_definitions(glad PRIVATE -DEGL_NO_X11)
target_sources(glad PRIVATE src/glad_egl.c)
- target_link_libraries(glad PRIVATE EGL::EGL)
+ target_link_libraries(glad PRIVATE EGL)
endif()
if(USE_X11)
target_sources(glad PRIVATE src/glad_glx.c)
diff -u -r /home/romain/duckstation/src/common/CMakeLists.txt ./src/common/CMakeLists.txt
--- /home/romain/duckstation/src/common/CMakeLists.txt 2021-02-13 00:29:48.885298307 +0100
+++ ./src/common/CMakeLists.txt 2021-02-13 00:42:20.848512028 +0100
@@ -175,12 +175,13 @@
)
endif()
if(USE_DRMKMS)
+ target_compile_definitions(common PRIVATE "-DEGL_NO_X11=1")
target_compile_definitions(common PRIVATE "-DUSE_GBM=1")
target_sources(common PRIVATE
gl/context_egl_gbm.cpp
gl/context_egl_gbm.h
)
- target_link_libraries(common PUBLIC GBM::GBM)
+ target_link_libraries(common PUBLIC gbm EGL)
endif()
endif()
diff -u -r /home/romain/duckstation/src/duckstation-nogui/CMakeLists.txt ./src/duckstation-nogui/CMakeLists.txt
--- /home/romain/duckstation/src/duckstation-nogui/CMakeLists.txt 2021-02-13 00:29:48.901297765 +0100
+++ ./src/duckstation-nogui/CMakeLists.txt 2021-02-13 00:56:19.913224314 +0100
@@ -29,6 +29,10 @@
target_compile_definitions(duckstation-nogui PRIVATE "-DUSE_LIBEVDEV=1")
target_include_directories(duckstation-nogui PRIVATE ${LIBEVDEV_INCLUDE_DIRS})
target_link_libraries(duckstation-nogui PRIVATE ${LIBEVDEV_LIBRARIES})
+if (USE_MALI)
+ target_link_libraries(duckstation-nogui PRIVATE ${MALI_LIBRARY})
+endif()
+
endif()
if(WIN32)

View file

@ -1,22 +0,0 @@
diff --git a/src/common/file_system.cpp b/src/common/file_system.cpp
index 6a24732..a287703 100644
--- a/src/common/file_system.cpp
+++ b/src/common/file_system.cpp
@@ -1179,6 +1179,8 @@ bool FileSystem::DeleteDirectory(const char* Path, bool Recursive)
std::string GetProgramPath()
{
+ return "/storage/.config/duckstation";
+
std::wstring buffer;
buffer.resize(MAX_PATH);
@@ -1549,6 +1551,8 @@ bool DeleteDirectory(const char* Path, bool Recursive)
std::string GetProgramPath()
{
+ return "/storage/.config/duckstation";
+
#if defined(__linux__)
static const char* exeFileName = "/proc/self/exe";

View file

@ -1,14 +0,0 @@
diff --git a/src/common/file_system.cpp b/src/common/file_system.cpp
index ceb2f08..0fa5a04 100644
--- a/src/common/file_system.cpp
+++ b/src/common/file_system.cpp
@@ -683,6 +683,9 @@ std::string GetDisplayNameFromPath(const std::string_view& path)
std::string_view GetPathDirectory(const std::string_view& path)
{
+
+ return "/storage/.config/duckstation";
+
std::string::size_type pos = GetLastSeperatorPosition(path, false);
if (pos == std::string_view::npos)
return {};

View file

@ -1,13 +0,0 @@
diff --git a/src/duckstation-qt/qthostinterface.cpp b/src/duckstation-qt/qthostinterface.cpp
index 8052278..4f338d7 100644
--- a/src/duckstation-qt/qthostinterface.cpp
+++ b/src/duckstation-qt/qthostinterface.cpp
@@ -137,7 +137,7 @@ void QtHostInterface::installTranslator()
const QString language(QString::fromStdString(GetStringSettingValue("Main", "Language", "en")));
// install the base qt translation first
- const QString base_dir(QStringLiteral("%1/translations").arg(qApp->applicationDirPath()));
+ const QString base_dir(QStringLiteral("%1/translations").arg("/storage/.config/duckstation"));
const QString base_path(QStringLiteral("%1/qtbase_%2.qm").arg(base_dir).arg(language));
if (QFile::exists(base_path))
{

View file

@ -1,389 +0,0 @@
diff --git a/src/common/gl/program.h b/src/common/gl/program.h
index d877a462..3fa9a7a7 100644
--- a/src/common/gl/program.h
+++ b/src/common/gl/program.h
@@ -40,6 +40,7 @@ public:
void Destroy();
int RegisterUniform(const char* name);
+ GLint GetUniformLocation(int index) const { return m_uniform_locations[index]; }
void Uniform1ui(int index, u32 x) const;
void Uniform2ui(int index, u32 x, u32 y) const;
void Uniform3ui(int index, u32 x, u32 y, u32 z) const;
@@ -97,6 +98,6 @@ private:
GLuint m_fragment_shader_id = 0;
std::vector<GLint> m_uniform_locations;
-};
+}; // namespace GL
} // namespace GL
\ No newline at end of file
diff --git a/src/core/host_display.cpp b/src/core/host_display.cpp
index d0469fd3..790be30f 100644
--- a/src/core/host_display.cpp
+++ b/src/core/host_display.cpp
@@ -103,6 +103,11 @@ bool HostDisplay::GetHostRefreshRate(float* refresh_rate)
return WindowInfo::QueryRefreshRateForWindow(m_window_info, refresh_rate);
}
+bool HostDisplay::SetDisplayRotation(Rotation rotation)
+{
+ return false;
+}
+
void HostDisplay::SetSoftwareCursor(std::unique_ptr<HostDisplayTexture> texture, float scale /*= 1.0f*/)
{
m_cursor_texture = std::move(texture);
diff --git a/src/core/host_display.h b/src/core/host_display.h
index ea01f846..b5a3563e 100644
--- a/src/core/host_display.h
+++ b/src/core/host_display.h
@@ -60,6 +60,15 @@ public:
std::vector<std::string> fullscreen_modes;
};
+ enum class Rotation
+ {
+ None,
+ R90Degrees,
+ R180Degrees,
+ R270Degrees,
+ Count
+ };
+
virtual ~HostDisplay();
ALWAYS_INLINE const WindowInfo& GetWindowInfo() const { return m_window_info; }
@@ -201,6 +210,7 @@ public:
virtual bool SetDisplayPixels(HostDisplayPixelFormat format, u32 width, u32 height, const void* buffer, u32 pitch);
virtual bool GetHostRefreshRate(float* refresh_rate);
+ virtual bool SetDisplayRotation(Rotation rotation);
void SetDisplayLinearFiltering(bool enabled) { m_display_linear_filtering = enabled; }
void SetDisplayTopMargin(s32 height) { m_display_top_margin = height; }
@@ -283,6 +293,7 @@ protected:
s32 m_display_top_margin = 0;
Alignment m_display_alignment = Alignment::Center;
+ Rotation m_display_rotation = Rotation::None;
std::unique_ptr<HostDisplayTexture> m_cursor_texture;
float m_cursor_texture_scale = 1.0f;
diff --git a/src/core/settings.cpp b/src/core/settings.cpp
index 833b6b9f..4381b848 100644
--- a/src/core/settings.cpp
+++ b/src/core/settings.cpp
@@ -230,6 +230,7 @@ void Settings::Load(SettingsInterface& si)
display_line_start_offset = static_cast<s8>(si.GetIntValue("Display", "LineStartOffset", 0));
display_line_end_offset = static_cast<s8>(si.GetIntValue("Display", "LineEndOffset", 0));
display_linear_filtering = si.GetBoolValue("Display", "LinearFiltering", true);
+ display_rotate = static_cast<s8>(si.GetIntValue("Display", "Rotate", 0));
display_integer_scaling = si.GetBoolValue("Display", "IntegerScaling", false);
display_stretch = si.GetBoolValue("Display", "Stretch", false);
display_post_processing = si.GetBoolValue("Display", "PostProcessing", false);
diff --git a/src/core/settings.h b/src/core/settings.h
index e837f8b2..199ecac7 100644
--- a/src/core/settings.h
+++ b/src/core/settings.h
@@ -136,6 +136,7 @@ struct Settings
s16 display_active_end_offset = 0;
s8 display_line_start_offset = 0;
s8 display_line_end_offset = 0;
+ s8 display_rotate = 0;
bool display_force_4_3_for_24bit = false;
bool gpu_24bit_chroma_smoothing = false;
bool display_linear_filtering = true;
diff --git a/src/duckstation-nogui/nogui_host_interface.cpp b/src/duckstation-nogui/nogui_host_interface.cpp
index 638af4ea..6cef355a 100644
--- a/src/duckstation-nogui/nogui_host_interface.cpp
+++ b/src/duckstation-nogui/nogui_host_interface.cpp
@@ -136,6 +136,15 @@ bool NoGUIHostInterface::CreateDisplay(bool fullscreen)
return false;
}
+ switch(g_settings.display_rotate & 3)
+ {
+ case 1: m_display->SetDisplayRotation(HostDisplay::Rotation::R90Degrees);
+ case 2: m_display->SetDisplayRotation(HostDisplay::Rotation::R180Degrees);
+ case 3: m_display->SetDisplayRotation(HostDisplay::Rotation::R270Degrees);
+ case 0:
+ default: break;
+ }
+
if (fullscreen)
SetFullscreen(true);
diff --git a/src/frontend-common/opengl_host_display.cpp b/src/frontend-common/opengl_host_display.cpp
index 7092b455..ff1c7939 100644
--- a/src/frontend-common/opengl_host_display.cpp
+++ b/src/frontend-common/opengl_host_display.cpp
@@ -203,6 +203,77 @@ void OpenGLHostDisplay::UpdateDisplayPixelsTextureFilter()
m_display_texture_is_linear_filtered = m_display_linear_filtering;
}
+bool OpenGLHostDisplay::SetDisplayRotation(Rotation rotation)
+{
+ m_display_rotation = rotation;
+ UpdateDisplayRotationFramebuffer();
+ return true;
+}
+
+void OpenGLHostDisplay::UpdateDisplayRotationFramebuffer()
+{
+ m_window_info.surface_width = m_gl_context->GetSurfaceWidth();
+ m_window_info.surface_height = m_gl_context->GetSurfaceHeight();
+
+ if (m_display_rotation_framebuffer_fbo != 0)
+ {
+ glDeleteFramebuffers(1, &m_display_rotation_framebuffer_fbo);
+ m_display_rotation_framebuffer_fbo = 0;
+ glDeleteTextures(1, &m_display_rotation_framebuffer_texture);
+ m_display_rotation_framebuffer_texture = 0;
+ }
+
+ if (m_display_rotation != Rotation::None)
+ {
+ if (m_display_rotation_framebuffer_texture == 0)
+ glGenTextures(1, &m_display_rotation_framebuffer_texture);
+ if (m_display_rotation_framebuffer_fbo == 0)
+ glGenFramebuffers(1, &m_display_rotation_framebuffer_fbo);
+
+ if (m_display_rotation == Rotation::R90Degrees || m_display_rotation == Rotation::R270Degrees)
+ std::swap(m_window_info.surface_width, m_window_info.surface_height);
+
+ GLint old_texture;
+ glGetIntegerv(GL_TEXTURE_BINDING_2D, &old_texture);
+
+ glBindTexture(GL_TEXTURE_2D, m_display_rotation_framebuffer_texture);
+
+ if (GLAD_GL_ARB_texture_storage || GLAD_GL_ES_VERSION_3_1)
+ {
+ glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, m_window_info.surface_width, m_window_info.surface_height);
+ }
+ else
+ {
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, m_window_info.surface_width, m_window_info.surface_height, 0, GL_RGBA,
+ GL_UNSIGNED_BYTE, nullptr);
+ }
+
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 1);
+
+ const GLenum framebuffer_binding = m_use_gles2_draw_path ? GL_FRAMEBUFFER : GL_DRAW_FRAMEBUFFER;
+ GLint old_framebuffer;
+ glGetIntegerv(m_use_gles2_draw_path ? GL_FRAMEBUFFER_BINDING : GL_DRAW_FRAMEBUFFER_BINDING, &old_framebuffer);
+
+ glBindFramebuffer(framebuffer_binding, m_display_rotation_framebuffer_fbo);
+ glFramebufferTexture2D(framebuffer_binding, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+ m_display_rotation_framebuffer_texture, 0);
+ Assert(glCheckFramebufferStatus(framebuffer_binding) == GL_FRAMEBUFFER_COMPLETE);
+
+ glBindFramebuffer(framebuffer_binding, old_framebuffer);
+ glBindTexture(GL_TEXTURE_2D, old_texture);
+ }
+
+ if (ImGui::GetCurrentContext())
+ {
+ ImGui::GetIO().DisplaySize =
+ ImVec2(static_cast<float>(m_window_info.surface_width), static_cast<float>(m_window_info.surface_height));
+ }
+}
+
bool OpenGLHostDisplay::SupportsDisplayPixelFormat(HostDisplayPixelFormat format) const
{
const auto [gl_internal_format, gl_format, gl_type] = GetPixelFormatMapping(m_gl_context->IsGLES(), format);
@@ -435,7 +506,7 @@ bool OpenGLHostDisplay::InitializeRenderDevice(std::string_view shader_cache_dir
glDebugMessageCallback(GLDebugCallback, nullptr);
glEnable(GL_DEBUG_OUTPUT);
- // glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
+ glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
}
if (!CreateResources())
@@ -484,7 +555,17 @@ bool OpenGLHostDisplay::ChangeRenderWindow(const WindowInfo& new_wi)
return false;
}
- m_window_info = m_gl_context->GetWindowInfo();
+ m_window_info = new_wi;
+ m_window_info.surface_width = m_gl_context->GetSurfaceWidth();
+ m_window_info.surface_height = m_gl_context->GetSurfaceHeight();
+
+ if (ImGui::GetCurrentContext())
+ {
+ ImGui::GetIO().DisplaySize.x = static_cast<float>(m_window_info.surface_width);
+ ImGui::GetIO().DisplaySize.y = static_cast<float>(m_window_info.surface_height);
+ }
+
+ UpdateDisplayRotationFramebuffer();
return true;
}
@@ -494,7 +575,16 @@ void OpenGLHostDisplay::ResizeRenderWindow(s32 new_window_width, s32 new_window_
return;
m_gl_context->ResizeSurface(static_cast<u32>(new_window_width), static_cast<u32>(new_window_height));
- m_window_info = m_gl_context->GetWindowInfo();
+ m_window_info.surface_width = m_gl_context->GetSurfaceWidth();
+ m_window_info.surface_height = m_gl_context->GetSurfaceHeight();
+
+ if (ImGui::GetCurrentContext())
+ {
+ ImGui::GetIO().DisplaySize.x = static_cast<float>(m_window_info.surface_width);
+ ImGui::GetIO().DisplaySize.y = static_cast<float>(m_window_info.surface_height);
+ }
+
+ UpdateDisplayRotationFramebuffer();
}
bool OpenGLHostDisplay::SupportsFullscreen() const
@@ -560,12 +650,17 @@ bool OpenGLHostDisplay::CreateResources()
{
static constexpr char fullscreen_quad_vertex_shader[] = R"(
uniform vec4 u_src_rect;
+uniform mat2 u_rotation_matrix;
out vec2 v_tex0;
void main()
{
vec2 pos = vec2(float((gl_VertexID << 1) & 2), float(gl_VertexID & 2));
- v_tex0 = u_src_rect.xy + pos * u_src_rect.zw;
+ v_tex0 = (u_src_rect.xy + pos * u_src_rect.zw);
+
+ vec2 center = vec2(0.5, 0.5);
+ v_tex0 = center + (u_rotation_matrix * (v_tex0 - center));
+
gl_Position = vec4(pos * vec2(2.0f, -2.0f) + vec2(-1.0f, 1.0f), 0.0f, 1.0f);
}
)";
@@ -617,12 +712,14 @@ void main()
m_display_program.Bind();
m_display_program.RegisterUniform("u_src_rect");
+ m_display_program.RegisterUniform("u_rotation_matrix");
m_display_program.RegisterUniform("samp0");
- m_display_program.Uniform1i(1, 0);
+ m_display_program.Uniform1i(2, 0);
m_cursor_program.Bind();
m_cursor_program.RegisterUniform("u_src_rect");
+ m_cursor_program.RegisterUniform("u_rotation_matrix");
m_cursor_program.RegisterUniform("samp0");
- m_cursor_program.Uniform1i(1, 0);
+ m_cursor_program.Uniform1i(2, 0);
glGenVertexArrays(1, &m_display_vao);
@@ -749,7 +846,7 @@ bool OpenGLHostDisplay::Render()
}
glDisable(GL_SCISSOR_TEST);
- glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_display_rotation_framebuffer_fbo);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
@@ -760,6 +857,12 @@ bool OpenGLHostDisplay::Render()
RenderSoftwareCursor();
+ if (m_display_rotation_framebuffer_fbo != 0)
+ {
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
+ RenderRotatedFramebuffer();
+ }
+
m_gl_context->SwapBuffers();
return true;
}
@@ -833,6 +936,13 @@ void OpenGLHostDisplay::RenderDisplay()
m_display_texture_view_width, m_display_texture_view_height, m_display_linear_filtering);
}
+static const std::array<std::array<float, 4>, static_cast<u32>(HostDisplay::Rotation::Count)> s_rotation_matrices = {{
+ {{1.0f, 0.0f, 0.0f, 1.0f}},
+ {{0.0f, 1.0f, 1.0f, 0.0f}},
+ {{-1.0f, 0.0f, 0.0f, 1.0f}},
+ {{0.0f, -1.0f, -1.0f, 0.0f}},
+}};
+
static void DrawFullscreenQuadES2(s32 tex_view_x, s32 tex_view_y, s32 tex_view_width, s32 tex_view_height,
s32 tex_width, s32 tex_height)
{
@@ -879,6 +989,8 @@ void OpenGLHostDisplay::RenderDisplay(s32 left, s32 bottom, s32 width, s32 heigh
(static_cast<float>(texture_view_y) + (position_adjust * flip_adjust)) / static_cast<float>(texture_height),
(static_cast<float>(texture_view_width) - size_adjust) / static_cast<float>(texture_width),
(static_cast<float>(texture_view_height) - (size_adjust * flip_adjust)) / static_cast<float>(texture_height));
+ glUniformMatrix2fv(m_display_program.GetUniformLocation(1), 1, GL_TRUE,
+ s_rotation_matrices[static_cast<u32>(HostDisplay::Rotation::None)].data());
glBindSampler(0, linear_filter ? m_display_linear_sampler : m_display_nearest_sampler);
glBindVertexArray(m_display_vao);
glDrawArrays(GL_TRIANGLES, 0, 3);
@@ -894,6 +1006,30 @@ void OpenGLHostDisplay::RenderDisplay(s32 left, s32 bottom, s32 width, s32 heigh
}
}
+void OpenGLHostDisplay::RenderRotatedFramebuffer()
+{
+ const u32 width = m_gl_context->GetSurfaceWidth();
+ const u32 height = m_gl_context->GetSurfaceHeight();
+
+ glViewport(0, 0, width, height);
+ glDisable(GL_BLEND);
+ glDisable(GL_CULL_FACE);
+ glDisable(GL_DEPTH_TEST);
+ glDisable(GL_SCISSOR_TEST);
+ glDepthMask(GL_FALSE);
+
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ m_display_program.Bind();
+ m_display_program.Uniform4f(0, 0.0f, 0.0f, 1.0f, 1.0f);
+ glUniformMatrix2fv(m_display_program.GetUniformLocation(1), 1, GL_TRUE,
+ s_rotation_matrices[static_cast<u32>(m_display_rotation)].data());
+ glBindTexture(GL_TEXTURE_2D, m_display_rotation_framebuffer_texture);
+
+ glBindVertexArray(m_display_vao);
+ glDrawArrays(GL_TRIANGLES, 0, 3);
+}
+
void OpenGLHostDisplay::RenderSoftwareCursor()
{
if (!HasSoftwareCursor())
diff --git a/src/frontend-common/opengl_host_display.h b/src/frontend-common/opengl_host_display.h
index 23e8d700..585ab4b5 100644
--- a/src/frontend-common/opengl_host_display.h
+++ b/src/frontend-common/opengl_host_display.h
@@ -51,6 +51,8 @@ public:
bool SetPostProcessingChain(const std::string_view& config) override;
+ bool SetDisplayRotation(Rotation rotation) override;
+
std::unique_ptr<HostDisplayTexture> CreateTexture(u32 width, u32 height, u32 layers, u32 levels, u32 samples,
HostDisplayPixelFormat format, const void* data, u32 data_stride,
bool dynamic = false) override;
@@ -83,6 +85,8 @@ protected:
void BindDisplayPixelsTexture();
void UpdateDisplayPixelsTextureFilter();
+ void UpdateDisplayRotationFramebuffer();
+ void RenderRotatedFramebuffer();
void RenderDisplay();
void RenderImGui();
@@ -121,6 +125,9 @@ protected:
u32 m_display_pixels_texture_pbo_map_size = 0;
std::vector<u8> m_gles_pixels_repack_buffer;
+ GLuint m_display_rotation_framebuffer_texture = 0;
+ GLuint m_display_rotation_framebuffer_fbo = 0;
+
PostProcessingChain m_post_processing_chain;
GL::Texture m_post_processing_input_texture;
std::unique_ptr<GL::StreamBuffer> m_post_processing_ubo;

View file

@ -1,110 +0,0 @@
diff --git a/src/frontend-common/sdl_controller_interface.cpp b/src/frontend-common/sdl_controller_interface.cpp
index 20e81daf..1deac2ce 100644
--- a/src/frontend-common/sdl_controller_interface.cpp
+++ b/src/frontend-common/sdl_controller_interface.cpp
@@ -6,6 +6,7 @@
#include "core/host_interface.h"
#include "core/system.h"
#include "sdl_initializer.h"
+#include "fullscreen_ui.h"
#include <SDL.h>
#include <cmath>
Log_SetChannel(SDLControllerInterface);
@@ -93,6 +94,8 @@ void SDLControllerInterface::PollEvents()
bool SDLControllerInterface::ProcessSDLEvent(const SDL_Event* event)
{
+ if (m_slots < 0) { m_host_interface->AddOSDMessage("State Slot set to #0", 5.f); m_slots = 0; }
+
switch (event->type)
{
case SDL_CONTROLLERDEVICEADDED:
@@ -204,6 +207,7 @@ bool SDLControllerInterface::OpenGameController(int index)
cd.joystick_id = joystick_id;
cd.haptic_left_right_effect = -1;
cd.game_controller = gcontroller;
+ cd.hotkey_down = false;
#if SDL_VERSION_ATLEAST(2, 0, 9)
cd.use_game_controller_rumble = (SDL_GameControllerRumble(gcontroller, 0, 0, 0) == 0);
@@ -712,15 +716,59 @@ bool SDLControllerInterface::HandleControllerButtonEvent(const SDL_ControllerBut
m_host_interface->SetControllerNavigationButtonState(nav_button_mapping[ev->button], pressed);
}
+ if (ev->button >= MAX_NUM_BUTTONS)
+ return false;
+
+ //------ Mimic Retroarch
+ if (ev->button == SDL_CONTROLLER_BUTTON_GUIDE || ev->button == SDL_CONTROLLER_BUTTON_BACK) it->hotkey_down = pressed;
+ else if (it->hotkey_down)
+ {
+ if (!pressed)
+ switch(ev->button)
+ {
+ case SDL_CONTROLLER_BUTTON_A : m_host_interface->SaveScreenshot(); break;
+ case SDL_CONTROLLER_BUTTON_B : m_host_interface->ResetSystem(); break;
+ case SDL_CONTROLLER_BUTTON_X : if (FullscreenUI::HasActiveWindow()) FullscreenUI::CloseQuickMenu(); else FullscreenUI::OpenQuickMenu(); break;
+ case SDL_CONTROLLER_BUTTON_Y : m_host_interface->ToggleWidescreen(); break;
+ case SDL_CONTROLLER_BUTTON_START :
+ case SDL_CONTROLLER_BUTTON_LEFTSTICK :
+ case SDL_CONTROLLER_BUTTON_RIGHTSTICK : break;
+ case SDL_CONTROLLER_BUTTON_LEFTSHOULDER : m_host_interface->LoadState(false, m_slots); break;
+ case SDL_CONTROLLER_BUTTON_RIGHTSHOULDER: m_host_interface->SaveState(false, m_slots); break;
+ case SDL_CONTROLLER_BUTTON_DPAD_UP : m_slots = ++m_slots % 10; m_host_interface->AddOSDMessage(std::string("State Slot set to #") + (char)(0x30 + m_slots), 5.f); break;
+ case SDL_CONTROLLER_BUTTON_DPAD_DOWN : m_slots = (m_slots + 9) % 10; m_host_interface->AddOSDMessage(std::string("State Slot set to #") + (char)(0x30 + m_slots), 5.f); break;
+ case SDL_CONTROLLER_BUTTON_DPAD_LEFT : m_host_interface->SetRewindState(!System::IsRewinding()); break;
+ case SDL_CONTROLLER_BUTTON_DPAD_RIGHT : m_host_interface->SetFastForwardEnabled(!m_host_interface->IsFastForwardEnabled()); break;
+ default: break;
+ }
+ else
+ switch(ev->button)
+ {
+ case SDL_CONTROLLER_BUTTON_START : m_host_interface->RequestExit(); break;
+ case SDL_CONTROLLER_BUTTON_A :
+ case SDL_CONTROLLER_BUTTON_B :
+ case SDL_CONTROLLER_BUTTON_X :
+ case SDL_CONTROLLER_BUTTON_Y :
+ case SDL_CONTROLLER_BUTTON_LEFTSTICK :
+ case SDL_CONTROLLER_BUTTON_RIGHTSTICK :
+ case SDL_CONTROLLER_BUTTON_LEFTSHOULDER :
+ case SDL_CONTROLLER_BUTTON_RIGHTSHOULDER:
+ case SDL_CONTROLLER_BUTTON_DPAD_UP :
+ case SDL_CONTROLLER_BUTTON_DPAD_DOWN :
+ case SDL_CONTROLLER_BUTTON_DPAD_LEFT :
+ case SDL_CONTROLLER_BUTTON_DPAD_RIGHT :
+ default: break;
+ }
+
+ return true;
+ }
+
if (m_host_interface->IsControllerNavigationActive())
{
// UI consumed the event
return true;
}
- if (ev->button >= MAX_NUM_BUTTONS)
- return false;
-
const ButtonCallback& cb = it->button_mapping[ev->button];
if (cb)
{
diff --git a/src/frontend-common/sdl_controller_interface.h b/src/frontend-common/sdl_controller_interface.h
index 06963a5c..ffc2ffac 100644
--- a/src/frontend-common/sdl_controller_interface.h
+++ b/src/frontend-common/sdl_controller_interface.h
@@ -57,6 +57,7 @@ private:
int joystick_id;
int player_id;
bool use_game_controller_rumble;
+ bool hotkey_down;
float deadzone = 0.25f;
@@ -93,4 +94,5 @@ private:
Hook::Callback m_event_intercept_callback;
bool m_sdl_subsystem_initialized = false;
+ int m_slots = -1;
};

View file

@ -1,13 +0,0 @@
diff --git a/src/frontend-common/controller_interface.h b/src/frontend-common/controller_interface.h
index f97d0f6..563b5f4 100644
--- a/src/frontend-common/sdl_controller_interface.h
+++ b/src/frontend-common/sdl_controller_interface.h
@@ -46,7 +46,7 @@
enum : int
{
MAX_NUM_AXES = 7,
- MAX_NUM_BUTTONS = 16,
+ MAX_NUM_BUTTONS = 256,
};
struct ControllerData

View file

@ -1,17 +0,0 @@
diff --git a/src/duckstation-nogui/nogui_host_interface.cpp b/src/duckstation-nogui/nogui_host_interface.cpp
index a8e4ddf2..eda7baa3 100644
--- a/src/duckstation-nogui/nogui_host_interface.cpp
+++ b/src/duckstation-nogui/nogui_host_interface.cpp
@@ -105,10 +105,10 @@ bool NoGUIHostInterface::CreateDisplay(bool fullscreen)
Assert(!m_display);
switch (g_settings.gpu_renderer)
{
- case GPURenderer::HardwareVulkan:
+/* case GPURenderer::HardwareVulkan:
m_display = std::make_unique<FrontendCommon::VulkanHostDisplay>();
break;
-
+*/
case GPURenderer::HardwareOpenGL:
#ifndef _WIN32
default:

View file

@ -1,5 +0,0 @@
BaseDataPaths = ".;$PROGDIR;/storage/roms/ecwolf;/storage/roms/ecwolf/spear;/storage/roms/ecwolf/ark";
FullScreenWidth = 640;
FullScreenHeight = 480;
WindowedScreenWidth = 640;
WindowedScreenHeight = 480;

View file

@ -1,56 +0,0 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2021-present Shanti Gilbert (https://github.com/shantigilbert)
# Copyright (C) 2021-present Fewtarius
PKG_NAME="ecwolf"
PKG_VERSION="e66f5564b9b382bd8a796b4b21384ac6c1356833"
PKG_LICENSE="GPLv2"
PKG_SITE="https://bitbucket.org/ecwolf/ecwolf"
PKG_URL="${PKG_SITE}.git"
PKG_DEPENDS_TARGET="toolchain SDL2 SDL2_mixer SDL2_net ecwolf:host"
PKG_LONGDESC="ECWolf is a port of the Wolfenstein 3D engine based of Wolf4SDL. It combines the original Wolfenstein 3D engine with the user experience of ZDoom to create the most user and mod author friendly Wolf3D source port."
PKG_TOOLCHAIN="cmake-make"
GET_HANDLER_SUPPORT="git"
pre_patch() {
find $(echo "${PKG_BUILD}" | cut -f1 -d\ ) -type f -exec dos2unix -q {} \;
}
pre_build_host() {
HOST_CMAKE_OPTS=""
}
make_host() {
cmake . -DNO_GTK=ON
make
}
makeinstall_host() {
: #no
}
pre_configure_target() {
PKG_CMAKE_OPTS_TARGET=" -DNO_GTK=ON \
-DFORCE_CROSSCOMPILE=ON \
-DIMPORT_EXECUTABLES=${PKG_BUILD}/.${HOST_NAME}/ImportExecutables.cmake
-DCMAKE_BUILD_TYPE=Release"
cd ${PKG_BUILD}/deps/gdtoa
$HOST_CC -o rithchk arithchk.c -Wall -Wextra
./rithchk > ${PKG_BUILD}/deps/gdtoa/arith.h
$HOST_CC -o qnan qnan.c -Wall -Wextra
./qnan > ${PKG_BUILD}/deps/gdtoa/gd_qnan.h
cd ${PKG_BUILD}
}
makeinstall_target() {
mkdir -p ${INSTALL}/usr/bin
cp ${PKG_BUILD}/ecwolf ${INSTALL}/usr/bin/
cp ${PKG_DIR}/sources/start_ecwolf.sh ${INSTALL}/usr/bin/
chmod 0755 ${INSTALL}/usr/bin/*
mkdir -p ${INSTALL}/usr/config/game/ecwolf
cp ${PKG_BUILD}/ecwolf.pk3 ${INSTALL}/usr/config/game/ecwolf/
cp ${PKG_DIR}/config/* ${INSTALL}/usr/config/game/ecwolf/
}

View file

@ -1,12 +0,0 @@
diff --git a/src/sdlvideo.cpp b/src/sdlvideo.cpp
index 83e9c73..32a9ee5 100644
--- a/src/sdlvideo.cpp
+++ b/src/sdlvideo.cpp
@@ -388,6 +388,7 @@ static MiniModeInfo WinModes[] =
{ 400, 225 }, // 16:9
{ 400, 300 },
{ 480, 270 }, // 16:9
+ { 480, 320 }, // 3:2
{ 480, 360 },
{ 512, 288 }, // 16:9
{ 512, 384 },

View file

@ -1,13 +0,0 @@
diff -wrupN ecwolf.orig/src/wl_play.cpp ecwolf/src/wl_play.cpp
--- ecwolf.orig/src/wl_play.cpp 2022-07-11 10:32:39.582296512 -0400
+++ ecwolf/src/wl_play.cpp 2022-07-11 11:54:24.558036327 -0400
@@ -100,7 +100,8 @@ ControlScheme controlScheme[] =
{ bt_zoom, "Zoom", -1, -1, -1, CS_AxisDigital, 0 },
{ bt_automap, "Automap", -1, -1, -1, CS_AxisDigital, 0 },
{ bt_showstatusbar, "Show Status", -1, sc_Tab, -1, CS_AxisDigital, 0 },
- { bt_pause, "Pause", -1, sc_Pause, -1, CS_AxisDigital, 0 },
+ { bt_pause, "Pause Game", -1, sc_Enter, -1, CS_AxisDigital, 0 },
+ { bt_esc, "Escape Game", -1, sc_Escape, -1, CS_AxisDigital, 0 },
// End of List
{ bt_nobutton, NULL, -1, -1, -1, CS_AxisDigital, 0 }

View file

@ -1,109 +0,0 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2021-present Shanti Gilbert (https://github.com/shantigilbert)
# Copyright (C) 2021-present 351ELEC (https://github.com/351ELEC/351ELEC)
. /etc/profile
. /etc/os-release
EE_DEVICE=${HW_DEVICE}
RUN_DIR="/storage/roms/ecwolf"
CONFIG_DIR="/storage/.config/game/ecwolf"
CONFIG_FILE="${CONFIG_DIR}/ecwolf.cfg"
PK3_FILE="${CONFIG_DIR}/ecwolf.pk3"
SAVE_DIR="/storage/roms/gamedata/ecwolf"
LEGACY=true
if [ ! -L "/storage/.config/ecwolf" ]; then
ln -sf "/storage/.config/game/ecwolf" "/storage/.config/ecwolf"
fi
if [ ! -f "/storage/.config/game/ecwolf/ecwolf.cfg" ]; then
cp -rf /usr/config/game/ecwolf/ecwolf.cfg /storage/.config/game/ecwolf/
fi
mkdir -p ${SAVE_DIR}
params=" --config ${CONFIG_FILE} --savedir ${SAVE_DIR}"
# data can be SD2 SD3 SOD WL6 or N3D and it's passed as the ROM
EXT=${1##*.}
# If its a mod (extension .ecwolf) read the file and parse the data
if [ ${EXT} == "ecwolf" ]; then
dos2unix "${1}"
# We don't want to break users that have .ecwolf files that predate the PATH
# option, so we'll track that here so we can handle it by:
# 1. Parsing PK3[_N] keys
# 2. Ignoring MOD and PATH keys
# 3. Running from the config dir
if grep -q "^PATH=" "${1}"; then
LEGACY=false
fi
while IFS== read -r key value; do
if $LEGACY; then
if [ "$key" == "PK3" ]; then
params+=" --file $value"
fi
if [ "$key" == "PK3_1" ]; then
params+=" --file $value"
fi
if [ "$key" == "PK3_2" ]; then
params+=" --file $value"
fi
if [ "$key" == "PK3_3" ]; then
params+=" --file $value"
fi
if [ "$key" == "PK3_4" ]; then
params+=" --file $value"
fi
else
if [ "$key" == "PATH" ]; then
# Unquote path value
temp="${value}"
temp="${temp%\"}"
temp="${temp#\"}"
RUN_DIR+="/$temp"
fi
if [ "$key" == "MOD" ]; then
params+=" --file $value"
fi
fi
if [ "$key" == "DATA" ]; then
params+=" --data $value"
fi
done <"${1}"
else
params+=" --data ${EXT}"
fi
if $LEGACY; then
cd "${CONFIG_DIR}"
else
# There doesn't appear to be a way to tell the engine with command line
# arguments where the ecwolf.pk3 is located -- it just looks in the current
# working directory. To work around this, we'll bind the ecwolf.pk3 file that
# ships with the distribution into the provided game path, if one isn't
# already present.
DST_PK3_FILE="${RUN_DIR}/ecwolf.pk3"
if [ ! -e "$DST_PK3_FILE" ]; then
do_cleanup() {
umount "$DST_PK3_FILE" &>/dev/null
rm "${DST_PK3_FILE}"
}
touch "$DST_PK3_FILE"
mount -o ro,bind "$PK3_FILE" "$DST_PK3_FILE" >/dev/null 2>&1
trap do_cleanup EXIT
fi
cd "${RUN_DIR}"
fi
echo ${params} | xargs /usr/bin/ecwolf >/var/log/ecwolf.log 2>&1

View file

@ -4,7 +4,7 @@
# Copyright (C) 2022-present Fewtarius
PKG_NAME="flycastsa"
PKG_VERSION="b232a10167b3ead55b8755059a0edec53a60463d"
PKG_VERSION="611946559c12a569af507019694cb369b3587af6"
PKG_LICENSE="GPLv2"
PKG_SITE="https://github.com/flyinghead/flycast"
PKG_URL="${PKG_SITE}.git"

View file

@ -1,59 +0,0 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present 351ELEC (https://github.com/351ELEC)
# Copyright (C) 2022 Fewtarius
PKG_NAME="gzdoom"
PKG_VERSION="8eb9c095f31c201533a16ccbae33892c11721373"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/JustEnoughLinuxOS/gzdoom"
PKG_URL="${PKG_SITE}.git"
PKG_DEPENDS_HOST="toolchain zmusic:host"
PKG_DEPENDS_TARGET="toolchain SDL2 gzdoom:host zmusic"
PKG_SHORTDESC="GZDoom is a modder-friendly OpenGL and Vulkan source port based on the DOOM engine"
PKG_LONGDESC="GZDoom is a modder-friendly OpenGL and Vulkan source port based on the DOOM engine"
GET_HANDLER_SUPPORT="git"
PKG_TOOLCHAIN="cmake-make"
pre_build_host() {
HOST_CMAKE_OPTS=""
}
make_host() {
cmake . -DNO_GTK=ON
make
}
makeinstall_host() {
: #no
}
pre_configure_host(){
PKG_CMAKE_OPTS_HOST=" -DZMUSIC_LIBRARIES=$(get_build_dir zmusic)/build_host/source/libzmusic.so \
-DZMUSIC_INCLUDE_DIR=$(get_build_dir zmusic)/include"
}
pre_configure_target() {
PKG_CMAKE_OPTS_TARGET=" -DNO_GTK=ON \
-DFORCE_CROSSCOMPILE=ON \
-DIMPORT_EXECUTABLES=${PKG_BUILD}/.${HOST_NAME}/ImportExecutables.cmake \
-DCMAKE_BUILD_TYPE=Release \
-DHAVE_GLES2=ON \
-DHAVE_VULKAN=OFF \
-DZMUSIC_LIBRARIES=$(get_build_dir zmusic)/build_target/source/libzmusic.so -DZMUSIC_INCLUDE_DIR=$(get_build_dir zmusic)/include"
}
makeinstall_target() {
mkdir -p ${INSTALL}/usr/bin
cp ${PKG_DIR}/sources/start_gzdoom.sh ${INSTALL}/usr/bin/
cp ${PKG_BUILD}/.${TARGET_NAME}/gzdoom ${INSTALL}/usr/bin
chmod 0755 ${INSTALL}/usr/bin/*
mkdir -p ${INSTALL}/usr/config/game/gzdoom
if [ -d "${PKG_DIR}/config/${DEVICE}" ]
then
cp ${PKG_DIR}/config/${DEVICE}/* ${INSTALL}/usr/config/game/gzdoom
fi
cp ${PKG_BUILD}/.${TARGET_NAME}/*.pk3 ${INSTALL}/usr/config/game/gzdoom
cp -r ${PKG_BUILD}/.${TARGET_NAME}/soundfonts ${INSTALL}/usr/config/game/gzdoom
cp -r ${PKG_BUILD}/.${TARGET_NAME}/fm_banks ${INSTALL}/usr/config/game/gzdoom
}

View file

@ -1,46 +0,0 @@
#!/usr/bin/bash
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2021-present 351ELEC (https://github.com/351ELEC)
. /etc/profile
. /etc/os-release
EE_DEVICE=${HW_DEVICE}
RUN_DIR="/storage/roms/doom"
CONFIG="/storage/.config/game/gzdoom/gzdoom.ini"
SAVE_DIR="/storage/roms/gamedata/gzdoom"
if [ ! -L "/storage/.config/gzdoom" ]; then
ln -sf "/storage/.config/game/gzdoom" "/storage/.config/gzdoom"
fi
if [ ! -f "/storage/.config/game/gzdoom/gzdoom.ini" ]; then
cp -rf /usr/config/game/gzdoom/gzdoom.ini /storage/.config/game/gzdoom/
fi
mkdir -p ${SAVE_DIR}
params=" -config ${CONFIG} -savedir ${SAVE_DIR}"
params+=" +gl_es 1 +vid_preferbackend 3 +cl_capfps 0 +vid_fps 1"
# EXT can be wad, WAD, iwad, IWAD, pwad, PWAD or doom
EXT=${1##*.}
# If its not a simple wad (extension .doom) read the file and parse the data
if [ ${EXT} == "doom" ]; then
dos2unix "${1}"
while IFS== read -r key value; do
if [ "$key" == "IWAD" ]; then
params+=" -iwad $value"
fi
if [ "$key" == "MOD" ]; then
params+=" -file $value"
fi
done <"${1}"
else
params+=" -iwad ${1}"
fi
cd "${RUN_DIR}"
echo ${params} | xargs /usr/bin/gzdoom >/var/log/gzdoom.log 2>&1

View file

@ -1,40 +0,0 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present 351ELEC (https://github.com/351ELEC)
PKG_NAME="zmusic"
PKG_VERSION="d8e6e28879ee97d00ce0eb9ad13ba462d85faf29"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/coelckers/ZMusic"
PKG_URL="${PKG_SITE}.git"
PKG_DEPENDS_TARGET="toolchain zmusic:host"
PKG_SHORTDESC="GZDoom's music system as a standalone library"
PKG_LONGDESC="GZDoom's music system as a standalone library"
GET_HANDLER_SUPPORT="git"
PKG_TOOLCHAIN="cmake-make"
pre_build_host() {
HOST_CMAKE_OPTS=""
}
make_host() {
mkdir $PKG_BUILD/build_host
cd $PKG_BUILD/build_host
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
}
make_target() {
mkdir $PKG_BUILD/build_target
cd $PKG_BUILD/build_target
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
}
makeinstall_host() {
: #no
}
makeinstall_target() {
mkdir -p $INSTALL/usr/lib
cp -f $PKG_BUILD/build_target/source/libzmusic* $INSTALL/usr/lib/
}

View file

@ -2,7 +2,7 @@
# Copyright (C) 2018-present 5schatten (https://github.com/5schatten)
PKG_NAME="hatarisa"
PKG_VERSION="213187b2d0f753139a09e621fc4f70bd2530599b"
PKG_VERSION="388b1f32c885fcb497a914b351fa58354e86bf6a"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/hatari/hatari"
PKG_URL="https://github.com/hatari/hatari/archive/${PKG_VERSION}.tar.gz"

File diff suppressed because it is too large Load diff

View file

@ -1,51 +0,0 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="lzdoom"
PKG_VERSION="2ee3ea91bc9c052b3143f44c96d85df22851426f"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/351ELEC/lzdoom"
PKG_URL="${PKG_SITE}.git"
PKG_DEPENDS_TARGET="toolchain SDL2 lzdoom:host"
PKG_SHORTDESC="LZDoom"
PKG_LONGDESC="ZDoom is a family of enhanced ports of the Doom engine for running on modern operating systems. It runs on Windows, Linux, and OS X, and adds new features not found in the games as originally published by id Software."
GET_HANDLER_SUPPORT="git"
PKG_TOOLCHAIN="cmake-make"
PKG_PATCH_DIRS+="${DEVICE}"
pre_build_host() {
HOST_CMAKE_OPTS=""
}
make_host() {
cmake . -DNO_GTK=ON
make
}
makeinstall_host() {
: #no
}
pre_configure_target() {
PKG_CMAKE_OPTS_TARGET=" -DNO_GTK=ON \
-DFORCE_CROSSCOMPILE=ON \
-DIMPORT_EXECUTABLES=${PKG_BUILD}/.$HOST_NAME/ImportExecutables.cmake \
-DCMAKE_BUILD_TYPE=Release"
}
makeinstall_target() {
mkdir -p ${INSTALL}/usr/bin
cp ${PKG_DIR}/sources/start_lzdoom.sh ${INSTALL}/usr/bin/
cp ${PKG_BUILD}/.$TARGET_NAME/lzdoom ${INSTALL}/usr/bin
chmod 0755 ${INSTALL}/usr/bin/*
mkdir -p ${INSTALL}/usr/config/game/lzdoom
if [ -d "${PKG_DIR}/config/${DEVICE}" ]
then
cp ${PKG_DIR}/config/${DEVICE}/* ${INSTALL}/usr/config/game/lzdoom
fi
cp ${PKG_BUILD}/.$TARGET_NAME/*.pk3 ${INSTALL}/usr/config/game/lzdoom
cp -r ${PKG_BUILD}/.$TARGET_NAME/soundfonts ${INSTALL}/usr/config/game/lzdoom
cp -r ${PKG_BUILD}/.$TARGET_NAME/fm_banks ${INSTALL}/usr/config/game/lzdoom
}

View file

@ -1,46 +0,0 @@
#!/usr/bin/bash
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2021-present 351ELEC (https://github.com/351ELEC/351ELEC)
. /etc/profile
. /etc/os-release
EE_DEVICE=${HW_DEVICE}
RUN_DIR="/storage/roms/doom"
CONFIG="/storage/.config/game/lzdoom/lzdoom.ini"
SAVE_DIR="/storage/roms/gamedata/lzdoom"
if [ ! -L "/storage/.config/lzdoom" ]; then
ln -sf "/storage/.config/game/lzdoom" "/storage/.config/lzdoom"
fi
if [ ! -f "/storage/.config/game/lzdoom/lzdoom.ini" ]; then
cp -rf /usr/config/game/lzdoom/lzdoom.ini /storage/.config/game/lzdoom/
fi
mkdir -p ${SAVE_DIR}
params=" -config ${CONFIG} -savedir ${SAVE_DIR}"
params+=" -width 1152 -height 1920 +vid_fps 1 +cl_capfps 0 +vid_renderer 0 +vid_glswfb 0"
# EXT can be wad, WAD, iwad, IWAD, pwad, PWAD or doom
EXT=${1##*.}
# If its not a simple wad (extension .doom) read the file and parse the data
if [ ${EXT} == "doom" ]; then
dos2unix "${1}"
while IFS== read -r key value; do
if [ "$key" == "IWAD" ]; then
params+=" -iwad $value"
fi
if [ "$key" == "MOD" ]; then
params+=" -file $value"
fi
done <"${1}"
else
params+=" -iwad ${1}"
fi
cd "${RUN_DIR}"
echo ${params} | xargs /usr/bin/lzdoom >/var/log/lzdoom.log 2>&1

View file

@ -2,7 +2,7 @@
# Copyright (C) 2022-present Fewtarius
PKG_NAME="pico-8"
PKG_VERSION="2189f9abbe9f5090f97aa4cf95f6171f0f44eef0"
PKG_VERSION="4c282e6eb947eab2e3ab54f3fe47d1aa9f539c0c"
PKG_ARCH="any"
PKG_LICENSE="GPLv2"
PKG_SITE=""

View file

@ -1,658 +0,0 @@
[Joy:JS:0]
Axis0deadzone=0.300001
Axis1deadzone=0.300001
Axis2deadzone=0.300001
Axis2scale=0.7
Axis2map=0
Axis3deadzone=0.300001
Axis3scale=0.6
Axis3map=1
[Duke.UnknownConsoleVariables]
[Duke.ConsoleVariables]
[Duke.LocalServerInfo]
[Duke.Player]
[Duke.ConsoleAliases]
[Duke.VideoSettings]
[Duke.AutoExec]
[Duke.Bindings]
Joy1=+jump
Joy2=+open
Joy3=+crouch
Joy4=toggle cl_autorun
Joy5=+alt_fire
Joy6=+fire
Joy7=quickload
Joy8=quicksave
Joy9=menu_main
Joy10=pause
Joy12=togglemap
Joy13=centerview
Joy14=invprev
Joy15=invnext
Joy16=weapprev
Joy17=weapnext
Axis1Plus=+strafe_right
Axis1Minus=+strafe_left
Axis2Plus=+move_backward
Axis2Minus=+move_forward
Axis3Plus=+turn_right
Axis3Minus=+turn_left
Axis4Plus=+look_down
Axis4Minus=+look_up
[Duke.DoubleBindings]
[Duke.AutomapBindings]
Joy9=+shrink_screen
Joy10=+enlarge_Screen
Joy13=togglefollow
Axis2Minus=+am_panup
Axis2Plus=+am_pandown
Axis1Minus=+am_panleft
Axis1Plus=+am_panright
[Nam.Bindings]
Joy1=+jump
Joy2=+open
Joy3=+crouch
Joy4=toggle cl_autorun
Joy5=+alt_fire
Joy6=+fire
Joy7=quickload
Joy8=quicksave
Joy9=menu_main
Joy10=pause
Joy12=togglemap
Joy13=centerview
Joy14=invprev
Joy15=invnext
Joy16=weapprev
Joy17=weapnext
Axis1Plus=+strafe_right
Axis1Minus=+strafe_left
Axis2Plus=+move_backward
Axis2Minus=+move_forward
Axis3Plus=+turn_right
Axis3Minus=+turn_left
Axis4Plus=+look_down
Axis4Minus=+look_up
[Nam.DoubleBindings]
[Nam.AutomapBindings]
Joy9=+shrink_screen
Joy10=+enlarge_Screen
Joy13=togglefollow
Axis2Minus=+am_panup
Axis2Plus=+am_pandown
Axis1Minus=+am_panleft
Axis1Plus=+am_panright
[NamOnly.UnknownConsoleVariables]
[NamOnly.ConsoleVariables]
[NamOnly.LocalServerInfo]
[NamOnly.Player]
[NamOnly.ConsoleAliases]
[NamOnly.VideoSettings]
[NamOnly.AutoExec]
[NamOnly.Bindings]
Joy1=+jump
Joy2=+open
Joy3=+crouch
Joy4=toggle cl_autorun
Joy5=+alt_fire
Joy6=+fire
Joy7=quickload
Joy8=quicksave
Joy9=menu_main
Joy10=pause
Joy12=togglemap
Joy13=centerview
Joy14=invprev
Joy15=invnext
Joy16=weapprev
Joy17=weapnext
Axis1Plus=+strafe_right
Axis1Minus=+strafe_left
Axis2Plus=+move_backward
Axis2Minus=+move_forward
Axis3Plus=+turn_right
Axis3Minus=+turn_left
Axis4Plus=+look_down
Axis4Minus=+look_up
[NamOnly.DoubleBindings]
[NamOnly.AutomapBindings]
Joy9=+shrink_screen
Joy10=+enlarge_Screen
Joy13=togglefollow
Axis2Minus=+am_panup
Axis2Plus=+am_pandown
Axis1Minus=+am_panleft
Axis1Plus=+am_panright
[Napalm.UnknownConsoleVariables]
[Napalm.ConsoleVariables]
[Napalm.LocalServerInfo]
[Napalm.Player]
[Napalm.ConsoleAliases]
[Napalm.VideoSettings]
[Napalm.AutoExec]
[Napalm.Bindings]
Joy1=+jump
Joy2=+open
Joy3=+crouch
Joy4=toggle cl_autorun
Joy5=+alt_fire
Joy6=+fire
Joy7=quickload
Joy8=quicksave
Joy9=menu_main
Joy10=pause
Joy12=togglemap
Joy13=centerview
Joy14=invprev
Joy15=invnext
Joy16=weapprev
Joy17=weapnext
Axis1Plus=+strafe_right
Axis1Minus=+strafe_left
Axis2Plus=+move_backward
Axis2Minus=+move_forward
Axis3Plus=+turn_right
Axis3Minus=+turn_left
Axis4Plus=+look_down
Axis4Minus=+look_up
[Napalm.DoubleBindings]
[Napalm.AutomapBindings]
Joy9=+shrink_screen
Joy10=+enlarge_Screen
Joy13=togglefollow
Axis2Minus=+am_panup
Axis2Plus=+am_pandown
Axis1Minus=+am_panleft
Axis1Plus=+am_panright
[WW2GI.UnknownConsoleVariables]
[WW2GI.ConsoleVariables]
[WW2GI.LocalServerInfo]
[WW2GI.Player]
[WW2GI.ConsoleAliases]
[WW2GI.VideoSettings]
[WW2GI.AutoExec]
[WW2GI.Bindings]
Joy1=+jump
Joy2=+open
Joy3=+crouch
Joy4=toggle cl_autorun
Joy5=+alt_fire
Joy6=+fire
Joy7=quickload
Joy8=quicksave
Joy9=menu_main
Joy10=pause
Joy12=togglemap
Joy13=centerview
Joy14=invprev
Joy15=invnext
Joy16=weapprev
Joy17=weapnext
Axis1Plus=+strafe_right
Axis1Minus=+strafe_left
Axis2Plus=+move_backward
Axis2Minus=+move_forward
Axis3Plus=+turn_right
Axis3Minus=+turn_left
Axis4Plus=+look_down
Axis4Minus=+look_up
[WW2GI.DoubleBindings]
[WW2GI.AutomapBindings]
Joy9=+shrink_screen
Joy10=+enlarge_Screen
Joy13=togglefollow
Axis2Minus=+am_panup
Axis2Plus=+am_pandown
Axis1Minus=+am_panleft
Axis1Plus=+am_panright
[Redneck.UnknownConsoleVariables]
[Redneck.ConsoleVariables]
[Redneck.LocalServerInfo]
[Redneck.Player]
[Redneck.ConsoleAliases]
[Redneck.VideoSettings]
[Redneck.AutoExec]
[Redneck.Bindings]
Joy1=+jump
Joy2=+open
Joy3=+crouch
Joy4=toggle cl_autorun
Joy5=+alt_fire
Joy6=+fire
Joy7=quickload
Joy8=quicksave
Joy9=menu_main
Joy10=pause
Joy12=togglemap
Joy13=centerview
Joy14=invprev
Joy15=invnext
Joy16=weapprev
Joy17=weapnext
Axis1Plus=+strafe_right
Axis1Minus=+strafe_left
Axis2Plus=+move_backward
Axis2Minus=+move_forward
Axis3Plus=+turn_right
Axis3Minus=+turn_left
Axis4Plus=+look_down
Axis4Minus=+look_up
[Redneck.DoubleBindings]
[Redneck.AutomapBindings]
Joy9=+shrink_screen
Joy10=+enlarge_Screen
Joy13=togglefollow
Axis2Minus=+am_panup
Axis2Plus=+am_pandown
Axis1Minus=+am_panleft
Axis1Plus=+am_panright
[RedneckRides.UnknownConsoleVariables]
[RedneckRides.ConsoleVariables]
[RedneckRides.LocalServerInfo]
[RedneckRides.Player]
[RedneckRides.ConsoleAliases]
[RedneckRides.VideoSettings]
[RedneckRides.AutoExec]
[RedneckRides.Bindings]
Joy1=+jump
Joy2=+open
Joy3=+crouch
Joy4=toggle cl_autorun
Joy5=+alt_fire
Joy6=+fire
Joy7=quickload
Joy8=quicksave
Joy9=menu_main
Joy10=pause
Joy12=togglemap
Joy13=centerview
Joy14=invprev
Joy15=invnext
Joy16=weapprev
Joy17=weapnext
Axis1Plus=+strafe_right
Axis1Minus=+strafe_left
Axis2Plus=+move_backward
Axis2Minus=+move_forward
Axis3Plus=+turn_right
Axis3Minus=+turn_left
Axis4Plus=+look_down
Axis4Minus=+look_up
[RedneckRides.DoubleBindings]
[RedneckRides.AutomapBindings]
Joy9=+shrink_screen
Joy10=+enlarge_Screen
Joy13=togglefollow
Axis2Minus=+am_panup
Axis2Plus=+am_pandown
Axis1Minus=+am_panleft
Axis1Plus=+am_panright
[Blood.UnknownConsoleVariables]
[Blood.ConsoleVariables]
[Blood.LocalServerInfo]
[Blood.Player]
[Blood.ConsoleAliases]
[Blood.VideoSettings]
[Blood.AutoExec]
[Blood.Bindings]
Joy1=+jump
Joy2=+open
Joy3=+crouch
Joy4=toggle cl_autorun
Joy5=+alt_fire
Joy6=+fire
Joy7=weapprev
Joy8=weapnext
Joy9=menu_main
Joy10=pause
Joy12=togglemap
Joy13=centerview
Joy14=third_person_view
Joy15=invuse
Joy16=invprev
Joy17=invnext
Axis1Plus=+strafe_right
Axis1Minus=+strafe_left
Axis2Plus=+move_backward
Axis2Minus=+move_forward
Axis3Plus=+turn_right
Axis3Minus=+turn_left
Axis4Plus=+look_down
Axis4Minus=+look_up
[Blood.DoubleBindings]
[Blood.AutomapBindings]
Joy9=+shrink_screen
Joy10=+enlarge_Screen
Joy13=togglefollow
Axis2Minus=+am_panup
Axis2Plus=+am_pandown
Axis1Minus=+am_panleft
Axis1Plus=+am_panright
[ShadowWarrior.UnknownConsoleVariables]
[ShadowWarrior.ConsoleVariables]
[ShadowWarrior.LocalServerInfo]
[ShadowWarrior.Player]
[ShadowWarrior.ConsoleAliases]
[ShadowWarrior.VideoSettings]
[ShadowWarrior.AutoExec]
[ShadowWarrior.Bindings]
Joy1=+jump
Joy2=+open
Joy3=+crouch
Joy4=toggle cl_autorun
Joy5=+alt_fire
Joy6=+fire
Joy7=quickload
Joy8=quicksave
Joy9=menu_main
Joy10=pause
Joy12=togglemap
Joy13=centerview
Joy14=invprev
Joy15=invnext
Joy16=weapprev
Joy17=weapnext
Axis1Plus=+strafe_right
Axis1Minus=+strafe_left
Axis2Plus=+move_backward
Axis2Minus=+move_forward
Axis3Plus=+turn_right
Axis3Minus=+turn_left
Axis4Plus=+look_down
Axis4Minus=+look_up
[ShadowWarrior.DoubleBindings]
[ShadowWarrior.AutomapBindings]
Joy9=+shrink_screen
Joy10=+enlarge_Screen
Joy13=togglefollow
Axis2Minus=+am_panup
Axis2Plus=+am_pandown
Axis1Minus=+am_panleft
Axis1Plus=+am_panright
[Exhumed.UnknownConsoleVariables]
[Exhumed.ConsoleVariables]
[Exhumed.LocalServerInfo]
[Exhumed.Player]
[Exhumed.ConsoleAliases]
[Exhumed.VideoSettings]
[Exhumed.AutoExec]
[Exhumed.Bindings]
Joy1=+jump
Joy2=+open
Joy3=+crouch
Joy4=toggle cl_autorun
Joy5=+alt_fire
Joy6=+fire
Joy7=quickload
Joy8=quicksave
Joy9=menu_main
Joy10=pause
Joy12=togglemap
Joy13=centerview
Joy14=invprev
Joy15=invnext
Joy16=weapprev
Joy17=weapnext
Axis1Plus=+strafe_right
Axis1Minus=+strafe_left
Axis2Plus=+move_backward
Axis2Minus=+move_forward
Axis3Plus=+turn_right
Axis3Minus=+turn_left
Axis4Plus=+look_down
Axis4Minus=+look_up
[Exhumed.DoubleBindings]
[Exhumed.AutomapBindings]
Joy9=+shrink_screen
Joy10=+enlarge_Screen
Joy13=togglefollow
Axis2Minus=+am_panup
Axis2Plus=+am_pandown
Axis1Minus=+am_panleft
Axis1Plus=+am_panright
[Plutopak.UnknownConsoleVariables]
[Plutopak.ConsoleVariables]
[Plutopak.LocalServerInfo]
[Plutopak.Player]
[Plutopak.ConsoleAliases]
[Plutopak.VideoSettings]
[Plutopak.AutoExec]
[Plutopak.Bindings]
Joy1=+jump
Joy2=+open
Joy3=+crouch
Joy4=toggle cl_autorun
Joy5=+alt_fire
Joy6=+fire
Joy7=quickload
Joy8=quicksave
Joy9=menu_main
Joy10=pause
Joy12=togglemap
Joy13=centerview
Joy14=invprev
Joy15=invnext
Joy16=weapprev
Joy17=weapnext
Axis1Plus=+strafe_right
Axis1Minus=+strafe_left
Axis2Plus=+move_backward
Axis2Minus=+move_forward
Axis3Plus=+turn_right
Axis3Minus=+turn_left
Axis4Plus=+look_down
Axis4Minus=+look_up
[Plutopak.DoubleBindings]
[Plutopak.AutomapBindings]
Joy9=+shrink_screen
Joy10=+enlarge_Screen
Joy13=togglefollow
Axis2Minus=+am_panup
Axis2Plus=+am_pandown
Axis1Minus=+am_panleft
Axis1Plus=+am_panright
[Worldtour.UnknownConsoleVariables]
[Worldtour.ConsoleVariables]
[Worldtour.LocalServerInfo]
[Worldtour.Player]
[Worldtour.ConsoleAliases]
[Worldtour.VideoSettings]
[Worldtour.AutoExec]
[Worldtour.Bindings]
Joy1=+jump
Joy2=+open
Joy3=+crouch
Joy4=toggle cl_autorun
Joy5=+alt_fire
Joy6=+fire
Joy7=quickload
Joy8=quicksave
Joy9=menu_main
Joy10=pause
Joy12=togglemap
Joy13=centerview
Joy14=invprev
Joy15=invnext
Joy16=weapprev
Joy17=weapnext
Axis1Plus=+strafe_right
Axis1Minus=+strafe_left
Axis2Plus=+move_backward
Axis2Minus=+move_forward
Axis3Plus=+turn_right
Axis3Minus=+turn_left
Axis4Plus=+look_down
Axis4Minus=+look_up
[Worldtour.DoubleBindings]
[Worldtour.AutomapBindings]
Joy9=+shrink_screen
Joy10=+enlarge_Screen
Joy13=togglefollow
Axis2Minus=+am_panup
Axis2Plus=+am_pandown
Axis1Minus=+am_panleft
Axis1Plus=+am_panright
[Shareware.UnknownConsoleVariables]
[Shareware.ConsoleVariables]
[Shareware.LocalServerInfo]
[Shareware.Player]
[Shareware.ConsoleAliases]
[Shareware.VideoSettings]
[Shareware.AutoExec]
[Shareware.Bindings]
Joy1=+jump
Joy2=+open
Joy3=+crouch
Joy4=toggle cl_autorun
Joy5=+alt_fire
Joy6=+fire
Joy7=quickload
Joy8=quicksave
Joy9=menu_main
Joy10=pause
Joy12=togglemap
Joy13=centerview
Joy14=invprev
Joy15=invnext
Joy16=weapprev
Joy17=weapnext
Axis1Plus=+strafe_right
Axis1Minus=+strafe_left
Axis2Plus=+move_backward
Axis2Minus=+move_forward
Axis3Plus=+turn_right
Axis3Minus=+turn_left
Axis4Plus=+look_down
Axis4Minus=+look_up
[Shareware.DoubleBindings]
[Shareware.AutomapBindings]
Joy9=+shrink_screen
Joy10=+enlarge_Screen
Joy13=togglefollow
Axis2Minus=+am_panup
Axis2Plus=+am_pandown
Axis1Minus=+am_panleft
Axis1Plus=+am_panright

View file

@ -1,66 +0,0 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright (C) 2022-present travis134
. /etc/profile
BUILDENGINEPATH="/storage/roms/build"
# From https://zdoom.org/wiki/Raze#Supported_games
SUPPORTED_GRP=(
"BLOOD.RFF"
"DUKE3D.GRP"
"DUKEDC.GRP"
"VACATION.GRP"
"NWINTER.GRP"
"STUFF.DAT"
"NAM.GRP"
"REDNECK.GRP"
"SW.GRP"
"TD.GRP"
"TWINDRAG.GRP"
"WT.GRP"
"WW2GI.GRP"
"PLATOONL.DAT"
)
clear
echo "Scanning for games..."
find_names=()
for i in "${!SUPPORTED_GRP[@]}"; do
if [[ "${i}" != 0 ]]; then
find_names+=("-o")
fi
find_names+=("-name")
find_names+=("${SUPPORTED_GRP[$i]}")
done
grp_files=$(find "${BUILDENGINEPATH}" -mindepth 1 -type f \( "${find_names[@]}" \))
# This is a hack that ensures any expansion GRP file gets written out as a
# build file last. For example, VACATION.GRP is an expansion for DUKE3D.GRP.
# For the expansion to work, both GRP files must be present, but the expansion
# GRP must be passed to the Raze engine. It just so happens that all of the
# expansion GRP files are named alphabetically later than base game GRP files,
# meaning we can get by with a simple lexical sort before processing.
grp_files=$(echo "${grp_files}" | sort)
echo "Adding games..."
while read -r grp_file; do
abs_path=$(dirname "${grp_file}")
path=${abs_path#"$BUILDENGINEPATH/"}
filename="${path##*/}"
if [[ "$path" =~ \ |\' ]]; then
path="\"${path}\""
fi
grp=$(basename "${grp_file}")
if [[ "$grp" =~ \ |\' ]]; then
grp="\"${grp}\""
fi
file="${BUILDENGINEPATH}/${filename}.build"
cat >"${file}" <<-EOM
PATH=${path}
GRP=${grp}
-- end --
EOM
done <<<"${grp_files}"
clear

View file

@ -1,67 +0,0 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021-present 351ELEC (https://github.com/351ELEC)
# Copyright (C) 2022-present Fewtarius
PKG_NAME="raze"
PKG_VERSION="5a27390eaf0bf130df9ff94ff82835c3bbbdaea1"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/zdoom/Raze"
PKG_URL="${PKG_SITE}.git"
PKG_DEPENDS_TARGET="toolchain SDL2 raze:host zmusic libvpx"
PKG_SHORTDESC="Raze is a fork of Build engine games backed by GZDoom tech and combines Duke Nukem 3D, Blood, Redneck Rampage, Shadow Warrior and Exhumed/Powerslave in a single package."
PKG_LONGDESC="Raze is a fork of Build engine games backed by GZDoom tech and combines Duke Nukem 3D, Blood, Redneck Rampage, Shadow Warrior and Exhumed/Powerslave in a single package."
GET_HANDLER_SUPPORT="git"
PKG_TOOLCHAIN="cmake-make"
PKG_PATCH_DIRS+="${DEVICE}"
pre_build_host() {
HOST_CMAKE_OPTS=""
}
make_host() {
cmake . -DNO_GTK=ON
make
}
makeinstall_host() {
: #no
}
pre_configure_host(){
PKG_CMAKE_OPTS_HOST=" -DZMUSIC_LIBRARIES=$(get_build_dir zmusic)/build_host/source/libzmusic.so \
-DZMUSIC_INCLUDE_DIR=$(get_build_dir zmusic)/include"
}
pre_configure_target() {
PKG_CMAKE_OPTS_TARGET=" -DNO_GTK=ON \
-DFORCE_CROSSCOMPILE=ON \
-DIMPORT_EXECUTABLES=${PKG_BUILD}/.${HOST_NAME}/ImportExecutables.cmake \
-DCMAKE_BUILD_TYPE=Release \
-DHAVE_GLES2=ON \
-DHAVE_VULKAN=OFF \
-DZMUSIC_LIBRARIES=$(get_build_dir zmusic)/build_target/source/libzmusic.so -DZMUSIC_INCLUDE_DIR=$(get_build_dir zmusic)/include"
}
makeinstall_target() {
mkdir -p ${INSTALL}/usr/bin
cp ${PKG_DIR}/sources/start_raze.sh ${INSTALL}/usr/bin/
cp ${PKG_BUILD}/.${TARGET_NAME}/raze ${INSTALL}/usr/bin
chmod 0755 ${INSTALL}/usr/bin/*
mkdir -p ${INSTALL}/usr/config/game/raze
cp -rf ${PKG_DIR}/config/common/* ${INSTALL}/usr/config/game/raze
chmod 0755 ${INSTALL}/usr/config/game/raze/games/*sh
if [ -d "${PKG_DIR}/config/${DEVICE}" ]
then
cp -rf ${PKG_DIR}/config/${DEVICE}/* ${INSTALL}/usr/config/game/raze
cat ${INSTALL}/usr/config/game/raze/defaults.ini >> ${INSTALL}/usr/config/game/raze/raze.ini
rm ${INSTALL}/usr/config/game/raze/defaults.ini
fi
cp ${PKG_BUILD}/.${TARGET_NAME}/*.pk3 ${INSTALL}/usr/config/game/raze
cp -r ${PKG_BUILD}/.${TARGET_NAME}/soundfonts ${INSTALL}/usr/config/game/raze
mkdir -p ${INSTALL}/usr/lib/autostart/common
cp ${PKG_DIR}/sources/autostart/common/* ${INSTALL}/usr/lib/autostart/common
chmod 0755 ${INSTALL}/usr/lib/autostart/common/*
}

View file

@ -1,110 +0,0 @@
diff --git a/source/common/rendering/gles/gles_system.cpp b/source/common/rendering/gles/gles_system.cpp
index 51f8ee6a2..24904a7b0 100644
--- a/source/common/rendering/gles/gles_system.cpp
+++ b/source/common/rendering/gles/gles_system.cpp
@@ -10,7 +10,7 @@ CVAR(Bool, gles_force_glsl_v100, false, 0);
CVAR(Int, gles_max_lights_per_surface, 32, 0);
EXTERN_CVAR(Bool, gl_customshader);
-
+#define __ANDROID__
#if USE_GLES2
PFNGLMAPBUFFERRANGEEXTPROC glMapBufferRange = NULL;
@@ -182,6 +182,7 @@ namespace OpenGLESRenderer
#if USE_GLES2
gles.depthStencilAvailable = CheckExtension("GL_OES_packed_depth_stencil");
gles.npotAvailable = CheckExtension("GL_OES_texture_npot");
+ gles.useMappedBuffers = true;
gles.depthClampAvailable = CheckExtension("GL_EXT_depth_clamp");
#else
gles.depthStencilAvailable = true;
diff --git a/source/common/rendering/gles/gles_system.h b/source/common/rendering/gles/gles_system.h
index d7f6ed139..a43e4e52f 100644
--- a/source/common/rendering/gles/gles_system.h
+++ b/source/common/rendering/gles/gles_system.h
@@ -23,7 +23,7 @@
#include <sys/stat.h>
#include <fcntl.h>
-#define USE_GLES2 0
+#define USE_GLES2 1
#if (USE_GLES2)
#include "glad/glad.h"
diff --git a/source/games/duke/src/game_misc.cpp b/source/games/duke/src/game_misc.cpp
index c0a1fa0c2..1ec1bfbdf 100644
--- a/source/games/duke/src/game_misc.cpp
+++ b/source/games/duke/src/game_misc.cpp
@@ -239,8 +239,6 @@ void drawoverlays(double smoothratio)
int cposx, cposy, cang;
pp = &ps[screenpeek];
- // set palette here, in case the 3D view is off.
- setgamepalette(setpal(pp));
float blend[4] = {};
diff --git a/wadsrc/static/language.def b/wadsrc/static/language.def
new file mode 100644
index 000000000..210cdfb4e
--- /dev/null
+++ b/wadsrc/static/language.def
@@ -0,0 +1,4 @@
+[default]
+
+// Engine strings
+CNTRLMNU_OPEN_MAIN = "Open Main Menu";
diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt
index 964fdbcac..f4a39981c 100644
--- a/wadsrc/static/menudef.txt
+++ b/wadsrc/static/menudef.txt
@@ -737,6 +737,7 @@ OptionMenu "OtherControlsMenu" protected
Control "$CNTRLMNU_ADJUST_GAMMA" , "bumpgamma"
StaticText ""
+ Control "$CNTRLMNU_OPEN_MAIN" , "menu_main"
ifnotgame(Exhumed)
{
Control "$CNTRLMNU_OPEN_HELP" , "openhelpmenu"
@@ -1694,33 +1695,14 @@ OptionMenu CustomResolutionMenu protected
StaticText "$VIDMNU_RESPRESETHEAD"
StaticText ""
- StaticText "$VIDMNU_ASPECT43"
+ Command "320x240", "menu_resolution_set_custom 320 240"
+ Command "360x240", "menu_resolution_set_custom 360 240"
+ Command "400x300", "menu_resolution_set_custom 400 300"
+ Command "450x300", "menu_resolution_set_custom 450 300"
+ Command "480x320", "menu_resolution_set_custom 480 320"
+ Command "480x360", "menu_resolution_set_custom 480 360"
+ Command "512x384", "menu_resolution_set_custom 512 384"
Command "640x480", "menu_resolution_set_custom 640 480"
- Command "1024x768", "menu_resolution_set_custom 1024 768"
- Command "1280x960", "menu_resolution_set_custom 1280 960"
- Command "1600x1200", "menu_resolution_set_custom 1600 1200"
- StaticText ""
- StaticText "$VIDMNU_ASPECT54"
- Command "1280x1024", "menu_resolution_set_custom 1280 1024"
- StaticText ""
- StaticText "$VIDMNU_ASPECT169"
- Command "960x540", "menu_resolution_set_custom 960 540"
- Command "(720p HD) 1280x720", "menu_resolution_set_custom 1280 720"
- Command "1366x768", "menu_resolution_set_custom 1366 768"
- Command "(1080p HD) 1920x1080", "menu_resolution_set_custom 1920 1080"
- Command "(1440p HD) 2560x1440", "menu_resolution_set_custom 2560 1440"
- Command "(4K UHD) 3840x2160", "menu_resolution_set_custom 3840 2160"
- StaticText ""
- StaticText "$VIDMNU_ASPECT1610"
- Command "960x600", "menu_resolution_set_custom 960 600"
- Command "1280x800", "menu_resolution_set_custom 1280 800"
- Command "1440x900", "menu_resolution_set_custom 1440 900"
- Command "1680x1050", "menu_resolution_set_custom 1680 1050"
- Command "1920x1200", "menu_resolution_set_custom 1920 1200"
- StaticText ""
- StaticText "$VIDMNU_ASPECT219"
- Command "1920x810", "menu_resolution_set_custom 1920 810"
- Command "2560x1080", "menu_resolution_set_custom 2560 1080"
}

View file

@ -1,9 +0,0 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright (C) 2022-present travis134
if [ ! -e "/storage/roms/build/_Scan Build Engine Games.sh" ]; then
cp "/usr/config/game/raze/games/_Scan Build Engine Games.sh" "/storage/roms/build/_Scan Build Engine Games.sh"
chmod +x "/storage/roms/build/_Scan Build Engine Games.sh"
fi

View file

@ -1,46 +0,0 @@
#!/usr/bin/bash
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2021-present 351ELEC (https://github.com/351ELEC)
. /etc/profile
. /etc/os-release
EE_DEVICE=${HW_DEVICE}
RUN_DIR="/storage/roms/build"
CONFIG="/storage/.config/game/raze/raze.ini"
SAVE_DIR="/storage/roms/gamedata/raze"
if [ ! -L "/storage/.config/raze" ]; then
ln -sf "/storage/.config/game/raze" "/storage/.config/raze"
fi
if [ ! -f "/storage/.config/game/raze/raze.ini" ]; then
cp -rf /usr/config/game/raze/raze.ini /storage/.config/game/raze/
fi
mkdir -p ${SAVE_DIR}
params=" -config ${CONFIG} -savedir ${SAVE_DIR}"
params+=" +gl_es 1 +vid_preferbackend 3 +cl_capfps 0 +cl_nomeleeblur 1 +vid_fps 1"
EXT=${1##*.}
if [ ${EXT} == "build" ]; then
dos2unix "${1}"
while IFS== read -r key value; do
if [ "$key" == "PATH" ]; then
# Unquote path value
temp="${value}"
temp="${temp%\"}"
temp="${temp#\"}"
RUN_DIR+="/$temp"
fi
if [ "$key" == "GRP" ]; then
params+=" -gamegrp $value"
fi
done <"${1}"
fi
cd "${RUN_DIR}"
/usr/bin/raze ${params} >/var/log/raze.log 2>&1

View file

@ -2,7 +2,7 @@
# Copyright (C) 2021-present 351ELEC (https://github.com/351ELEC)
PKG_NAME="retroarch"
PKG_VERSION="750bc7bf8b10c9e351e6502de9bab3b5f180d47b"
PKG_VERSION="7213aada8d5fef72a93379a0d700bb1b678e4a70"
PKG_SITE="https://github.com/libretro/RetroArch"
PKG_URL="${PKG_SITE}.git"
PKG_LICENSE="GPLv3"
@ -86,16 +86,6 @@ makeinstall_target() {
cp ${PKG_BUILD}/retroarch ${INSTALL}/usr/bin
mkdir -p ${INSTALL}/usr/share/retroarch/filters
case ${ARCH} in
aarch64)
cp -vP ${ROOT}/build.${DISTRO}-${DEVICE}.arm/retroarch-*/.install_pkg/usr/bin/retroarch ${INSTALL}/usr/bin/retroarch32
mkdir -p ${INSTALL}/usr/share/retroarch/filters/32bit/
cp -rvP ${ROOT}/build.${DISTRO}-${DEVICE}.arm/retroarch-*/.install_pkg/usr/share/retroarch/filters/64bit/* ${INSTALL}/usr/share/retroarch/filters/32bit/
;;
esac
mkdir -p ${INSTALL}/etc
cp ${PKG_BUILD}/retroarch.cfg ${INSTALL}/etc

View file

@ -0,0 +1,27 @@
input_libretro_device_p1 = "1"
input_libretro_device_p2 = "1"
input_libretro_device_p3 = "1"
input_libretro_device_p4 = "1"
input_libretro_device_p5 = "1"
input_player1_analog_dpad_mode = "1"
input_player1_btn_down = "6"
input_player1_btn_left = "4"
input_player1_btn_right = "5"
input_player1_btn_up = "7"
input_player1_stk_l_x+ = "5"
input_player1_stk_l_x- = "4"
input_player1_stk_l_y+ = "6"
input_player1_stk_l_y- = "7"
input_player1_stk_r_x+ = "5"
input_player1_stk_r_x- = "4"
input_player1_stk_r_y+ = "6"
input_player1_stk_r_y- = "7"
input_player2_analog_dpad_mode = "0"
input_player3_analog_dpad_mode = "0"
input_player4_analog_dpad_mode = "0"
input_player5_analog_dpad_mode = "0"
input_remap_port_p1 = "0"
input_remap_port_p2 = "1"
input_remap_port_p3 = "2"
input_remap_port_p4 = "3"
input_remap_port_p5 = "4"

View file

@ -0,0 +1,153 @@
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"
pcsx_rearmed_display_internal_fps = "disabled"
pcsx_rearmed_dithering = "enabled"
pcsx_rearmed_drc = "enabled"
pcsx_rearmed_duping_enable = "enabled"
pcsx_rearmed_frameskip_type = "disabled"
pcsx_rearmed_gteregsunneeded = "disabled"
pcsx_rearmed_gunconadjustratiox = "1"
pcsx_rearmed_gunconadjustratioy = "1"
pcsx_rearmed_gunconadjustx = "0"
pcsx_rearmed_gunconadjusty = "0"
pcsx_rearmed_idiablofix = "disabled"
pcsx_rearmed_input_sensitivity = "1.00"
pcsx_rearmed_inuyasha_fix = "disabled"
pcsx_rearmed_memcard2 = "disabled"
pcsx_rearmed_multitap1 = "auto"
pcsx_rearmed_multitap2 = "auto"
pcsx_rearmed_negcon_deadzone = "0"
pcsx_rearmed_negcon_response = "linear"
pcsx_rearmed_neon_enhancement_enable = "disabled"
pcsx_rearmed_neon_enhancement_no_main = "disabled"
pcsx_rearmed_neon_interlace_enable = "disabled"
pcsx_rearmed_nocdaudio = "enabled"
pcsx_rearmed_nogteflags = "disabled"
pcsx_rearmed_nosmccheck = "disabled"
pcsx_rearmed_noxadecoding = "enabled"
pcsx_rearmed_pad1type = "standard"
pcsx_rearmed_pad2type = "standard"
pcsx_rearmed_pad3type = "none"
pcsx_rearmed_pad4type = "none"
pcsx_rearmed_pad5type = "none"
pcsx_rearmed_pad6type = "none"
pcsx_rearmed_pad7type = "none"
pcsx_rearmed_pad8type = "none"
pcsx_rearmed_pe2_fix = "disabled"
pcsx_rearmed_psxclock = "57"
pcsx_rearmed_region = "auto"
pcsx_rearmed_show_bios_bootlogo = "disabled"
pcsx_rearmed_show_other_input_settings = "disabled"
pcsx_rearmed_spu_interpolation = "simple"
pcsx_rearmed_spu_reverb = "enabled"
pcsx_rearmed_spuirq = "disabled"
pcsx_rearmed_vibration = "enabled"
gambatte_gb_colorization = "disabled"
gambatte_gb_internal_palette = ""
mame2003-plus_analog = "digital"
mame2003-plus_art_resolution = "1"
mame2003-plus_brightness = "1.0"
mame2003-plus_cheat_input_ports = "disabled"
mame2003-plus_core_save_subfolder = "enabled"
mame2003-plus_core_sys_subfolder = "enabled"
mame2003-plus_dcs_speedhack = "enabled"
mame2003-plus_deadzone = "20"
mame2003-plus_digital_joy_centering = "enabled"
mame2003-plus_display_artwork = "enabled"
mame2003-plus_display_setup = "disabled"
mame2003-plus_four_way_emulation = "disabled"
mame2003-plus_frameskip = "0"
mame2003-plus_gamma = "1.0"
mame2003-plus_input_interface = "retropad"
mame2003-plus_machine_timing = "enabled"
mame2003-plus_mame_remapping = "enabled"
mame2003-plus_mouse_device = "mouse"
mame2003-plus_sample_rate = "48000"
mame2003-plus_skip_disclaimer = "disabled"
mame2003-plus_skip_warnings = "disabled"
flycast_internal_resolution = "640x480"
flycast_alpha_sorting = "per-strip (fast, least accurate)"
flycast_enable_dsp = "disabled"
flycast_threaded_rendering = "enabled"
flycast_anisotropic_filtering = "off"
flycast_synchronous_rendering = "enabled"
flycast_enable_rtt = "disabled"
flycast_enable_rttb = "disabled"
flycast_delay_frame_swapping = "disabled"
flycast_div_matching = "auto"
flycast_texupscale = "off"
flycast_auto_skip_frame = "normal"
opera_swi_hle = "enabled"
opera_dsp_threaded = "enabled"
opera_madam_matrix_engine = "software"
puae_deadzone = "25"
melonds_screen_layout = "Left/Right"
melonds_swapscreen_mode = "Toggle"
melonds_threaded_renderer = "enabled"
melonds_touch_mode = "Joystick"
duckstation_GPU.Renderer = "Software"
virtualjaguar_bios = "enabled"
virtualjaguar_usefastblitter = "enabled"

View file

@ -0,0 +1,822 @@
accessibility_enable = "false"
accessibility_narrator_speech_speed = "5"
ai_service_enable = "true"
ai_service_mode = "1"
ai_service_pause = "false"
ai_service_source_lang = "0"
ai_service_target_lang = "0"
ai_service_url = "http://localhost:4404/"
all_users_control_menu = "true"
apply_cheats_after_load = "false"
apply_cheats_after_toggle = "false"
aspect_ratio_index = "22"
assets_directory = "/tmp/assets"
audio_block_frames = "0"
audio_device = ""
audio_driver = "alsathread"
audio_dsp_plugin = ""
audio_enable_menu_bgm = "false"
audio_enable_menu_cancel = "false"
audio_enable_menu = "false"
audio_enable_menu_notice = "false"
audio_enable_menu_ok = "false"
audio_enable = "true"
audio_fastforward_mute = "false"
audio_filter_dir = "~/.config/retroarch/filters/audio"
audio_latency = "64"
audio_max_timing_skew = "0.049999"
audio_mixer_mute_enable = "false"
audio_mixer_volume = "0.000000"
audio_mute_enable = "false"
audio_out_rate = "48000"
audio_rate_control_delta = "0.004999"
audio_rate_control = "true"
audio_resampler_quality = "2"
audio_resampler = "sinc"
audio_sync = "true"
audio_volume = "0.000000"
auto_overrides_enable = "true"
auto_remaps_enable = "true"
autosave_interval = "10"
auto_screenshot_filename = "true"
auto_shaders_enable = "true"
block_sram_overwrite = "false"
bluetooth_driver = "null"
builtin_imageviewer_enable = "true"
builtin_mediaplayer_enable = "true"
bundle_assets_dst_path = ""
bundle_assets_dst_path_subdir = ""
bundle_assets_extract_enable = "false"
bundle_assets_extract_last_version = "0"
bundle_assets_extract_version_current = "0"
bundle_assets_src_path = ""
cache_directory = "/tmp/cache"
camera_allow = "false"
camera_device = ""
camera_driver = "null"
cheat_database_path = "/tmp/database/cht"
check_firmware_before_loading = "false"
cheevos_auto_screenshot = "false"
cheevos_badges_enable = "false"
cheevos_challenge_indicators = "true"
cheevos_enable = "false"
cheevos_hardcore_mode_enable = "false"
cheevos_leaderboards_enable = ""
cheevos_password = ""
cheevos_richpresence_enable = "true"
cheevos_start_active = "false"
cheevos_test_unofficial = "false"
cheevos_token = ""
cheevos_unlock_sound_enable = "false"
cheevos_username = ""
cheevos_verbose_enable = "false"
config_save_on_exit = "true"
content_database_path = "/tmp/database/rdb"
content_favorites_directory = "default"
content_favorites_path = "~/.config/retroarch/content_favorites.lpl"
content_favorites_size = "200"
content_history_dir = ""
content_history_directory = "default"
content_history_path = "~/.config/retroarch/content_history.lpl"
content_history_size = "200"
content_image_history_directory = "default"
content_image_history_path = "~/.config/retroarch/content_image_history.lpl"
content_music_history_directory = "default"
content_music_history_path = "~/.config/retroarch/content_music_history.lpl"
content_runtime_log_aggregate = "false"
content_runtime_log = "true"
content_show_add_entry = "2"
content_show_add = "true"
content_show_explore = "true"
content_show_favorites = "true"
content_show_history = "true"
content_show_images = "false"
content_show_music = "false"
content_show_netplay = "true"
content_show_playlists = "true"
content_show_settings_password = ""
content_show_settings = "true"
content_show_video = "false"
content_video_directory = "default"
content_video_history_path = "~/.config/retroarch/content_video_history.lpl"
core_assets_directory = "~/roms/downloads"
core_info_cache_enable = "true"
core_option_category_enable = "true"
core_options_path = ""
core_set_supports_no_game_enable = "true"
core_updater_auto_backup = "false"
core_updater_auto_backup_history_size = "1"
core_updater_auto_extract_archive = "true"
core_updater_buildbot_assets_url = "http://buildbot.libretro.com/assets/"
core_updater_buildbot_cores_url = ""
core_updater_buildbot_url = "http://buildbot.libretro.com/nightly/linux/armhf/latest/"
core_updater_show_experimental_cores = "false"
cpu_main_gov = "performance"
cpu_max_freq = "-1"
cpu_menu_gov = "interactive"
cpu_min_freq = "1"
cpu_scaling_mode = "0"
crt_switch_center_adjust = "0"
crt_switch_hires_menu = "false"
crt_switch_porch_adjust = "0"
crt_switch_resolution = "0"
crt_switch_resolution_super = "2560"
crt_switch_resolution_use_custom_refresh_rate = "false"
crt_switch_timings = ""
crt_video_refresh_rate = "60.000000"
current_resolution_id = "0"
cursor_directory = "~/.config/retroarch/database/cursors"
desktop_menu_enable = "true"
discord_allow = "false"
discord_app_id = "475456035851599874"
driver_switch_enable = "true"
dynamic_wallpapers_directory = "default"
emuelec_exit_to_kodi = "false"
enable_device_vibration = "true"
facebook_stream_key = ""
fastforward_ratio = "0.000000"
filter_by_current_core = "false"
flicker_filter_enable = "false"
flicker_filter_index = "0"
fps_show = "false"
fps_update_interval = "256"
framecount_show = "false"
frame_time_counter_reset_after_fastforwarding = "false"
frame_time_counter_reset_after_load_state = "false"
frame_time_counter_reset_after_save_state = "false"
frontend_log_level = "1"
game_specific_options = "true"
gamma_correction = "0"
global_core_options = "false"
history_list_enable = "true"
input_ai_service_axis = "nul"
input_ai_service_btn = "nul"
input_ai_service_mbtn = "nul"
input_ai_service = "nul"
input_analog_deadzone = "0.000000"
input_analog_sensitivity = "1.500000"
input_audio_mute_axis = "nul"
input_audio_mute_btn = "nul"
input_audio_mute = "f9"
input_audio_mute_mbtn = "nul"
input_autodetect_enable = "true"
input_auto_game_focus = "0"
input_auto_mouse_grab = "false"
input_axis_threshold = "0.500000"
input_bind_hold = "2"
input_bind_timeout = "5"
input_cheat_index_minus_axis = "nul"
input_cheat_index_minus_btn = "nul"
input_cheat_index_minus_mbtn = "nul"
input_cheat_index_minus = "t"
input_cheat_index_plus_axis = "nul"
input_cheat_index_plus_btn = "nul"
input_cheat_index_plus_mbtn = "nul"
input_cheat_index_plus = "y"
input_cheat_toggle_axis = "nul"
input_cheat_toggle_btn = "nul"
input_cheat_toggle_mbtn = "nul"
input_cheat_toggle = "u"
input_close_content_axis = "nul"
input_close_content_btn = "nul"
input_close_content_mbtn = "nul"
input_close_content = "nul"
input_descriptor_hide_unbound = "false"
input_descriptor_label_show = "true"
input_desktop_menu_toggle_axis = "nul"
input_desktop_menu_toggle_btn = "nul"
input_desktop_menu_toggle = "f5"
input_desktop_menu_toggle_mbtn = "nul"
input_device_p1 = "0"
input_device_p10 = "0"
input_device_p11 = "0"
input_device_p12 = "0"
input_device_p13 = "0"
input_device_p14 = "0"
input_device_p15 = "0"
input_device_p16 = "0"
input_device_p2 = "0"
input_device_p3 = "0"
input_device_p4 = "0"
input_device_p5 = "0"
input_device_p6 = "0"
input_device_p7 = "0"
input_device_p8 = "0"
input_device_p9 = "0"
input_disk_eject_toggle_axis = "nul"
input_disk_eject_toggle_btn = "nul"
input_disk_eject_toggle_mbtn = "nul"
input_disk_eject_toggle = "nul"
input_disk_next_axis = "nul"
input_disk_next_btn = "nul"
input_disk_next_mbtn = "nul"
input_disk_next = "nul"
input_disk_prev_axis = "nul"
input_disk_prev_btn = "nul"
input_disk_prev_mbtn = "nul"
input_disk_prev = "nul"
input_driver = "udev"
input_duty_cycle = "3"
input_enable_hotkey_axis = "nul"
input_enable_hotkey_btn = "8"
input_enable_hotkey_mbtn = "nul"
input_enable_hotkey = "nul"
input_exit_emulator_axis = "nul"
input_exit_emulator_btn = "9"
input_exit_emulator = "escape"
input_exit_emulator_mbtn = "nul"
input_fps_toggle_axis = "nul"
input_fps_toggle_btn = "3"
input_fps_toggle = "f3"
input_fps_toggle_mbtn = "nul"
input_frame_advance_axis = "nul"
input_frame_advance_btn = "nul"
input_frame_advance = "k"
input_frame_advance_mbtn = "nul"
input_game_focus_toggle_axis = "nul"
input_game_focus_toggle_btn = "nul"
input_game_focus_toggle_mbtn = "nul"
input_game_focus_toggle = "scroll_lock"
input_grab_mouse_toggle_axis = "nul"
input_grab_mouse_toggle_btn = "nul"
input_grab_mouse_toggle = "f11"
input_grab_mouse_toggle_mbtn = "nul"
input_hold_fast_forward_axis = "nul"
input_hold_fast_forward_btn = "nul"
input_hold_fast_forward = "l"
input_hold_fast_forward_mbtn = "nul"
input_hold_slowmotion_axis = "nul"
input_hold_slowmotion_btn = "nul"
input_hold_slowmotion = "e"
input_hold_slowmotion_mbtn = "nul"
input_hotkey_block_delay = "5"
input_joypad_driver = "udev"
input_keyboard_layout = ""
input_libretro_device_p10 = "1"
input_libretro_device_p1 = "1"
input_libretro_device_p11 = "1"
input_libretro_device_p12 = "1"
input_libretro_device_p13 = "1"
input_libretro_device_p14 = "1"
input_libretro_device_p15 = "1"
input_libretro_device_p16 = "1"
input_libretro_device_p2 = "1"
input_libretro_device_p3 = "1"
input_libretro_device_p4 = "1"
input_libretro_device_p5 = "1"
input_libretro_device_p6 = "1"
input_libretro_device_p7 = "1"
input_libretro_device_p8 = "1"
input_libretro_device_p9 = "1"
input_load_state_axis = "nul"
input_load_state_btn = "4"
input_load_state = "f4"
input_load_state_mbtn = "nul"
input_max_users = "5"
input_menu_toggle_axis = "nul"
input_menu_toggle_btn = "2"
input_menu_toggle = "f1"
input_menu_toggle_gamepad_combo = "2"
input_menu_toggle_mbtn = "nul"
input_movie_record_toggle_axis = "nul"
input_movie_record_toggle_btn = "nul"
input_movie_record_toggle_mbtn = "nul"
input_movie_record_toggle = "o"
input_netplay_game_watch_axis = "nul"
input_netplay_game_watch_btn = "nul"
input_netplay_game_watch = "i"
input_netplay_game_watch_mbtn = "nul"
input_netplay_host_toggle_axis = "nul"
input_netplay_host_toggle_btn = "nul"
input_netplay_host_toggle_mbtn = "nul"
input_netplay_host_toggle = "nul"
input_nowinkey_enable = "false"
input_osk_toggle_axis = "nul"
input_osk_toggle_btn = "nul"
input_osk_toggle = "f12"
input_osk_toggle_mbtn = "nul"
input_overlay = ""
input_overlay_aspect_adjust_landscape = "0.000000"
input_overlay_aspect_adjust_portrait = "0.000000"
input_overlay_auto_rotate = "false"
input_overlay_auto_scale = "false"
input_overlay_enable_autopreferred = "true"
input_overlay_enable = "false"
input_overlay_hide_in_menu = "true"
input_overlay_hide_when_gamepad_connected = "false"
input_overlay_next_axis = "nul"
input_overlay_next_btn = "nul"
input_overlay_next_mbtn = "nul"
input_overlay_next = "nul"
input_overlay_opacity = "0.700000"
input_overlay_scale_landscape = "1.000000"
input_overlay_scale_portrait = "1.000000"
input_overlay_show_inputs = "2"
input_overlay_show_inputs_port = "0"
input_overlay_show_mouse_cursor = "true"
input_overlay_x_offset_landscape = "0.000000"
input_overlay_x_offset_portrait = "0.000000"
input_overlay_x_separation_landscape = "0.000000"
input_overlay_x_separation_portrait = "0.000000"
input_overlay_y_offset_landscape = "0.000000"
input_overlay_y_offset_portrait = "0.000000"
input_overlay_y_separation_landscape = "0.000000"
input_overlay_y_separation_portrait = "0.000000"
input_pause_toggle_axis = "nul"
input_pause_toggle_btn = "nul"
input_pause_toggle_mbtn = "nul"
input_pause_toggle = "p"
input_poll_type_behavior = "2"
input_quit_gamepad_combo = "0"
input_recording_toggle_axis = "nul"
input_recording_toggle_btn = "nul"
input_recording_toggle_mbtn = "nul"
input_recording_toggle = "nul"
input_remap_binds_enable = "true"
input_remapping_directory = "~/remappings"
input_reset_axis = "nul"
input_reset_btn = "nul"
input_reset = "h"
input_reset_mbtn = "nul"
input_rewind_axis = "nul"
input_rewind_btn = "6"
input_rewind_mbtn = "nul"
input_rewind = "r"
input_rumble_gain = "100"
input_runahead_toggle_axis = "nul"
input_runahead_toggle_btn = "nul"
input_runahead_toggle_mbtn = "nul"
input_runahead_toggle = "nul"
input_save_state_axis = "nul"
input_save_state_btn = "5"
input_save_state = "f2"
input_save_state_mbtn = "nul"
input_screenshot_axis = "nul"
input_screenshot_btn = "nul"
input_screenshot = "f8"
input_screenshot_mbtn = "nul"
input_send_debug_info_axis = "nul"
input_send_debug_info_btn = "nul"
input_send_debug_info = "f10"
input_send_debug_info_mbtn = "nul"
input_sensors_enable = "true"
input_shader_next_axis = "nul"
input_shader_next_btn = "nul"
input_shader_next = "m"
input_shader_next_mbtn = "nul"
input_shader_prev_axis = "nul"
input_shader_prev_btn = "nul"
input_shader_prev_mbtn = "nul"
input_shader_prev = "n"
input_state_slot_decrease_axis = "nul"
input_state_slot_decrease_btn = "nul"
input_state_slot_decrease = "f6"
input_state_slot_decrease_mbtn = "nul"
input_state_slot_increase_axis = "nul"
input_state_slot_increase_btn = "nul"
input_state_slot_increase = "f7"
input_state_slot_increase_mbtn = "nul"
input_streaming_toggle_axis = "nul"
input_streaming_toggle_btn = "nul"
input_streaming_toggle_mbtn = "nul"
input_streaming_toggle = "nul"
input_toggle_fast_forward_axis = "nul"
input_toggle_fast_forward_btn = "7"
input_toggle_fast_forward_mbtn = "nul"
input_toggle_fast_forward = "space"
input_toggle_fullscreen_axis = "nul"
input_toggle_fullscreen_btn = "nul"
input_toggle_fullscreen = "f"
input_toggle_fullscreen_mbtn = "nul"
input_toggle_slowmotion_axis = "nul"
input_toggle_slowmotion_btn = "nul"
input_toggle_slowmotion_mbtn = "nul"
input_toggle_slowmotion = "nul"
input_touch_scale = "1"
input_turbo_default_button = "0"
input_turbo_mode = "0"
input_turbo_period = "6"
input_volume_down_axis = "nul"
input_volume_down_btn = "nul"
input_volume_down_mbtn = "nul"
input_volume_down = "subtract"
input_volume_up = "add"
input_volume_up_axis = "nul"
input_volume_up_btn = "nul"
input_volume_up_mbtn = "nul"
joypad_autoconfig_dir = "/tmp/joypads"
keyboard_gamepad_enable = "true"
keyboard_gamepad_mapping_type = "1"
kiosk_mode_enable = "false"
kiosk_mode_password = ""
led_driver = "null"
libretro_directory = "/tmp/cores"
libretro_info_path = "/tmp/cores"
libretro_log_level = "1"
load_dummy_on_core_shutdown = "true"
location_allow = "false"
location_driver = "null"
log_dir = "~/.config/retroarch/logs"
log_to_file = "false"
log_to_file_timestamp = "false"
log_verbosity = "true"
materialui_auto_rotate_nav_bar = "true"
materialui_dual_thumbnail_list_view_enable = "true"
materialui_icons_enable = "true"
materialui_landscape_layout_optimization = "1"
materialui_menu_color_theme = "9"
materialui_menu_transition_animation = "0"
materialui_playlist_icons_enable = "true"
materialui_show_nav_bar = "true"
materialui_thumbnail_background_enable = "true"
materialui_thumbnail_view_landscape = "2"
materialui_thumbnail_view_portrait = "1"
memory_show = "false"
memory_update_interval = "256"
menu_battery_level_enable = "true"
menu_core_enable = "true"
menu_driver = "xmb"
menu_dynamic_wallpaper_enable = "false"
menu_enable_widgets = "true"
menu_font_color_blue = "255"
menu_font_color_green = "255"
menu_font_color_red = "255"
menu_footer_opacity = "1.000000"
menu_framebuffer_opacity = "0.899999"
menu_header_opacity = "1.000000"
menu_horizontal_animation = "true"
menu_insert_disk_resume = "true"
menu_left_thumbnails = "0"
menu_linear_filter = "false"
menu_mouse_enable = "false"
menu_navigation_browser_filter_supported_extensions_enable = "true"
menu_navigation_wraparound_enable = "true"
menu_pause_libretro = "true"
menu_pointer_enable = "false"
menu_rgui_full_width_layout = "true"
menu_rgui_shadows = "false"
menu_rgui_transparency = "true"
menu_savestate_resume = "true"
menu_scale_factor = "0.300000"
menu_screensaver_animation = "0"
menu_screensaver_animation_speed = "1.000000"
menu_screensaver_timeout = "0"
menu_scroll_delay = "256"
menu_scroll_fast = "false"
menu_shader_pipeline = "2"
menu_show_advanced_settings = "true"
menu_show_configurations = "true"
menu_show_core_updater = "false"
menu_show_dump_disc = "true"
menu_show_help = "true"
menu_show_information = "true"
menu_show_latency = "true"
menu_show_legacy_thumbnail_updater = "false"
menu_show_load_content_animation = "false"
menu_show_load_content = "true"
menu_show_load_core = "true"
menu_show_load_disc = "true"
menu_show_online_updater = "true"
menu_show_overlays = "true"
menu_show_quit_retroarch = "true"
menu_show_reboot = "false"
menu_show_restart_retroarch = "true"
menu_show_rewind = "true"
menu_show_shutdown = "false"
menu_show_sublabels = "true"
menu_show_video_layout = "true"
menu_swap_ok_cancel_buttons = "false"
menu_throttle_framerate = "true"
menu_thumbnails = "3"
menu_thumbnail_upscale_threshold = "0"
menu_ticker_smooth = "true"
menu_ticker_speed = "2.000000"
menu_ticker_type = "1"
menu_timedate_date_separator = "0"
menu_timedate_enable = "true"
menu_timedate_style = "11"
menu_unified_controls = "false"
menu_use_preferred_system_color_theme = "false"
menu_wallpaper = ""
menu_wallpaper_opacity = "1.000000"
menu_widget_scale_auto = "false"
menu_widget_scale_factor = "0.350000"
menu_widget_scale_factor_windowed = "1.000000"
menu_xmb_animation_horizontal_highlight = "0"
menu_xmb_animation_move_up_down = "0"
menu_xmb_animation_opening_main_menu = "0"
menu_xmb_thumbnail_scale_factor = "100"
midi_driver = "alsa"
midi_input = "Off"
midi_output = "Off"
midi_volume = "100"
netplay_allow_slaves = "true"
netplay_check_frames = "600"
netplay_input_latency_frames_min = "0"
netplay_input_latency_frames_range = "0"
netplay_ip_address = ""
netplay_ip_port = "55435"
netplay_max_connections = "3"
netplay_mitm_server = "nyc"
netplay_nat_traversal = "true"
netplay_nickname = ""
netplay_password = ""
netplay_public_announce = "true"
netplay_request_device_p10 = "false"
netplay_request_device_p11 = "false"
netplay_request_device_p12 = "false"
netplay_request_device_p13 = "false"
netplay_request_device_p14 = "false"
netplay_request_device_p15 = "false"
netplay_request_device_p16 = "false"
netplay_request_device_p1 = "false"
netplay_request_device_p2 = "false"
netplay_request_device_p3 = "false"
netplay_request_device_p4 = "false"
netplay_request_device_p5 = "false"
netplay_request_device_p6 = "false"
netplay_request_device_p7 = "false"
netplay_request_device_p8 = "false"
netplay_request_device_p9 = "false"
netplay_require_slaves = "false"
netplay_share_analog = "1"
netplay_share_digital = "1"
netplay_spectate_password = ""
netplay_start_as_spectator = "false"
netplay_stateless_mode = "false"
netplay_use_mitm_server = "false"
network_cmd_enable = "false"
network_cmd_port = "55355"
network_on_demand_thumbnails = "false"
network_remote_base_port = "55400"
network_remote_enable = "false"
network_remote_enable_user_p10 = "false"
network_remote_enable_user_p11 = "false"
network_remote_enable_user_p12 = "false"
network_remote_enable_user_p13 = "false"
network_remote_enable_user_p14 = "false"
network_remote_enable_user_p15 = "false"
network_remote_enable_user_p16 = "false"
network_remote_enable_user_p1 = "false"
network_remote_enable_user_p2 = "false"
network_remote_enable_user_p3 = "false"
network_remote_enable_user_p4 = "false"
network_remote_enable_user_p5 = "false"
network_remote_enable_user_p6 = "false"
network_remote_enable_user_p7 = "false"
network_remote_enable_user_p8 = "false"
network_remote_enable_user_p9 = "false"
notification_show_autoconfig = "false"
notification_show_cheats_applied = "true"
notification_show_config_override_load = "false"
notification_show_fast_forward = "true"
notification_show_netplay_extra = "false"
notification_show_patch_applied = "true"
notification_show_refresh_rate = "true"
notification_show_remap_load = "false"
notification_show_screenshot_duration = "2"
notification_show_screenshot = "false"
notification_show_screenshot_flash = "1"
notification_show_set_initial_disk = "true"
overlay_directory = "/tmp/overlays"
ozone_collapse_sidebar = "false"
ozone_menu_color_theme = "1"
ozone_scroll_content_metadata = "false"
ozone_sort_after_truncate_playlist_name = "true"
ozone_truncate_playlist_name = "true"
pause_nonactive = "true"
perfcnt_enable = "false"
playlist_compression = "false"
playlist_cores = ""
playlist_directory = "~/playlists"
playlist_entry_remove_enable = "1"
playlist_entry_remove = "false"
playlist_entry_rename = "false"
playlist_fuzzy_archive_match = "false"
playlist_names = ""
playlist_portable_paths = "false"
playlist_show_entry_idx = "true"
playlist_show_inline_core_name = "0"
playlist_show_sublabels = "true"
playlist_sort_alphabetical = "true"
playlist_sublabel_last_played_style = "0"
playlist_sublabel_runtime_type = "0"
playlist_use_old_format = "false"
quick_menu_show_add_to_favorites = "true"
quick_menu_show_cheats = "true"
quick_menu_show_close_content = "true"
quick_menu_show_controls = "true"
quick_menu_show_core_options_flush = "false"
quick_menu_show_download_thumbnails = "true"
quick_menu_show_information = "true"
quick_menu_show_options = "true"
quick_menu_show_recording = "true"
quick_menu_show_reset_core_association = "true"
quick_menu_show_restart_content = "true"
quick_menu_show_resume_content = "true"
quick_menu_show_save_content_dir_overrides = "true"
quick_menu_show_save_core_overrides = "false"
quick_menu_show_save_game_overrides = "false"
quick_menu_show_save_load_state = "true"
quick_menu_show_set_core_association = "true"
quick_menu_show_shaders = "true"
quick_menu_show_start_recording = "true"
quick_menu_show_start_streaming = "true"
quick_menu_show_streaming = "true"
quick_menu_show_take_screenshot = "true"
quick_menu_show_undo_save_load_state = "false"
quit_on_close_content = "0"
quit_press_twice = "true"
record_driver = "null"
recording_config_directory = ""
recording_output_directory = "~/roms/screenshots"
resampler_directory = ""
rewind_buffer_size = "20971520"
rewind_buffer_size_step = "10"
rewind_enable = "false"
rewind_granularity = "1"
rgui_aspect_ratio = "0"
rgui_aspect_ratio_lock = "0"
rgui_background_filler_thickness_enable = "true"
rgui_border_filler_enable = "true"
rgui_border_filler_thickness_enable = "true"
rgui_browser_directory = "~/roms"
rgui_config_directory = "~/.config/retroarch/config"
rgui_extended_ascii = "false"
rgui_inline_thumbnails = "false"
rgui_internal_upscale_level = "0"
rgui_menu_color_theme = "4"
rgui_menu_theme_preset = ""
rgui_particle_effect = "0"
rgui_particle_effect_screensaver = "true"
rgui_particle_effect_speed = "1.000000"
rgui_show_start_screen = "false"
rgui_swap_thumbnails = "false"
rgui_switch_icons = "true"
rgui_thumbnail_delay = "0"
rgui_thumbnail_downscaler = "0"
run_ahead_enabled = "false"
run_ahead_frames = "1"
run_ahead_hide_warnings = "false"
run_ahead_secondary_instance = "true"
runtime_log_directory = "default"
save_file_compression = "false"
savefile_directory = "~/.config/retroarch/saves"
savefiles_in_content_dir = "true"
savestate_auto_index = "false"
savestate_auto_load = "false"
savestate_auto_save = "false"
savestate_directory = "~/.config/retroarch/states"
savestate_file_compression = "true"
savestate_max_keep = "0"
savestates_in_content_dir = "false"
savestate_thumbnail_enable = "true"
scan_without_core_match = "false"
screen_brightness = "100"
screen_orientation = "0"
screenshot_directory = "~/roms/screenshots"
screenshots_in_content_dir = "false"
settings_show_accessibility = "true"
settings_show_achievements = "true"
settings_show_ai_service = "true"
settings_show_audio = "true"
settings_show_configuration = "true"
settings_show_core = "true"
settings_show_directory = "true"
settings_show_drivers = "true"
settings_show_file_browser = "true"
settings_show_frame_throttle = "true"
settings_show_input = "true"
settings_show_latency = "true"
settings_show_logging = "true"
settings_show_network = "true"
settings_show_onscreen_display = "true"
settings_show_playlists = "true"
settings_show_power_management = "true"
settings_show_recording = "true"
settings_show_saving = "true"
settings_show_user_interface = "true"
settings_show_user = "true"
settings_show_video = "true"
show_hidden_files = "false"
slowmotion_ratio = "3.000000"
soft_filter_enable = "false"
soft_filter_index = "0"
sort_savefiles_by_content_enable = "false"
sort_savefiles_enable = "false"
sort_savestates_by_content_enable = "false"
sort_savestates_enable = "false"
sort_screenshots_by_content_enable = "false"
state_slot = "0"
statistics_show = "false"
stdin_cmd_enable = "false"
streaming_mode = "0"
suspend_screensaver_enable = "true"
sustained_performance_mode = "false"
system_directory = "~/roms/bios"
systemfiles_in_content_dir = "false"
threaded_data_runloop_enable = "true"
thumbnails_directory = "~/thumbnails"
twitch_stream_key = ""
ui_companion_enable = "false"
ui_companion_start_on_boot = "true"
ui_companion_toggle = "false"
ui_menubar_enable = "true"
use_last_start_directory = "false"
user_language = "0"
vibrate_on_keypress = "true"
video_adaptive_vsync = "false"
video_allow_rotate = "true"
video_aspect_ratio = "-1.000000"
video_aspect_ratio_auto = "true"
video_black_frame_insertion = "0"
video_context_driver = ""
video_crop_overscan = "true"
video_ctx_scaling = "false"
video_disable_composition = "false"
video_driver = "glcore"
video_filter = ""
video_filter_dir = "~/.config/retroarch/filters/video"
video_font_enable = "true"
video_font_path = "/usr/share/retroarch-assets/xmb/monochrome/font.ttf"
video_font_size = "32.000000"
video_force_aspect = "true"
video_force_srgb_disable = "false"
video_frame_delay = "0"
video_frame_delay_auto = "false"
video_fullscreen = "true"
video_fullscreen_x = "1920"
video_fullscreen_y = "1080"
video_gpu_record = "false"
video_gpu_screenshot = "false"
video_hard_sync = "false"
video_hard_sync_frames = "0"
video_hdr_display_contrast = "5.000000"
video_hdr_enable = "false"
video_hdr_expand_gamut = "true"
video_hdr_max_nits = "1000.000000"
video_hdr_paper_white_nits = "200.000000"
video_layout_directory = "~/.config/retroarch/layouts"
video_layout_enable = "true"
video_layout_path = ""
video_layout_selected_view = "0"
video_max_swapchain_images = "3"
video_message_color = "ffff00"
video_message_pos_x = "0.049999"
video_message_pos_y = "0.049999"
video_monitor_index = "0"
video_msg_bgcolor_blue = "0"
video_msg_bgcolor_enable = "false"
video_msg_bgcolor_green = "0"
video_msg_bgcolor_opacity = "1.000000"
video_msg_bgcolor_red = "0"
video_notch_write_over_enable = "false"
video_oga_vertical_enable = "false"
video_post_filter_record = "false"
video_record_config = ""
video_record_quality = "4"
video_record_scale_factor = "1"
video_record_threads = "2"
video_refresh_rate = "60.000000"
video_rotation = "0"
video_scale = "3.000000"
video_scale_integer = "false"
video_scale_integer_overscale = "false"
video_shader_delay = "0"
video_shader_dir = "/tmp/shaders"
video_shader_enable = "false"
video_shader_preset_save_reference_enable = "true"
video_shader_remember_last_dir = "false"
video_shader_watch_files = "false"
video_shared_context = "false"
video_smooth = "false"
video_stream_config = ""
video_stream_port = "56400"
video_stream_quality = "10"
video_stream_scale_factor = "1"
video_stream_url = ""
video_swap_interval = "1"
video_threaded = "true"
video_vsync = "true"
video_window_auto_height_max = "1080"
video_window_auto_width_max = "1920"
video_window_custom_size_enable = "false"
video_windowed_fullscreen = "false"
video_windowed_position_height = "720"
video_windowed_position_width = "1280"
video_windowed_position_x = "0"
video_windowed_position_y = "0"
video_window_opacity = "100"
video_window_save_positions = "false"
video_window_show_decorations = "true"
vrr_runloop_enable = "false"
wifi_driver = "null"
wifi_enabled = "true"
xmb_alpha_factor = "75"
xmb_font = "/usr/share/retroarch-assets/xmb/monochrome/font.ttf"
xmb_layout = "2"
xmb_menu_color_theme = "4"
xmb_shadows_enable = "true"
xmb_theme = "0"
xmb_vertical_thumbnails = "false"
youtube_stream_key = ""

View file

@ -0,0 +1,2 @@
audio_filter_dir = "/usr/share/retroarch/filters/32bit/audio"
video_filter_dir = "/usr/share/retroarch/filters/32bit/video"

View file

@ -0,0 +1,2 @@
audio_filter_dir = "/usr/share/retroarch/filters/64bit/audio"
video_filter_dir = "/usr/share/retroarch/filters/64bit/video"

View file

@ -3,7 +3,7 @@
# Copyright (C) 2020-present Fewtarius
PKG_NAME="scummvmsa"
PKG_VERSION="45091c309d90b40f672469eae0915a75c434ba57"
PKG_VERSION="7a3ce2ff5cf3052b0241dbc58514e08138cf7560"
PKG_REV="1"
PKG_LICENSE="GPL2"
PKG_SITE="https://github.com/scummvm/scummvm"

View file

@ -2,7 +2,7 @@
# Copyright (C) 2020-present Fewtarius
PKG_NAME="vicesa"
PKG_VERSION="3.6.1"
PKG_VERSION="3.7.1"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPLv2"
@ -13,7 +13,7 @@ PKG_PRIORITY="optional"
PKG_SECTION="emulators"
PKG_SHORTDESC="Commodore 8-bit Emulator"
PKG_LONGDESC="Commodore 8-bit Emulator"
PKG_CONFIGURE_OPTS_TARGET+="--disable-pdf-docs"
PKG_CONFIGURE_OPTS_TARGET+=" --disable-pdf-docs --enable-gtk3ui=no"
if [ ! "${OPENGL}" = "no" ]; then
PKG_DEPENDS_TARGET+=" ${OPENGL} glu libglvnd"

View file

@ -2,7 +2,7 @@
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
PKG_NAME="yuzusa"
PKG_VERSION="bbeb6e460cf1fd8f796978980e745410bc77ce08"
PKG_VERSION="cbcf210c19b3661e0edda03f22ef323cb5b30c26"
PKG_ARCH="x86_64"
PKG_LICENSE="GPLv3"
PKG_SITE="https://github.com/yuzu-emu/yuzu"

View file

@ -20,7 +20,7 @@
################################################################################
PKG_NAME="beetle-lynx"
PKG_VERSION="f8fc53b15a64f804cbb5ff5b8992af31a917c993"
PKG_VERSION="d48ebb62affc93940f121bc5a16a67658bca26ae"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPLv2"

View file

@ -20,7 +20,7 @@
################################################################################
PKG_NAME="beetle-pce-fast"
PKG_VERSION="aa1e5458eada0e2d3e35cc1840f0422146404590"
PKG_VERSION="994372c491569c84bd8d5178ca1822fc1200e7c0"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPLv2"

View file

@ -20,7 +20,7 @@
################################################################################
PKG_NAME="beetle-pce"
PKG_VERSION="51aaf58a96d63eec5e6c3347285780948fc99209"
PKG_VERSION="c61a633e4598edc46da3b6bed24b27175b353a8d"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPLv2"

View file

@ -20,7 +20,7 @@
################################################################################
PKG_NAME="beetle-pcfx"
PKG_VERSION="7ed3694713e9bc8ac3e95187ae8350a129f4a46f"
PKG_VERSION="14294f9617da36f6a24f736b41f1fa0de24c9f83"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPLv2"

View file

@ -20,7 +20,7 @@
################################################################################
PKG_NAME="beetle-supergrafx"
PKG_VERSION="751321e2e2c48def9eadaad4b9e289d0843914b7"
PKG_VERSION="7c435d6d83ce54eb2782df75c05acd9f4eac6f34"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPLv2"

View file

@ -20,7 +20,7 @@
################################################################################
PKG_NAME="beetle-wswan"
PKG_VERSION="c9b3777471c74090df096c2ef65d2fc3ab40e018"
PKG_VERSION="75f65e384bf0319f75b535bd6910616a6786d20e"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPLv2"

View file

@ -20,7 +20,7 @@
################################################################################
PKG_NAME="core-info"
PKG_VERSION="0c56d506ea3eb0d87b3fe64552a7d2bbe04d1658"
PKG_VERSION="5fa19a5e944ecdb830011a66e9150e0b01b8bf30"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/libretro/libretro-core-info"
PKG_URL="https://github.com/libretro/libretro-core-info/archive/${PKG_VERSION}.tar.gz"

View file

@ -1,22 +0,0 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
PKG_NAME="ecwolf_libretro"
PKG_VERSION="f098da0d003c4780adf6a9503801081f1f25cc27"
PKG_LICENSE="GPLv2"
PKG_SITE="https://github.com/libretro/ecwolf"
PKG_URL="${PKG_SITE}.git"
PKG_DEPENDS_TARGET="toolchain SDL2 SDL2_mixer SDL2_net libjpeg-turbo bzip2"
PKG_SHORTDESC="ECWolf is a port of the Wolfenstein 3D engine based of Wolf4SDL."
PKG_TOOLCHAIN="make"
PKG_MAKE_OPTS_TARGET="-C src/libretro"
pre_make_target() {
cd ${PKG_BUILD}
}
makeinstall_target() {
mkdir -p ${INSTALL}/usr/lib/libretro
cp src/libretro/ecwolf_libretro.so ${INSTALL}/usr/lib/libretro/
}

View file

@ -3,7 +3,7 @@
# Maintenance 2020 351ELEC team (https://github.com/fewtarius/351ELEC)
PKG_NAME="fbneo"
PKG_VERSION="50a01508d96621f358c4cc910ef5596968c5d0dd"
PKG_VERSION="1a968de5d8c52ef4b606c1ab0878c7859449c355"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="Non-commercial"

View file

@ -20,7 +20,7 @@
################################################################################
PKG_NAME="fceumm"
PKG_VERSION="5ca702053ecd2e1007d01d32c1a9708d36e47afe"
PKG_VERSION="159f27a1f16e74f4e1f7f424477d3bb098302ea0"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPLv2"

View file

@ -3,7 +3,7 @@
# Copyright (C) 2022-present Fewtarius
PKG_NAME="flycast"
PKG_VERSION="b232a10167b3ead55b8755059a0edec53a60463d"
PKG_VERSION="611946559c12a569af507019694cb369b3587af6"
PKG_SITE="https://github.com/flyinghead/flycast"
PKG_URL="${PKG_SITE}.git"
PKG_DEPENDS_TARGET="toolchain libzip"
@ -42,16 +42,5 @@ pre_configure_target() {
makeinstall_target() {
mkdir -p ${INSTALL}/usr/lib/libretro
case ${TARGET_ARCH} in
aarch64)
cp -vP ${ROOT}/build.${DISTRO}-${DEVICE}.arm/flycast-*/.install_pkg/usr/lib/libretro/flycast32_libretro.so ${INSTALL}/usr/lib/libretro
cp flycast_libretro.so ${INSTALL}/usr/lib/libretro/flycast_libretro.so
;;
arm)
cp flycast_libretro.so ${INSTALL}/usr/lib/libretro/flycast32_libretro.so
;;
*)
cp flycast_libretro.so ${INSTALL}/usr/lib/libretro/flycast_libretro.so
;;
esac
cp flycast_libretro.so ${INSTALL}/usr/lib/libretro/flycast_libretro.so
}

View file

@ -47,6 +47,11 @@ pre_configure_target() {
pre_make_target() {
export BUILD_SYSROOT=${SYSROOT_PREFIX}
case ${DEVICE} in
RK3588)
PKG_MAKE_OPTS_TARGET+=" platform=${DEVICE}"
;;
esac
}
makeinstall_target() {

View file

@ -0,0 +1,40 @@
diff -rupN flycast.orig/Makefile flycast/Makefile
--- flycast.orig/Makefile 2022-06-18 13:29:52.675787687 -0400
+++ flycast/Makefile 2022-06-18 13:53:23.564624927 -0400
@@ -403,26 +403,30 @@ else ifeq ($(platform), arm64_cortex_a53
#######################################
-# ARM64 SM1 Odroid C4
-else ifeq ($(platform), odroidc4)
+# ARM64 RK3588
+else ifeq ($(platform), RK3588)
EXT ?= so
TARGET := $(TARGET_NAME)_libretro.$(EXT)
SHARED += -shared -Wl,--version-script=link.T
- LDFLAGS += -Wl,--no-undefined
fpic = -fPIC
LIBS += -lrt
ARM_FLOAT_ABI_HARD = 0
FORCE_GLES = 1
SINGLE_PREC_FLAGS = 1
- CPUFLAGS += -DHOST_CPU=0x20000006 -DTARGET_LINUX_ARMv8 -frename-registers
- CFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS)
- CXXFLAGS += -mcpu=cortex-a55 -mtune=cortex-a55 $(CPUFLAGS)
- ASFLAGS += $(CFLAGS) -c -frename-registers -fno-strict-aliasing -ffast-math -ftree-vectorize
+ HAVE_LTCG = 0
+ HAVE_OPENMP = 0
+ CFLAGS += -Ofast \
+ -fuse-linker-plugin \
+ -fno-stack-protector -fno-ident -fomit-frame-pointer \
+ -fmerge-all-constants -ffast-math -funroll-all-loops \
+ -mcpu=cortex-a76 -mtune=cortex-a76
+ CXXFLAGS += $(CFLAGS)
+ LDFLAGS += -mcpu=cortex-a76 -mtune=cortex-a76 -Ofast -flto -fuse-linker-plugin
PLATFORM_EXT := unix
+ CORE_DEFINES += -DLOW_END -DLOW_RES
WITH_DYNAREC=arm64
+ PLATFORM_EXT := unix
HAVE_GENERIC_JIT = 0
- HAVE_VULKAN = 0
- HAVE_LTCG = 0

View file

@ -20,7 +20,7 @@
################################################################################
PKG_NAME="gambatte"
PKG_VERSION="7e02df60048db0898131ea365f387a026e4e648d"
PKG_VERSION="d4bb33eea4c41760eb3cccfc4047eeff1313f8c7"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPLv2"

View file

@ -20,7 +20,7 @@
################################################################################
PKG_NAME="genesis-plus-gx"
PKG_VERSION="418a0ea0c5ea1ed68b4ba1d4df53308f202323be"
PKG_VERSION="d9ed3003b7d470ee19c9fe0019263f617fa458eb"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="Non-commercial"

View file

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="handy"
PKG_VERSION="517bb2d02909271836604c01c8f09a79ad605297"
PKG_VERSION="7c2dbcb46a26cdb2355ccb4e982460095a55ba44"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="Zlib"

View file

@ -2,7 +2,7 @@
# Copyright (C) 2019 Trond Haugland (trondah@gmail.com)
PKG_NAME="mame"
PKG_VERSION="85581d60bb24fea14542b154aef2c7b624f5b60f"
PKG_VERSION="b1bd6059a6b76061cbc1b397317b4c9cbb9b3b1c"
PKG_ARCH="any"
PKG_LICENSE="GPLv2"
PKG_SITE="https://github.com/libretro/mame"

View file

@ -20,7 +20,7 @@
################################################################################
PKG_NAME="mame2003-plus"
PKG_VERSION="b8c90d9b3c9374bef96d202540460af40ead24bf"
PKG_VERSION="3e666d814f6080d364570a7d9033e0dad233d4f6"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="MAME"

View file

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="mgba"
PKG_VERSION="ec5ecb26deba8d7ac830fc66ade9fac0eeaeb4ae"
PKG_VERSION="641488a39f41a4a373332e0954375fb8acfa2c49"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="MPLv2.0"

View file

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="nestopia"
PKG_VERSION="dd78611bb3548e0e3f605566614b6b8173cdf977"
PKG_VERSION="cb1e24e2d6e5d49a85924a9d6dd9c470c109f537"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPLv2"

View file

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="nxengine"
PKG_VERSION="e271c6262d73f07e5d92d285503f1c049801c51a"
PKG_VERSION="1b57d2d1d064a78b551e51bb6ec9ea56c185a3e1"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPLv3"

View file

@ -21,6 +21,12 @@ if [ "${OPENGLES_SUPPORT}" = yes ]; then
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
fi
case ${DEVICE} in
RK3588)
PKG_MAKE_OPTS_TARGET=" platform=unix_RK3588"
;;
esac
makeinstall_target() {
mkdir -p ${INSTALL}/usr/lib/libretro
cp parallel_n64_libretro.so ${INSTALL}/usr/lib/libretro/

View file

@ -1,40 +1,12 @@
diff --git a/Makefile b/Makefile
index 8a719d55..bc243d06 100644
--- a/Makefile
+++ b/Makefile
@@ -119,7 +119,7 @@ ifneq (,$(findstring unix,$(platform)))
endif
fpic = -fPIC
- HAVE_THR_AL=1
+ HAVE_THR_AL=0
LDFLAGS += -lpthread
@@ -134,6 +134,33 @@ ifneq (,$(findstring unix,$(platform)))
diff -rupN parallel-n64.orig/Makefile parallel-n64/Makefile
--- parallel-n64.orig/Makefile 2023-01-08 13:17:14.937637431 +0000
+++ parallel-n64/Makefile 2023-01-08 13:17:57.606530001 +0000
@@ -134,6 +134,15 @@ ifneq (,$(findstring unix,$(platform)))
GL_LIB := -lGL
endif
+ # RK3326
+ ifneq (,$(findstring RK3326,$(platform)))
+ TARGET := $(TARGET_NAME)_libretro.so
+ CPUFLAGS += -DARM_FIX -DCLASSIC
+ GLES = 1
+ GL_LIB := -lGLESv2
+ WITH_DYNAREC = aarch64
+ endif
+
+ # RK3356
+ ifneq (,$(findstring RK3566,$(platform)))
+ TARGET := $(TARGET_NAME)_libretro.so
+ CPUFLAGS += -DARM_FIX -DCLASSIC
+ GLES = 1
+ GL_LIB := -lGLESv2
+ WITH_DYNAREC = aarch64
+ endif
+
+ # RK3399
+ ifneq (,$(findstring RK3399,$(platform)))
+ # RK3588
+ ifneq (,$(findstring RK3588,$(platform)))
+ TARGET := $(TARGET_NAME)_libretro.so
+ CPUFLAGS += -DARM_FIX -DCLASSIC
+ GLES = 1
@ -45,10 +17,9 @@ index 8a719d55..bc243d06 100644
# Raspberry Pi
ifneq (,$(findstring rpi,$(platform)))
GLES = 1
diff --git a/libretro/libretro.c b/libretro/libretro.c
index eea606f5..f14afdef 100644
--- a/libretro/libretro.c
+++ b/libretro/libretro.c
diff -rupN parallel-n64.orig/libretro/libretro.c parallel-n64/libretro/libretro.c
--- parallel-n64.orig/libretro/libretro.c 2023-01-08 13:17:14.945637598 +0000
+++ parallel-n64/libretro/libretro.c 2023-01-08 13:30:37.562604648 +0000
@@ -400,7 +400,9 @@ static void setup_variables(void)
#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES)
"|glide64|gln64|rice"

View file

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="ppsspp"
PKG_VERSION="40386bca08d33c2d6584d6e7da4efee9bfeb3f96"
PKG_VERSION="5f10cabe5a0a4442e642d473f360e309288dd5f4"
PKG_LICENSE="GPLv2"
PKG_SITE="https://github.com/hrydgard/ppsspp"
PKG_URL="https://github.com/hrydgard/ppsspp.git"
@ -66,11 +66,8 @@ else
fi
case ${TARGET_ARCH} in
arm)
PKG_CMAKE_OPTS_TARGET+=" -DARMV7=ON"
;;
aarch64)
PKG_CMAKE_OPTS_TARGET+=" -DARM64=ON"
PKG_CMAKE_OPTS_TARGET+=" -DFORCED_CPU=aarch64"
;;
esac

View file

@ -0,0 +1,33 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 90cd57ace..2ace6b70a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -58,6 +58,10 @@ if(CMAKE_SYSTEM_PROCESSOR)
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -target armv7a-none-linux-android")
endif()
endif()
+ if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^armv8")
+ add_compile_options(-march=armv8-a+crc -mtune=cortex-a53 -mfloat-abi=hard -mfpu=neon-fp-armv8 -fomit-frame-pointer)
+ add_definitions(-DPPSSPP_ARCH_ARM_NEON=1 -DPPSSPP_ARCH_ARMV8=1)
+ endif()
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^amd64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "^x86_64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "^AMD64")
set(X86_DEVICE ON)
set(X86_64_DEVICE ON)
diff --git a/Common/ArmCPUDetect.cpp b/Common/ArmCPUDetect.cpp
index 437bd3158..d46cf19db 100644
--- a/Common/ArmCPUDetect.cpp
+++ b/Common/ArmCPUDetect.cpp
@@ -337,6 +337,13 @@ void CPUInfo::Detect()
bNEON = true;
bASIMD = true;
#endif
+
+#if PPSSPP_ARCH(ARMV8)
+ bNEON = true;
+ bASIMD = true;
+ bFP = true;
+#endif
+
}
// Turn the cpu info into a string we can show

Some files were not shown because too many files have changed in this diff Show more