mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-20 10:23:16 -05:00
Profiles, the wiki, comments, docstrings, command output and schema descriptions carried em-dashes, clause-joining semicolons, unicode arrows, box-drawing banners and check-mark glyphs. Each sentence was rewritten rather than having its character swapped. Hashes, paths, source_ref values and every cited file:line are unchanged, which a comparison of each parsed profile against the previous revision confirms. validate_pr comments now say PASS and FAIL in words, and source_ref values in a profile's structured blocks render as code. test_prose_style fails if any of these comes back, in tracked files or in the generated site.
825 lines
36 KiB
YAML
825 lines
36 KiB
YAML
emulator: NetherSX2-Turnip Classic
|
|
type: standalone
|
|
core_classification: community_fork
|
|
bios_mode: agnostic
|
|
source: "https://github.com/nckstwrt/NetherSX2-Turnip"
|
|
upstream: "https://github.com/Trixarian/AetherSX2"
|
|
author: "nckstwrt"
|
|
profiled_date: "2026-08-12"
|
|
pin_frozen: "the classic build is this revision. v0.7 ships a newer shim, and its rules are described in the notes. Recaling would repoint these refs at code this build never had."
|
|
source_commit: "8e17e584884e19b0a912f1988730d576d6d5aa84"
|
|
upstream_commit: "1d1f795dfc70e38da67724c7298779260f513889"
|
|
core_version: "2.2n-3668-Turnip-v0.7"
|
|
display_name: "Sony - PlayStation 2 (NetherSX2-Turnip Classic)"
|
|
mode: standalone
|
|
cores:
|
|
- "nethersx2-turnip-classic"
|
|
- "NetherSX2-Turnip-Classic"
|
|
- "NETHERSX2-TURNIP-CLASSIC"
|
|
systems:
|
|
- sony-playstation-2
|
|
|
|
bios_directory: "bios/"
|
|
|
|
notes: |
|
|
PlayStation 2 emulator for Android, package xyz.aethersx2.cturnip, activity
|
|
xyz.aethersx2.android.EmulationActivity, version name v2.2n-3668, label
|
|
NetherSX2 Classic (Turnip). It sits on the 3668 line: the library it starts
|
|
from is NetherSX2 Classic v2.2n-3668, itself a patch of the AetherSX2
|
|
v1.5-3668 package, and the library still names itself NetherSX2 v2.2n-3668
|
|
(Classic). Everything below was read from the v0.7 package:
|
|
lib/arm64-v8a/libemucore.so, libvulkad.so, the dex and the assets.
|
|
ref: nethersx2-turnip-classic v0.7 AndroidManifest.xml,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0xcdcba
|
|
|
|
The package pairs two revisions of the project. libemucore.so is the blob the
|
|
v0.7 commit carries, byte for byte, and libvulkad.so is the one committed for
|
|
v0.6 and reports its own build date. libhook_impl.so, libmain_hook.so and the
|
|
six packed drivers are the same at both revisions. The shim rules described
|
|
here are therefore those of the older revision, which this profile pins:
|
|
SM8350, lahaina, sdm845 and napali still route to the a6xx-Patched driver,
|
|
and SM6475, SM6650 and SM7325 are not known to it.
|
|
ref: VulkanShim2/vulkan_shim.cpp:1027-1059,
|
|
nethersx2-turnip-classic v0.7 libvulkad.so
|
|
|
|
The patch rewrites twenty-four places in the library it starts from. Three are
|
|
the strings libvulkan.so, libvulkan.so.1 and the message naming them, each
|
|
turned into libvulkad.so, so the Vulkan loader opens the shim instead of the
|
|
system driver. Sixteen turn comparisons into unconditional paths, among them
|
|
the memchr scan for the twenty-two byte pattern that precedes the certificate
|
|
test and two byte-wise string comparisons whose result is forced to equal,
|
|
which is what lets the package be resigned under a new application id. Five
|
|
move settings defaults: the renderer enum from 12 to 14, the upscale
|
|
multiplier fallback from 1.0 to 2.0 with the configuration read
|
|
short-circuited, the hardware download mode default, and the warning text that
|
|
went with it. The same five sites carry their unpatched forms in the 4248
|
|
library this project also starts from, which is what places them here rather
|
|
than in the base. None of them is in a file loading path.
|
|
ref: nethersx2-turnip-classic v0.7 libemucore.so 0x105f5b,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x829ae0-0x82a018,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x82d10c-0x82d5c0,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x82e41c,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x82fbac-0x82fcac,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x8034c4,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x833d04,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x83401c-0x834028,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x834cb0
|
|
|
|
A BIOS image is required and boot stops without one, the application raising a
|
|
startup error saying it needs a PS2 BIOS in the bios folder of the data
|
|
directory. The data directory is getExternalFilesDir(null) with getDataDir()
|
|
behind it, so it follows the application id, and the folder names under it
|
|
come from the Folders section, Bios defaulting to bios. An image imported
|
|
through the interface is written to that folder under the CRC32 of its
|
|
contents, as %08X.bin.
|
|
ref: nethersx2-turnip-classic v0.7 libemucore.so 0x8057dc,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x7dfaf0-0x7dfb10,
|
|
xyz/aethersx2/android/NativeLibrary initializeOnce,
|
|
xyz/aethersx2/android/NativeLibrary importBIOS
|
|
|
|
Detection is by content. The scan lists the BIOS folder with a * mask, keeps
|
|
files between 4194304 and 8388608 bytes, and accepts an image whose romdir
|
|
carries a RESET entry followed by a readable ROMVER. The fifth ROMVER
|
|
character gives the zone, A for USA, C for China, E for Europe, H for Asia,
|
|
J for Japan, P for Free, T for T10K and X for Test, any other character
|
|
standing for itself. The sixth character is read only to pick the word
|
|
Console or Devel for the description, and the acceptance flag is set outright
|
|
once ROMVER has been read, so development images pass with nothing patched
|
|
here. RESET and ROMVER are the only two names the scan compares. An image
|
|
named in the configuration is combined with the BIOS folder and opened at that
|
|
path when it exists, without the size filter and without the romdir test. No
|
|
name and no hash is matched anywhere. The image is read into the 4 MB ROM
|
|
region and truncated to it, and one shorter than 2465792 bytes turns off the
|
|
OSDSys parameter HLE.
|
|
ref: aethersx2/pcsx2/ps2/BiosTools.cpp:27-28,
|
|
aethersx2/pcsx2/ps2/BiosTools.cpp:62-175,
|
|
aethersx2/pcsx2/ps2/BiosTools.cpp:235-260,
|
|
aethersx2/pcsx2/ps2/BiosTools.cpp:272-332,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x81bc00-0x81bc24,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x81be44-0x81c1c0,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x81b5e8-0x81b62c
|
|
|
|
Companions derive from the selected image. rom1 and rom2 are appended to the
|
|
full name first, then substituted for the existing extension, so an image at
|
|
ps2-0230a-20080220.bin is followed by ps2-0230a-20080220.bin.rom1 then
|
|
ps2-0230a-20080220.rom1. The nvm and the mec are read at the substituted
|
|
extension only, and both are written with defaults when they are absent or too
|
|
short. This code line loads no erom: the extension is named nowhere in the
|
|
library and the boot path goes from rom2 straight to the IRX.
|
|
ref: aethersx2/pcsx2/ps2/BiosTools.cpp:193-218,
|
|
aethersx2/pcsx2/CDVD/CDVD.cpp:120-144,
|
|
aethersx2/pcsx2/CDVD/CDVD.cpp:158-226,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x81b688-0x81b9a4
|
|
|
|
The network adapter opens eeprom.dat and flash.dat by bare name, so they
|
|
resolve against the process working directory, which the application never
|
|
sets. A compiled-in image stands in for the first and a card filled with 0xFF
|
|
for the second. DEV9hdd.raw is the default name of the empty disk image its
|
|
settings page writes. An IRX named in the configuration is read into the ROM
|
|
region at 0x3C0000 at boot. The field is empty by default and names no file of
|
|
its own.
|
|
ref: aethersx2/pcsx2/DEV9/DEV9.cpp:73, aethersx2/pcsx2/DEV9/DEV9.cpp:145-160,
|
|
aethersx2/pcsx2/DEV9/flash.cpp:76-103,
|
|
aethersx2/pcsx2/ps2/BiosTools.cpp:220-233,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x7bb5cc-0x7bb680,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x81b9a4-0x81bac4
|
|
|
|
The Vulkan path is the reason this build exists. libemucore.so opens
|
|
libvulkad.so.1 then libvulkad.so where the stock library names libvulkan.so,
|
|
and vkCreateInstance is resolved from it. That shim reads the Adreno model and
|
|
the platform name from the kgsl sysfs nodes, picks one of six Turnip drivers
|
|
packed beside it, creates a linker namespace over its own library directory
|
|
and loads libhook_impl.so and libmain_hook.so into it. The system
|
|
/system/lib64/libvulkan.so is then opened inside that namespace with its
|
|
soname patched, so its own driver load lands in the hook, which opens the
|
|
chosen Turnip driver instead of the vendor ICD. A driver present at
|
|
/data/local/tmp/libvulkan_freedreno.so is tested first and wins over all six.
|
|
When the namespace cannot be built the shim falls back to patching the system
|
|
library's global offset table, and that path alone loads libbase.so,
|
|
libcutils.so, libvndksupport.so and libhardware.so from the library directory.
|
|
The shim derives the package name from its own library path and appends to
|
|
vulkan_shim.log under the files folder of that package.
|
|
ref: VulkanShim2/vulkan_shim.cpp:43-73,
|
|
VulkanShim2/vulkan_shim.cpp:1008-1085,
|
|
VulkanShim2/vulkan_shim.cpp:1107-1175,
|
|
VulkanShim2/vulkan_shim.cpp:1179-1194,
|
|
VulkanShim2/hook_impl.cpp:38-140,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x8a45ec-0x8a4624
|
|
|
|
Resources are read out of the package itself. The library has no asset manager
|
|
of its own and calls back into readPackageFile, readPackageFileToString and
|
|
playSoundAsync, each taking an asset-relative name, so the game database, the
|
|
patch archives, the interface fonts, the shader sources every backend compiles
|
|
at startup and the achievement sounds are versioned with the build and never
|
|
looked for on disk. The sound names are joined to a file:///android_asset base
|
|
before they cross into Java. The game list draws its region flags and rating
|
|
stars from the same assets. The game database is this build's own, and five of
|
|
the shader sources differ from the ones the 4248 line carries: the OpenGL
|
|
preamble, its format conversion and texture function fragment shaders, and the
|
|
Vulkan texture function and format conversion shaders.
|
|
ref: nethersx2-turnip-classic v0.7 libemucore.so 0x828110,
|
|
xyz/aethersx2/android/NativeLibrary readPackageFile,
|
|
xyz/aethersx2/android/NativeLibrary playSoundAsync
|
|
|
|
files:
|
|
- name: ps2-0230a-20080220.bin
|
|
path: bios/ps2-0230a-20080220.bin
|
|
required: true
|
|
min_size: 4194304
|
|
max_size: 8388608
|
|
validation: [size]
|
|
description: "PS2 BIOS image"
|
|
note: >-
|
|
Any image whose romdir holds RESET and a readable ROMVER is accepted,
|
|
whatever its name. The 4 to 8 MB range gates the folder scan, and an image
|
|
named in the configuration skips both that range and the romdir test.
|
|
source_ref: "aethersx2/pcsx2/ps2/BiosTools.cpp:27-28, aethersx2/pcsx2/ps2/BiosTools.cpp:235-260, nethersx2-turnip-classic v0.7 libemucore.so 0x81bc00-0x81bc24 (size window), nethersx2-turnip-classic v0.7 libemucore.so 0x81c1c0 (acceptance flag set outright)"
|
|
|
|
- name: ps2-0230a-20080220.rom1
|
|
path: bios/ps2-0230a-20080220.rom1
|
|
required: false
|
|
max_size: 4194304
|
|
description: "DVD player ROM"
|
|
note: >-
|
|
Tried as {bios}.rom1 then {biosbase}.rom1. Read at 0x2404000 of the EE
|
|
memory block and truncated to 4 MB. Logged and skipped when absent.
|
|
source_ref: "aethersx2/pcsx2/ps2/BiosTools.cpp:193-218, nethersx2-turnip-classic v0.7 libemucore.so 0x81b688-0x81b810"
|
|
|
|
- name: ps2-0230a-20080220.rom2
|
|
aliases:
|
|
- "SCPH-90006_BIOS_VX_HK _230.ROM2"
|
|
path: bios/ps2-0230a-20080220.rom2
|
|
required: false
|
|
max_size: 524288
|
|
description: "Chinese ROM extension"
|
|
note: >-
|
|
Same two-step naming as rom1. Read at 0x2804000 of the EE memory block and
|
|
truncated to 512 KB. Only present on Chinese region consoles.
|
|
source_ref: "aethersx2/pcsx2/ps2/BiosTools.cpp:193-218, nethersx2-turnip-classic v0.7 libemucore.so 0x81b820-0x81b994"
|
|
|
|
- name: ps2-0230a-20080220.nvm
|
|
path: bios/ps2-0230a-20080220.nvm
|
|
required: false
|
|
hle_fallback: true
|
|
min_size: 1024
|
|
validation: [size]
|
|
description: "Console NVRAM"
|
|
note: >-
|
|
Read at the BIOS path with the extension replaced by nvm, opened r+b.
|
|
Carries the console id, the iLink id, the language and the OSD
|
|
configuration. A 1024 byte image is written when the file is missing or
|
|
shorter, zeroed except for a fixed iLink id and the language defaults of
|
|
the BIOS region.
|
|
source_ref: "aethersx2/pcsx2/CDVD/CDVD.cpp:158-226, nethersx2-turnip-classic v0.7 libemucore.so 0x790470-0x7906c8, nethersx2-turnip-classic v0.7 libemucore.so 0x790820-0x790944"
|
|
|
|
- name: ps2-0230a-20080220.mec
|
|
path: bios/ps2-0230a-20080220.mec
|
|
required: false
|
|
hle_fallback: true
|
|
min_size: 4
|
|
validation: [size]
|
|
description: "Mechacon version"
|
|
note: >-
|
|
Read at the BIOS path with the extension replaced by mec. Written as
|
|
03 06 02 00 when the file is missing or shorter than 4 bytes.
|
|
source_ref: "aethersx2/pcsx2/CDVD/CDVD.cpp:120-144, nethersx2-turnip-classic v0.7 libemucore.so 0x791700-0x7918f4"
|
|
|
|
- name: eeprom.dat
|
|
required: false
|
|
hle_fallback: true
|
|
size: 64
|
|
description: "DEV9 EEPROM"
|
|
note: >-
|
|
Opened O_RDWR by bare name when the network adapter starts and mapped over
|
|
64 bytes. A compiled-in image stands in when the file is missing or cannot
|
|
be mapped.
|
|
source_ref: "aethersx2/pcsx2/DEV9/DEV9.cpp:73, aethersx2/pcsx2/DEV9/DEV9.cpp:145-160, nethersx2-turnip-classic v0.7 libemucore.so 0x7bb620-0x7bb680"
|
|
|
|
- name: flash.dat
|
|
required: false
|
|
hle_fallback: true
|
|
max_size: 8650752
|
|
description: "DEV9 SmartMedia flash image"
|
|
note: >-
|
|
Opened rb by bare name at network adapter init and read as 1024 blocks of
|
|
16 pages of 512 bytes plus 16 ECC bytes. The card is filled with 0xFF when
|
|
the file is absent.
|
|
source_ref: "aethersx2/pcsx2/DEV9/flash.cpp:76-103, nethersx2-turnip-classic v0.7 libemucore.so 0x7bb5cc-0x7bb61c"
|
|
|
|
- name: "<module>.irx"
|
|
required: false
|
|
unsourceable: "any IOP module the user points at, under no name the code expects"
|
|
description: "IOP module injected at boot"
|
|
note: >-
|
|
Opened at the path the configuration holds once it is four characters or
|
|
longer, and read into the ROM region at 0x3C0000, capped at 0x40000 bytes.
|
|
The field is empty by default and names no file of its own.
|
|
source_ref: "aethersx2/pcsx2/ps2/BiosTools.cpp:220-233, aethersx2/pcsx2/ps2/BiosTools.cpp:327-328, nethersx2-turnip-classic v0.7 libemucore.so 0x81b9a4-0x81bac4"
|
|
|
|
- name: libvulkad.so
|
|
path: lib/arm64-v8a/libvulkad.so
|
|
required: false
|
|
bundled: true
|
|
size: 484560
|
|
md5: 1a68e1ac1eec29005c19df924146cf19
|
|
sha1: 2655469eca935d89a6d8fe0c3998fe3ec0dd2d65
|
|
description: "Vulkan loader shim"
|
|
note: >-
|
|
Opened as libvulkad.so.1 then libvulkad.so where the stock library names
|
|
libvulkan.so, and vkCreateInstance is resolved from it. Without it the
|
|
Vulkan backend does not open and the message names the shim. This package
|
|
carries the build committed for v0.6, one revision behind the emulator
|
|
library beside it.
|
|
source_ref: "VulkanShim2/vulkan_shim.cpp:969-1272 (the constructor that runs on load), nethersx2-turnip-classic v0.7 libemucore.so 0x8a45ec-0x8a4624"
|
|
|
|
- name: libhook_impl.so
|
|
path: lib/arm64-v8a/libhook_impl.so
|
|
required: false
|
|
bundled: true
|
|
size: 461856
|
|
md5: c2a10d75f7a186f78debc79dd2204841
|
|
sha1: 5a86d24c83f4a0867a3526638182c8dc67e0033b
|
|
description: "Driver load hook"
|
|
note: >-
|
|
Opened into the adrenotools-libvulkan namespace and asked for
|
|
init_hook_param, which receives the driver directory and driver name. Its
|
|
hook_android_dlopen_ext is what replaces the vendor driver with the Turnip
|
|
one, and it reopens itself in each driver namespace it creates.
|
|
source_ref: "VulkanShim2/vulkan_shim.cpp:1138-1156, VulkanShim2/hook_impl.cpp:38-140"
|
|
|
|
- name: libmain_hook.so
|
|
path: lib/arm64-v8a/libmain_hook.so
|
|
required: false
|
|
bundled: true
|
|
size: 5648
|
|
md5: 3ded83b3f45773199b82bf81c86f8c89
|
|
sha1: e2ee6c00247fc05b88afe43237fa4bfa90212c54
|
|
description: "Namespace interposer"
|
|
note: >-
|
|
Loaded RTLD_GLOBAL into the same namespace before the system Vulkan
|
|
library, so its android_dlopen_ext and android_load_sphal_library are the
|
|
ones that library binds to.
|
|
source_ref: "VulkanShim2/vulkan_shim.cpp:1159-1160, VulkanShim2/main_hook.c:3-9"
|
|
|
|
- name: libvulkan_freedreno_T28.so
|
|
path: lib/arm64-v8a/libvulkan_freedreno_T28.so
|
|
required: false
|
|
bundled: true
|
|
size: 18606849
|
|
md5: 315f4b037b77dea81ea099e13e94fa11
|
|
sha1: 83406408d328d8529ffa2faf7ab878664a5c7a79
|
|
description: "Turnip driver, default branch"
|
|
note: >-
|
|
Chosen when no other branch matches. Loaded by name from the library
|
|
directory through the hook. A load failure falls back to the vendor
|
|
driver.
|
|
source_ref: "VulkanShim2/vulkan_shim.cpp:1011, VulkanShim2/vulkan_shim.cpp:1079-1080, VulkanShim2/hook_impl.cpp:127-135"
|
|
|
|
- name: libvulkan_freedreno_a8xx-turnip-gen8-V31.so
|
|
path: lib/arm64-v8a/libvulkan_freedreno_a8xx-turnip-gen8-V31.so
|
|
required: false
|
|
bundled: true
|
|
size: 14509832
|
|
md5: 7f6dbc9ec12cb53b1802c418cf532f9b
|
|
sha1: 2dc32726b7a68ced6a40ea2c6cc60848716907ab
|
|
description: "Turnip driver, Adreno 8xx branch"
|
|
note: >-
|
|
Chosen whenever the Adreno model reads non-zero, model 810 and 825
|
|
included. Model 825 also turns off framebuffer fetch.
|
|
source_ref: "VulkanShim2/vulkan_shim.cpp:1010, VulkanShim2/vulkan_shim.cpp:1037-1052, nethersx2-turnip-classic v0.7 libvulkad.so 0x22770-0x23108"
|
|
|
|
- name: libvulkan_freedreno_T24.so
|
|
path: lib/arm64-v8a/libvulkan_freedreno_T24.so
|
|
required: false
|
|
bundled: true
|
|
size: 18003849
|
|
md5: e90d691859e0ff8f0221f3fb497cca5d
|
|
sha1: d28f7c64a8296a6d1886b348946d01433c10b493
|
|
description: "Turnip driver, Adreno 810 branch"
|
|
note: >-
|
|
The Adreno 810 branch writes this path and the block it falls into
|
|
overwrites it with the 8xx driver before anything reads it, so this
|
|
revision never opens the file. The branch gained its own exit after the
|
|
revision this package was built from.
|
|
source_ref: "VulkanShim2/vulkan_shim.cpp:1039-1043, nethersx2-turnip-classic v0.7 libvulkad.so 0x22784-0x230d4"
|
|
|
|
- name: libvulkan_freedreno_25.3.0_R6_Gmem.so
|
|
path: lib/arm64-v8a/libvulkan_freedreno_25.3.0_R6_Gmem.so
|
|
required: false
|
|
bundled: true
|
|
size: 12048553
|
|
md5: 3f1b01295ab08d070bede8122ebd0aea
|
|
sha1: 2159a5172176f9ee0076370314d2d100de2fe1b1
|
|
description: "Turnip driver, Adreno 710 and 720 branch"
|
|
note: >-
|
|
Chosen when the model is unreadable and the GPU name holds 710 or 720.
|
|
source_ref: "VulkanShim2/vulkan_shim.cpp:1056-1059"
|
|
|
|
- name: libvulkan_freedreno_v24.1.0_R18.a6xx-Patched.so
|
|
path: lib/arm64-v8a/libvulkan_freedreno_v24.1.0_R18.a6xx-Patched.so
|
|
required: false
|
|
bundled: true
|
|
size: 9407968
|
|
md5: 7af55500464d372a609084fb4698e16d
|
|
sha1: 1abf76c578cb1330e354d5588634b87cef4bc057
|
|
description: "Turnip driver, SD845 to SD888 branch"
|
|
note: >-
|
|
Chosen when the platform reads SM8250, kona, SM8350, lahaina, sdm845 or
|
|
napali.
|
|
source_ref: "VulkanShim2/vulkan_shim.cpp:1027-1033"
|
|
|
|
- name: libvulkan_freedreno_T19.so
|
|
path: lib/arm64-v8a/libvulkan_freedreno_T19.so
|
|
required: false
|
|
bundled: true
|
|
size: 11581209
|
|
md5: 5f953080ba9ac858a99f3742c8302055
|
|
sha1: 4dc276dfd5842302c978ce9b2996f961dc6452f1
|
|
description: "Turnip driver, SM6125 branch"
|
|
note: "Chosen when the platform reads SM6125 or trinket."
|
|
source_ref: "VulkanShim2/vulkan_shim.cpp:1020-1023"
|
|
|
|
- name: libvulkan_freedreno.so
|
|
path: data/local/tmp/libvulkan_freedreno.so
|
|
required: false
|
|
unsourceable: "any Turnip build the user places at that path"
|
|
description: "Turnip driver override"
|
|
note: >-
|
|
Tested with access before any detection runs. When it exists it becomes
|
|
the driver and the driver directory becomes /data/local/tmp/, so none of
|
|
the six packed drivers is consulted.
|
|
source_ref: "VulkanShim2/vulkan_shim.cpp:1009, VulkanShim2/vulkan_shim.cpp:1012-1017"
|
|
|
|
- name: libbase.so
|
|
path: lib/arm64-v8a/libbase.so
|
|
required: false
|
|
bundled: true
|
|
size: 255352
|
|
md5: eae5ccb3f801b3333ec0e65592ce8a87
|
|
sha1: fecf95a804a7cb57e210f55d5482a56826c8684c
|
|
description: "Platform support library for the fallback path"
|
|
note: >-
|
|
Opened RTLD_GLOBAL from the library directory only when the namespace
|
|
approach failed and the shim falls back to patching the global offset
|
|
table.
|
|
source_ref: "VulkanShim2/vulkan_shim.cpp:1179-1194"
|
|
|
|
- name: libcutils.so
|
|
path: lib/arm64-v8a/libcutils.so
|
|
required: false
|
|
bundled: true
|
|
size: 91200
|
|
md5: 185cd93c21cce12ab4c3bc2430934684
|
|
sha1: 63e55bcae5ee690cf6bc7db69a5077c5502e4334
|
|
description: "Platform support library for the fallback path"
|
|
note: "Same fallback list as libbase.so, and a dependency of every packed driver."
|
|
source_ref: "VulkanShim2/vulkan_shim.cpp:1179-1194, VulkanShim2/vulkan_shim.cpp:1248-1255"
|
|
|
|
- name: libvndksupport.so
|
|
path: lib/arm64-v8a/libvndksupport.so
|
|
required: false
|
|
bundled: true
|
|
size: 66881
|
|
md5: aa5065cca6695aa4b8cfdd3c164f3d28
|
|
sha1: a6f2d8498a2f0a00776dd69c58f012cdbb75a308
|
|
description: "Platform support library for the fallback path"
|
|
note: >-
|
|
Same fallback list as libbase.so. Its android_load_sphal_library is the
|
|
call the shim stubs so a vendor load can be redirected.
|
|
source_ref: "VulkanShim2/vulkan_shim.cpp:1179-1194, VulkanShim2/vulkan_shim.cpp:1257-1269"
|
|
|
|
- name: libhardware.so
|
|
path: lib/arm64-v8a/libhardware.so
|
|
required: false
|
|
bundled: true
|
|
size: 66961
|
|
md5: 71e06a0726aa60b010e066d37021d36a
|
|
sha1: 555a6203cd7c23c2b49916d70615e5df7973aa87
|
|
description: "Platform support library for the fallback path"
|
|
note: "Same fallback list as libbase.so, and a dependency of every packed driver."
|
|
source_ref: "VulkanShim2/vulkan_shim.cpp:1179-1194, VulkanShim2/vulkan_shim.cpp:1235-1246"
|
|
|
|
- name: GameIndex.yaml
|
|
path: assets/GameIndex.yaml
|
|
required: false
|
|
bundled: true
|
|
size: 1758721
|
|
md5: 3f33de7bf8e40e00a05cf27c18a6be0c
|
|
sha1: 58fb1f8ea6cf2d526904349640453e682fe388a1
|
|
description: "Game database"
|
|
note: >-
|
|
Read from the package by name, keyed by serial, and carrying the per-game
|
|
fixes, patches and settings overrides. Parsed into gamedb.cache in the
|
|
cache folder.
|
|
source_ref: "aethersx2/pcsx2/GameDatabase.cpp:35, nethersx2-turnip-classic v0.7 libemucore.so 0x2e45fc"
|
|
|
|
- name: cheats_ws.zip
|
|
path: assets/cheats_ws.zip
|
|
required: false
|
|
bundled: true
|
|
size: 1694454
|
|
md5: cc19970629feb0a25b9b95263194f08f
|
|
sha1: 1caae7ddf0cbba5f1f6d7404b2309300d913778c
|
|
description: "Widescreen patch archive"
|
|
note: >-
|
|
Per-game pnach entries matched on the disc CRC, read from the package when
|
|
widescreen patches are enabled. The cheats_ws folder under the data
|
|
directory takes precedence and the archive is skipped when it holds a
|
|
match.
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x804464"
|
|
|
|
- name: cheats_ni.zip
|
|
path: assets/cheats_ni.zip
|
|
required: false
|
|
bundled: true
|
|
size: 223122
|
|
md5: fb2a43dcea094a19db4f4bcdc4ad32eb
|
|
sha1: 31cbff66380f255d359ff9ee09b6edc06102579a
|
|
description: "No-interlacing patch archive"
|
|
note: >-
|
|
Same form as cheats_ws.zip, read when no-interlacing patches are enabled,
|
|
with the cheats_ni folder taking precedence.
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x80460c"
|
|
|
|
- name: Roboto-Regular.ttf
|
|
path: assets/fonts/Roboto-Regular.ttf
|
|
required: true
|
|
bundled: true
|
|
size: 305608
|
|
md5: 86da78cb59576328483a11c6ef74bc2b
|
|
sha1: 00d62fbdc8d5dec4c659005e116d0ba2ee63b547
|
|
description: "Interface font"
|
|
note: "Read as the standard font when the interface comes up. An empty read aborts the process."
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x7d1e78-0x7d1e8c, nethersx2-turnip-classic v0.7 libemucore.so 0x7d2270"
|
|
|
|
- name: RobotoMono-Medium.ttf
|
|
path: assets/fonts/RobotoMono-Medium.ttf
|
|
required: true
|
|
bundled: true
|
|
size: 86820
|
|
md5: 8ad82b1dc550319993a7d6c932b2656d
|
|
sha1: 9056e59b69c6f1160fdfb92a0773f17f6307f3ad
|
|
description: "Fixed-width interface font"
|
|
note: "Read for the fixed-width font. An empty read aborts the process."
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x7d1ecc-0x7d1ee0, nethersx2-turnip-classic v0.7 libemucore.so 0x7d2270"
|
|
|
|
- name: fa-solid-900.ttf
|
|
path: assets/fonts/fa-solid-900.ttf
|
|
required: true
|
|
bundled: true
|
|
size: 204528
|
|
md5: dffd9504fcb1894620fa41c700172994
|
|
sha1: 694b8a2445ff39de415bf4791845442a7b1b81e5
|
|
description: "Font Awesome icon font"
|
|
note: "Read for the interface icon glyphs. An empty read aborts the process."
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x7d1f20-0x7d1f34, nethersx2-turnip-classic v0.7 libemucore.so 0x7d2270"
|
|
|
|
- name: ffx_a.h
|
|
path: assets/shaders/common/ffx_a.h
|
|
required: false
|
|
bundled: true
|
|
size: 161481
|
|
md5: 2c539b603dcb15dcdcfdc420eda56ced
|
|
sha1: 726370c10154ad092c15c251b98c79185e980c7c
|
|
description: "FidelityFX common header"
|
|
note: "Prepended to the sharpening shader of both backends."
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x627178"
|
|
|
|
- name: ffx_cas.h
|
|
path: assets/shaders/common/ffx_cas.h
|
|
required: false
|
|
bundled: true
|
|
size: 63512
|
|
md5: f8a3d7f48ae19fc372cd0d5d375d5a8d
|
|
sha1: a1d1a687577f7a607fda35bc88950f57c2129ca5
|
|
description: "FidelityFX CAS header"
|
|
note: "Prepended to the sharpening shader of both backends."
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x627188"
|
|
|
|
- name: fxaa.fx
|
|
path: assets/shaders/common/fxaa.fx
|
|
required: false
|
|
bundled: true
|
|
size: 19420
|
|
md5: 5cdeb2963c1b68c3ffb04a789cc66d6e
|
|
sha1: 3ac5f68049ed00d8ff3d2811bd09ef0c036efd0a
|
|
description: "FXAA shader source"
|
|
note: "Read by both backends when FXAA is enabled."
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x67c710, nethersx2-turnip-classic v0.7 libemucore.so 0x685fd0"
|
|
|
|
- name: common_header.glsl
|
|
path: assets/shaders/opengl/common_header.glsl
|
|
required: false
|
|
bundled: true
|
|
size: 1938
|
|
md5: 86a37e282f029d20f395cfd05263fddd
|
|
sha1: 9c391aae0daddf0c2ba3f0d5265aee9b491286e4
|
|
description: "OpenGL shader preamble"
|
|
note: "Prepended to every OpenGL program the renderer builds."
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x674618"
|
|
|
|
- name: convert.glsl
|
|
path: assets/shaders/opengl/convert.glsl
|
|
required: false
|
|
bundled: true
|
|
size: 10361
|
|
md5: 0dba3321d9f902439a50b79680b220c7
|
|
sha1: 26a17de3b4abc30e5c19987efad4ceac22e9a369
|
|
description: "OpenGL format conversion shader"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x674f78"
|
|
|
|
- name: present.glsl
|
|
path: assets/shaders/opengl/present.glsl
|
|
required: false
|
|
bundled: true
|
|
size: 9458
|
|
md5: afbb9a89f17ead2d8ce7252c1b44186f
|
|
sha1: bf2688971a8ef2f2c262c3c2ec579d3dd39793e6
|
|
description: "OpenGL presentation shader"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x675480"
|
|
|
|
- name: merge.glsl
|
|
path: assets/shaders/opengl/merge.glsl
|
|
required: false
|
|
bundled: true
|
|
size: 455
|
|
md5: 2c4d70f62928eac933eec932d7bfa0b3
|
|
sha1: d1a3c11a1273e1d6c740e4eacc3159842f206683
|
|
description: "OpenGL frame merge shader"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x675780"
|
|
|
|
- name: interlace.glsl
|
|
path: assets/shaders/opengl/interlace.glsl
|
|
required: false
|
|
bundled: true
|
|
size: 6246
|
|
md5: 0e537dd838a7ecd3b687f3f7cc60a7be
|
|
sha1: e74e58f530abb4af02c0875c2f04d507e854869e
|
|
description: "OpenGL deinterlacing shader"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x675aac"
|
|
|
|
- name: shadeboost.glsl
|
|
path: assets/shaders/opengl/shadeboost.glsl
|
|
required: false
|
|
bundled: true
|
|
size: 1457
|
|
md5: 3d1e2be521a66cbfc2c5ff32057e7bf4
|
|
sha1: 8d8b8966afd2ad840151f7fcb494739041708c89
|
|
description: "OpenGL brightness and contrast shader"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x675cb8"
|
|
|
|
- name: cas.glsl
|
|
path: assets/shaders/opengl/cas.glsl
|
|
required: false
|
|
bundled: true
|
|
size: 2448
|
|
md5: f8a684763e24557c97e3f5d05935bb3b
|
|
sha1: 1a69a0fc522caff98fc3829ebf3f12a6a006a058
|
|
description: "OpenGL sharpening shader"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x676fa0"
|
|
|
|
- name: tfx_vgs.glsl
|
|
path: assets/shaders/opengl/tfx_vgs.glsl
|
|
required: false
|
|
bundled: true
|
|
size: 5756
|
|
md5: a97e9616f298bb9041bf9e45ee2ec597
|
|
sha1: 0e9e98f766c9250b465af776d0077f49f797fed2
|
|
description: "OpenGL texture function vertex and geometry shader"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x677318"
|
|
|
|
- name: tfx_fs.glsl
|
|
path: assets/shaders/opengl/tfx_fs.glsl
|
|
required: false
|
|
bundled: true
|
|
size: 25906
|
|
md5: 9d80855607a6da1014f083340741b845
|
|
sha1: 919c3308c8850852d529d0127ce94e873375bfd2
|
|
description: "OpenGL texture function fragment shader"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x677328"
|
|
|
|
- name: tfx.glsl
|
|
path: assets/shaders/vulkan/tfx.glsl
|
|
required: false
|
|
bundled: true
|
|
size: 28290
|
|
md5: ebc0ffa3de6fd0a7a4dea17f8b74d806
|
|
sha1: b4ebf3f7f20fc88f91cda033552a7489a9ff179c
|
|
description: "Vulkan texture function shader"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x682098"
|
|
|
|
- name: convert.glsl
|
|
path: assets/shaders/vulkan/convert.glsl
|
|
required: false
|
|
bundled: true
|
|
size: 8025
|
|
md5: 553d33859963a1abe5508e8e45f1cb1e
|
|
sha1: 7a133d4cf115dc49cd1921bd7049ea64ad58acce
|
|
description: "Vulkan format conversion shader"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x68394c, nethersx2-turnip-classic v0.7 libemucore.so 0x685fb8"
|
|
|
|
- name: present.glsl
|
|
path: assets/shaders/vulkan/present.glsl
|
|
required: false
|
|
bundled: true
|
|
size: 8177
|
|
md5: 72626d625bb963c6cd7074d4dfd0adda
|
|
sha1: 4871ee00b249b41d16232769e2f661bedd1c83db
|
|
description: "Vulkan presentation shader"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x684728"
|
|
|
|
- name: interlace.glsl
|
|
path: assets/shaders/vulkan/interlace.glsl
|
|
required: false
|
|
bundled: true
|
|
size: 6707
|
|
md5: bf3caa2532873593218bc4a09e924d4e
|
|
sha1: f8d14d80036f11707c7e94db2a77531d582019dd
|
|
description: "Vulkan deinterlacing shader"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x684f74"
|
|
|
|
- name: merge.glsl
|
|
path: assets/shaders/vulkan/merge.glsl
|
|
required: false
|
|
bundled: true
|
|
size: 669
|
|
md5: b776383d21609db24d5348c381c2c286
|
|
sha1: b09de39d6459c70ffab28dcb3e3ef879b1648674
|
|
description: "Vulkan frame merge shader"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x6857c4"
|
|
|
|
- name: shadeboost.glsl
|
|
path: assets/shaders/vulkan/shadeboost.glsl
|
|
required: false
|
|
bundled: true
|
|
size: 1741
|
|
md5: 366b45b6c4e9ed8e6b7454eebcb5d010
|
|
sha1: 26b29f57685d8108cf519c4f1d340d43aacbff6e
|
|
description: "Vulkan brightness and contrast shader"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x686284"
|
|
|
|
- name: cas.glsl
|
|
path: assets/shaders/vulkan/cas.glsl
|
|
required: false
|
|
bundled: true
|
|
size: 2624
|
|
md5: 56f3cf4de895dd4d32d6c79d564d0c5b
|
|
sha1: 709fd5393188f7cff0fe4230d0e3e8b69a82f5b9
|
|
description: "Vulkan sharpening shader"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x6869c4"
|
|
|
|
- name: unlock.wav
|
|
path: assets/sounds/achievements/unlock.wav
|
|
required: false
|
|
bundled: true
|
|
size: 87714
|
|
md5: 4d035ee86f836bfed422a975cf65c9cc
|
|
sha1: eb488a76217629f620e40287567d7e2b30337680
|
|
description: "Achievement unlock sound"
|
|
note: >-
|
|
Joined to the file:///android_asset base and handed to playSoundAsync,
|
|
which opens it from the package and plays it through MediaPlayer.
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x811190"
|
|
|
|
- name: lbsubmit.wav
|
|
path: assets/sounds/achievements/lbsubmit.wav
|
|
required: false
|
|
bundled: true
|
|
size: 82096
|
|
md5: fa6a7030a9f259ee7300dd0bd49f24f3
|
|
sha1: 5ad1e110dcf0ffd26405981398892a82e4f3bad1
|
|
description: "Leaderboard submission sound"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x811814"
|
|
|
|
- name: message.wav
|
|
path: assets/sounds/achievements/message.wav
|
|
required: false
|
|
bundled: true
|
|
size: 15696
|
|
md5: d66b0bccd743bd11eaca55bcaec925da
|
|
sha1: c54f04b63ac6f04e0a0944ef260b5497e4494dbd
|
|
description: "Achievement notification sound"
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x810254"
|
|
|
|
- name: placeholder.png
|
|
path: assets/placeholder.png
|
|
required: false
|
|
bundled: true
|
|
size: 2762
|
|
md5: 8f846541ccbf088ee7f8c49c8dcb3a6a
|
|
sha1: c36292ab7e16bf5a6cbc4063f638e24872349c45
|
|
description: "Fallback interface texture"
|
|
note: >-
|
|
Requested from the texture cache when a notification or a loading screen
|
|
has no image of its own. A miss logs that it cannot continue and the
|
|
caller tears the interface down instead of bringing it up.
|
|
source_ref: "nethersx2-turnip-classic v0.7 libemucore.so 0x7d21fc, nethersx2-turnip-classic v0.7 libemucore.so 0x817be0, nethersx2-turnip-classic v0.7 libemucore.so 0x7ec54c"
|
|
|
|
- name: "<region>.png"
|
|
path: assets/icons/flags/NTSC-U.png
|
|
required: false
|
|
bundled: true
|
|
description: "Game list region flag"
|
|
note: >-
|
|
Loaded as icons/flags/<region>.png with the region string of the entry.
|
|
Thirty are carried, seven NTSC and twenty-two PAL plus Other.
|
|
source_ref: "nethersx2-turnip-classic v0.7 classes.dex icons/flags/%s.png"
|
|
|
|
- name: "star-<rating>.png"
|
|
path: assets/icons/star-0.png
|
|
required: false
|
|
bundled: true
|
|
description: "Game list compatibility rating icon"
|
|
note: "Loaded as icons/star-<rating>.png for ratings 0 to 5."
|
|
source_ref: "nethersx2-turnip-classic v0.7 classes.dex icons/star-%d.png"
|
|
|
|
- name: faq.html
|
|
path: assets/faq.html
|
|
required: false
|
|
bundled: true
|
|
size: 14048
|
|
md5: c2a64e0bcc401da9b0a3c7adf3cff410
|
|
sha1: 9163d4a3d19b87483f843e4bf3afe236a50a72d2
|
|
description: "Help page"
|
|
note: "Opened under the android_asset scheme by the setup wizard's browser view."
|
|
source_ref: "nethersx2-turnip-classic v0.7 classes.dex android_asset faq.html"
|
|
|
|
- name: 3rdparty.html
|
|
path: assets/3rdparty.html
|
|
required: false
|
|
bundled: true
|
|
size: 90296
|
|
md5: fb4ff036f3e4769aa6daefdc4c5dba57
|
|
sha1: 7743bf1d7e6e09a02f1b2972aa63bd8a9f26050d
|
|
description: "Third party notices page"
|
|
note: "Opened under the android_asset scheme in the built-in browser view."
|
|
source_ref: "nethersx2-turnip-classic v0.7 classes.dex android_asset 3rdparty.html"
|
|
|
|
exclusion_note: >
|
|
Left out are the libraries the package carries for the dynamic linker rather
|
|
than for its own code. libc.so, libm.so, libdl.so, ld-android.so, liblog.so
|
|
and libc++_shared.so sit beside the drivers so the namespace built over that
|
|
directory can satisfy their DT_NEEDED, and no code path names any of them.
|
|
android_linker_ns.o is a relocatable object nothing can open. libc++.so and
|
|
libsync.so are named in the fallback and promote arrays but the package
|
|
carries neither, and the promote call passes RTLD_NOLOAD, which never reads
|
|
from disk. libfile_redirect_hook.so and libgsl_alloc_hook.so are reachable
|
|
only under feature flags the shim never sets, the only flag passed being the
|
|
custom driver one. The system Vulkan loader and libandroid.so come from the
|
|
platform. Also left out are the assets no code path on this platform opens.
|
|
game_controller_db.txt is named in neither the library nor the dex, pad input
|
|
arriving through handleControllerButtonEvent and handleControllerAxisEvent.
|
|
The others are the seven Direct3D shader sources under shaders/dx11,
|
|
icons/AppIconLarge.png and cover-placeholder.png, the licence and credit texts
|
|
fonts/Roboto-Regular-copyright and sounds/achievements/README.txt, and
|
|
dexopt/baseline.prof and baseline.profm, which the Android runtime consumes.
|
|
Everything the emulator produces for itself under the data directory is out
|
|
as well: memory cards as Mcd<nnn>.ps2 and
|
|
Mcd-Multitap<n>-Slot<nn>.ps2, DEV9hdd.raw for the internal disk, save states,
|
|
screenshots, covers, texture dumps, playtime.dat, emulog.txt, imgui.ini,
|
|
per-game settings, input profiles, the gamedb and gl_programs caches, and
|
|
vulkan_shim.log.
|
|
ref: VulkanShim2/vulkan_shim.cpp:1099-1105, VulkanShim2/vulkan_shim.cpp:1150,
|
|
VulkanShim2/vulkan_shim.cpp:1179-1194,
|
|
nethersx2-turnip-classic v0.7 libemucore.so 0x4a8c7c
|