Skip to content

NetherSX2-Turnip - RetroBIOS

Type standalone
Classification Community forks
Source https://github.com/nckstwrt/NetherSX2-Turnip
Upstream https://github.com/Trixarian/AetherSX2
Version 2.2n-4248-Turnip-v0.7
Profiled 2026-08-12
Cores nethersx2-turnip, NetherSX2-Turnip, NETHERSX2-TURNIP
Systems sony-playstation-2
Author nckstwrt
BIOS directory bios/
Technical notes

PlayStation 2 emulator for Android, package xyz.aethersx2.tturnip, activity xyz.aethersx2.android.EmulationActivity. The application id is the only part of the package name that changes, which is what lets it sit beside the build it derives from. That build is NetherSX2 v2.2n-4248, itself a patch of the AetherSX2 v1.5-4248 package, and the library still reports itself as NetherSX2 v2.2n-4248 (Patched). The project publishes its shim sources and the libraries it packs; lib/libvulkad.so, lib/libhook_impl.so and lib/libmain_hook.so at the pinned revision are byte for byte the ones in the v0.7 package, so the sources describe the shipped binaries. Everything below was read from that package: lib/arm64-v8a/libemucore.so, libvulkad.so, the dex and the assets. ref: VulkanShim2/compile2.bat:21-64, nethersx2-turnip v0.7 AndroidManifest.xml, nethersx2-turnip v0.7 libemucore.so 0xe180c

The patch rewrites twenty places in the 4248 library. 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. Twelve 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. One skips the notification built from the android_warning key. The last four 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. None of them is in a file loading path, so the file set below is that of the package it patches, read from this library rather than carried over. ref: nethersx2-turnip v0.7 libemucore.so 0x10728e, nethersx2-turnip v0.7 libemucore.so 0x83cebc-0x83cee4, nethersx2-turnip v0.7 libemucore.so 0x83b728, nethersx2-turnip v0.7 libemucore.so 0x83bb3c, nethersx2-turnip v0.7 libemucore.so 0x83cfbc, nethersx2-turnip v0.7 libemucore.so 0x80e910, nethersx2-turnip v0.7 libemucore.so 0x840ff4, nethersx2-turnip v0.7 libemucore.so 0x84130c, nethersx2-turnip v0.7 libemucore.so 0x8421a0

A BIOS image is required and boot stops without one, the application 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. ref: nethersx2-turnip v0.7 libemucore.so 0xf70a9, nethersx2-turnip v0.7 libemucore.so 0x7ea908-0x7ea930, xyz/aethersx2/android/NativeLibrary getExternalFilesDir

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 compared against D and the result discarded, the acceptance flag being set outright, so development images pass. 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. ref: aethersx2/pcsx2/ps2/BiosTools.cpp:27-28, aethersx2/pcsx2/ps2/BiosTools.cpp:62-145, aethersx2/pcsx2/ps2/BiosTools.cpp:235-260, aethersx2/pcsx2/ps2/BiosTools.cpp:272-322, nethersx2-turnip v0.7 libemucore.so 0x828d80-0x828f14, nethersx2-turnip v0.7 libemucore.so 0x829140-0x8292f4

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. No erom is loaded on this code line. ref: aethersx2/pcsx2/ps2/BiosTools.cpp:193-216, aethersx2/pcsx2/CDVD/CDVD.cpp:120-144, aethersx2/pcsx2/CDVD/CDVD.cpp:158-214, nethersx2-turnip v0.7 libemucore.so 0x8288b0-0x828bb8

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:146-161, aethersx2/pcsx2/DEV9/flash.cpp:76-103, aethersx2/pcsx2/ps2/BiosTools.cpp:220-233, nethersx2-turnip v0.7 libemucore.so 0x7c5bec-0x7c5ca0, nethersx2-turnip v0.7 libemucore.so 0x828bb8-0x828ca8

The Vulkan path is the reason this build exists. libemucore.so opens libvulkad.so where the stock library opens libvulkan.so, and that shim reads the Adreno model 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 appends to vulkan_shim.log under the files folder of the data directory. ref: VulkanShim2/vulkan_shim.cpp:43-73, VulkanShim2/vulkan_shim.cpp:1010-1092, VulkanShim2/vulkan_shim.cpp:1099-1171, VulkanShim2/vulkan_shim.cpp:1186-1204, VulkanShim2/hook_impl.cpp:38-139, nethersx2-turnip v0.7 libemucore.so 0x8b473c-0x8b4768

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 game list draws its region flags and rating stars from the same assets. Four of the Vulkan shader sources differ from the ones the package it patches carries. ref: nethersx2-turnip v0.7 libemucore.so 0x8348d0, xyz/aethersx2/android/NativeLibrary readPackageFile, xyz/aethersx2/android/NativeLibrary playSoundAsync

55 files | 4 required, 51 optional | 38 in repo, 17 missing | 4 with HLE fallback

ps2-0230a-20080220.bin required in repo
PS2 BIOS image

  • Path: bios/ps2-0230a-20080220.bin
  • Size: min 4.0 MB, max 8.0 MB
  • Validation: size
  • Source: aethersx2/pcsx2/ps2/BiosTools.cpp:27-28, aethersx2/pcsx2/ps2/BiosTools.cpp:235-260, nethersx2-turnip v0.7 libemucore.so 0x828e20-0x828e44, nethersx2-turnip v0.7 libemucore.so 0x829244-0x829248
  • Platforms: batocera, lakka, recalbox, retroarch, retrobat, retrodeck, retropie, rocknix, romm
  • 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; an image named in the configuration skips both that range and the romdir test.

ps2-0230a-20080220.rom1 optional in repo
DVD player ROM

  • Path: bios/ps2-0230a-20080220.rom1
  • Size: max 4.0 MB
  • Source: aethersx2/pcsx2/ps2/BiosTools.cpp:193-216, nethersx2-turnip v0.7 libemucore.so 0x8288b0-0x828a24
  • 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.

ps2-0230a-20080220.rom2 optional missing
Chinese ROM extension

  • Path: bios/ps2-0230a-20080220.rom2
  • Size: max 512.0 KB
  • Aliases: SCPH-90006_BIOS_VX_HK _230.ROM2
  • Source: aethersx2/pcsx2/ps2/BiosTools.cpp:193-216, nethersx2-turnip v0.7 libemucore.so 0x828a34-0x828ba8
  • 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.

ps2-0230a-20080220.nvm optional in repo HLE fallback
Console NVRAM

  • Path: bios/ps2-0230a-20080220.nvm
  • Size: min 1.0 KB
  • Validation: size
  • Source: aethersx2/pcsx2/CDVD/CDVD.cpp:158-214, nethersx2-turnip v0.7 libemucore.so 0x79b930-0x79ba68
  • 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.

ps2-0230a-20080220.mec optional in repo HLE fallback
Mechacon version

  • Path: bios/ps2-0230a-20080220.mec
  • Size: min 4 B
  • Validation: size
  • Source: aethersx2/pcsx2/CDVD/CDVD.cpp:120-144, nethersx2-turnip v0.7 libemucore.so 0x79cbd0-0x79cc20
  • 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.

eeprom.dat optional in repo HLE fallback
DEV9 EEPROM

  • Size: 64 B
  • Source: aethersx2/pcsx2/DEV9/DEV9.cpp:146-161, nethersx2-turnip v0.7 libemucore.so 0x7c5c44
  • 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.

flash.dat optional missing HLE fallback
DEV9 SmartMedia flash image

  • Size: max 8.2 MB
  • Source: aethersx2/pcsx2/DEV9/flash.cpp:76-103, nethersx2-turnip v0.7 libemucore.so 0x7c5bf0
  • 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.

<module>.irx optional missing
IOP module injected at boot

  • Source: aethersx2/pcsx2/ps2/BiosTools.cpp:220-233, aethersx2/pcsx2/ps2/BiosTools.cpp:327-328, nethersx2-turnip v0.7 libemucore.so 0x828bb8-0x828ca8
  • Opened at the path the configuration holds once it is longer than three characters, 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.

libvulkad.so optional missing bundled
Vulkan loader shim

  • Path: lib/arm64-v8a/libvulkad.so
  • Size: 473.2 KB
  • SHA1: 55f845c4ea02...
  • MD5: 07a891beadc7...
  • Source: VulkanShim2/vulkan_shim.cpp:971-1279, nethersx2-turnip v0.7 libemucore.so 0x8b473c-0x8b4768
  • 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.

libhook_impl.so optional missing bundled
Driver load hook

  • Path: lib/arm64-v8a/libhook_impl.so
  • Size: 451.0 KB
  • SHA1: 5a86d24c83f4...
  • MD5: c2a10d75f7a1...
  • Source: VulkanShim2/vulkan_shim.cpp:1145-1163, VulkanShim2/hook_impl.cpp:38-139
  • 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.

libmain_hook.so optional missing bundled
Namespace interposer

  • Path: lib/arm64-v8a/libmain_hook.so
  • Size: 5.5 KB
  • SHA1: e2ee6c00247f...
  • MD5: 3ded83b3f457...
  • Source: VulkanShim2/vulkan_shim.cpp:1166-1167, VulkanShim2/main_hook.c:3-8
  • 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.

libvulkan_freedreno_T28.so optional missing bundled
Turnip driver, default branch

  • Path: lib/arm64-v8a/libvulkan_freedreno_T28.so
  • Size: 17.7 MB
  • SHA1: 83406408d328...
  • MD5: 315f4b037b77...
  • Source: VulkanShim2/vulkan_shim.cpp:1014, VulkanShim2/vulkan_shim.cpp:1086-1087, VulkanShim2/hook_impl.cpp:127-135
  • 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.

libvulkan_freedreno_a8xx-turnip-gen8-V31.so optional missing bundled
Turnip driver, Adreno 8xx branch

  • Path: lib/arm64-v8a/libvulkan_freedreno_a8xx-turnip-gen8-V31.so
  • Size: 13.8 MB
  • SHA1: 2dc32726b7a6...
  • MD5: 7f6dbc9ec12c...
  • Source: VulkanShim2/vulkan_shim.cpp:1013, VulkanShim2/vulkan_shim.cpp:1041-1058
  • Chosen when the Adreno model reads non-zero and is not 810. Model 825 also turns off framebuffer fetch.

libvulkan_freedreno_T24.so optional missing bundled
Turnip driver, Adreno 810 branch

  • Path: lib/arm64-v8a/libvulkan_freedreno_T24.so
  • Size: 17.2 MB
  • SHA1: d28f7c64a829...
  • MD5: e90d691859e0...
  • Source: VulkanShim2/vulkan_shim.cpp:1043-1046
  • Chosen when the Adreno model reads 810.

libvulkan_freedreno_25.3.0_R6_Gmem.so optional missing bundled
Turnip driver, Adreno 710 and 720 branch

  • Path: lib/arm64-v8a/libvulkan_freedreno_25.3.0_R6_Gmem.so
  • Size: 11.5 MB
  • SHA1: 2159a5172176...
  • MD5: 3f1b01295ab0...
  • Source: VulkanShim2/vulkan_shim.cpp:1062-1065
  • Chosen when the model is unreadable and the GPU name holds 710 or 720, or the platform reads SM6475.

libvulkan_freedreno_v24.1.0_R18.a6xx-Patched.so optional missing bundled
Turnip driver, SM8250 and SM7325 branch

  • Path: lib/arm64-v8a/libvulkan_freedreno_v24.1.0_R18.a6xx-Patched.so
  • Size: 9.0 MB
  • SHA1: 1abf76c578cb...
  • MD5: 7af55500464d...
  • Source: VulkanShim2/vulkan_shim.cpp:1030-1037
  • Chosen when the platform reads SM8250, kona or SM7325.

libvulkan_freedreno_T19.so optional missing bundled
Turnip driver, SM6125 branch

  • Path: lib/arm64-v8a/libvulkan_freedreno_T19.so
  • Size: 11.0 MB
  • SHA1: 4dc276dfd584...
  • MD5: 5f953080ba9a...
  • Source: VulkanShim2/vulkan_shim.cpp:1023-1026
  • Chosen when the platform reads SM6125 or trinket.

libvulkan_freedreno.so optional missing
Turnip driver override

  • Path: data/local/tmp/libvulkan_freedreno.so
  • Source: VulkanShim2/vulkan_shim.cpp:1012, VulkanShim2/vulkan_shim.cpp:1015-1020
  • 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.

libbase.so optional missing bundled
Platform support library for the fallback path

  • Path: lib/arm64-v8a/libbase.so
  • Size: 249.4 KB
  • SHA1: fecf95a804a7...
  • MD5: eae5ccb3f801...
  • Source: VulkanShim2/vulkan_shim.cpp:1186-1201
  • Opened RTLD_GLOBAL from the library directory only when the namespace approach failed and the shim falls back to patching the global offset table.

libcutils.so optional missing bundled
Platform support library for the fallback path

  • Path: lib/arm64-v8a/libcutils.so
  • Size: 89.1 KB
  • SHA1: 63e55bcae5ee...
  • MD5: 185cd93c21cc...
  • Source: VulkanShim2/vulkan_shim.cpp:1186-1201
  • Same fallback list as libbase.so, and a dependency of every packed driver.

libvndksupport.so optional missing bundled
Platform support library for the fallback path

  • Path: lib/arm64-v8a/libvndksupport.so
  • Size: 65.3 KB
  • SHA1: a6f2d8498a2f...
  • MD5: aa5065cca669...
  • Source: VulkanShim2/vulkan_shim.cpp:1186-1201, VulkanShim2/vulkan_shim.cpp:742-750
  • Same fallback list as libbase.so. Its android_load_sphal_library is the call the shim stubs so a vendor load can be redirected.

libhardware.so optional missing bundled
Platform support library for the fallback path

  • Path: lib/arm64-v8a/libhardware.so
  • Size: 65.4 KB
  • SHA1: 555a6203cd7c...
  • MD5: 71e06a0726aa...
  • Source: VulkanShim2/vulkan_shim.cpp:1186-1201
  • Same fallback list as libbase.so, and a dependency of every packed driver.

GameIndex.yaml optional in repo bundled
Game database

  • Path: assets/GameIndex.yaml
  • Size: 1.8 MB
  • SHA1: fca26d4f7c1f...
  • MD5: 26ab10d8de93...
  • Source: aethersx2/pcsx2/GameDatabase.cpp:35, nethersx2-turnip v0.7 libemucore.so 0x2e35e4
  • Platforms: lakka, retroarch, retropie
  • 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.

cheats_ws.zip optional in repo bundled
Widescreen patch archive

  • Path: assets/cheats_ws.zip
  • Size: 1.6 MB
  • SHA1: 1caae7ddf0cb...
  • MD5: cc19970629fe...
  • Source: nethersx2-turnip v0.7 libemucore.so 0x80f8e4
  • 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.

cheats_ni.zip optional in repo bundled
No-interlacing patch archive

  • Path: assets/cheats_ni.zip
  • Size: 217.9 KB
  • SHA1: 31cbff66380f...
  • MD5: fb2a43dcea09...
  • Source: nethersx2-turnip v0.7 libemucore.so 0x80fa8c
  • Same form as cheats_ws.zip, read when no-interlacing patches are enabled, with the cheats_ni folder taking precedence.

Roboto-Regular.ttf required in repo bundled
Interface font

  • Path: assets/fonts/Roboto-Regular.ttf
  • Size: 298.4 KB
  • SHA1: 00d62fbdc8d5...
  • MD5: 86da78cb5957...
  • Source: nethersx2-turnip v0.7 libemucore.so 0xf6f27
  • Read as the standard font when the interface comes up. The load fails without it.

RobotoMono-Medium.ttf required in repo bundled
Fixed-width interface font

  • Path: assets/fonts/RobotoMono-Medium.ttf
  • Size: 84.8 KB
  • SHA1: 9056e59b69c6...
  • MD5: 8ad82b1dc550...
  • Source: nethersx2-turnip v0.7 libemucore.so 0xdb98d
  • Read for the fixed-width font. The load fails without it.

fa-solid-900.ttf required in repo bundled
Font Awesome icon font

  • Path: assets/fonts/fa-solid-900.ttf
  • Size: 199.7 KB
  • SHA1: 694b8a2445ff...
  • MD5: dffd9504fcb1...
  • Source: nethersx2-turnip v0.7 libemucore.so 0x11a567
  • Read for the interface icon glyphs. The load fails without it.

ffx_a.h optional in repo bundled
FidelityFX common header

  • Path: assets/shaders/common/ffx_a.h
  • Size: 157.7 KB
  • SHA1: 726370c10154...
  • MD5: 2c539b603dcb...
  • Source: nethersx2-turnip v0.7 libemucore.so 0x10cfb5
  • Prepended to the sharpening shader of both backends.

ffx_cas.h optional in repo bundled
FidelityFX CAS header

  • Path: assets/shaders/common/ffx_cas.h
  • Size: 62.0 KB
  • SHA1: a1d1a687577f...
  • MD5: f8a3d7f48ae1...
  • Source: nethersx2-turnip v0.7 libemucore.so 0xce5f7
  • Prepended to the sharpening shader of both backends.

fxaa.fx optional in repo bundled
FXAA shader source

  • Path: assets/shaders/common/fxaa.fx
  • Size: 19.0 KB
  • SHA1: 3ac5f68049ed...
  • MD5: 5cdeb2963c1b...
  • Source: nethersx2-turnip v0.7 libemucore.so 0xe4f55
  • Read by both backends when FXAA is enabled.

common_header.glsl optional in repo bundled
OpenGL shader preamble

  • Path: assets/shaders/opengl/common_header.glsl
  • Size: 1.8 KB
  • SHA1: 3f4759718703...
  • MD5: 1dcf4ca0cc95...
  • Source: nethersx2-turnip v0.7 libemucore.so 0x10cfcc
  • Prepended to every OpenGL program the renderer builds.

convert.glsl optional in repo bundled
OpenGL format conversion shader

  • Path: assets/shaders/opengl/convert.glsl
  • Size: 11.0 KB
  • SHA1: b2a059787ee2...
  • MD5: c3db4fcdd142...
  • Source: nethersx2-turnip v0.7 libemucore.so 0xb5bd7

present.glsl optional in repo bundled
OpenGL presentation shader

  • Path: assets/shaders/opengl/present.glsl
  • Size: 9.2 KB
  • SHA1: bf2688971a8e...
  • MD5: afbb9a89f17e...
  • Source: nethersx2-turnip v0.7 libemucore.so 0x11a06b

merge.glsl optional in repo bundled
OpenGL frame merge shader

  • Path: assets/shaders/opengl/merge.glsl
  • Size: 455 B
  • SHA1: d1a3c11a1273...
  • MD5: 2c4d70f62928...
  • Source: nethersx2-turnip v0.7 libemucore.so 0x117b1c

interlace.glsl optional in repo bundled
OpenGL deinterlacing shader

  • Path: assets/shaders/opengl/interlace.glsl
  • Size: 6.1 KB
  • SHA1: e74e58f530ab...
  • MD5: 0e537dd838a7...
  • Source: nethersx2-turnip v0.7 libemucore.so 0x103b11

shadeboost.glsl optional in repo bundled
OpenGL brightness and contrast shader

  • Path: assets/shaders/opengl/shadeboost.glsl
  • Size: 1.4 KB
  • SHA1: 8d8b8966afd2...
  • MD5: 3d1e2be521a6...
  • Source: nethersx2-turnip v0.7 libemucore.so 0x1007b6

cas.glsl optional in repo bundled
OpenGL sharpening shader

  • Path: assets/shaders/opengl/cas.glsl
  • Size: 2.4 KB
  • SHA1: 1a69a0fc522c...
  • MD5: f8a684763e24...
  • Source: nethersx2-turnip v0.7 libemucore.so 0x10967c

tfx_vgs.glsl optional in repo bundled
OpenGL texture function vertex and geometry shader

  • Path: assets/shaders/opengl/tfx_vgs.glsl
  • Size: 5.6 KB
  • SHA1: 0e9e98f766c9...
  • MD5: a97e9616f298...
  • Source: nethersx2-turnip v0.7 libemucore.so 0xd49ab

tfx_fs.glsl optional in repo bundled
OpenGL texture function fragment shader

  • Path: assets/shaders/opengl/tfx_fs.glsl
  • Size: 26.1 KB
  • SHA1: 00eb0418e7a2...
  • MD5: 24e39ca8f97a...
  • Source: nethersx2-turnip v0.7 libemucore.so 0x117b36

tfx.glsl optional in repo bundled
Vulkan texture function shader

  • Path: assets/shaders/vulkan/tfx.glsl
  • Size: 29.0 KB
  • SHA1: 1c3a966a42ce...
  • MD5: df60c4e6c569...
  • Source: nethersx2-turnip v0.7 libemucore.so 0xe14fc
  • This project's own bytes, neither the New nor the Old copy it also carries.

convert.glsl optional in repo bundled
Vulkan format conversion shader

  • Path: assets/shaders/vulkan/convert.glsl
  • Size: 9.2 KB
  • SHA1: aedc25c370bf...
  • MD5: f3aaf5697b06...
  • Source: nethersx2-turnip v0.7 libemucore.so 0xc3d36
  • This project's own bytes, neither the New nor the Old copy it also carries.

interlace.glsl optional in repo bundled
Vulkan deinterlacing shader

  • Path: assets/shaders/vulkan/interlace.glsl
  • Size: 7.6 KB
  • SHA1: 5a433c891e07...
  • MD5: 08bc6e44a6d8...
  • Source: nethersx2-turnip v0.7 libemucore.so 0xb86eb
  • This project's own bytes, neither the New nor the Old copy it also carries.

cas.glsl optional in repo bundled
Vulkan sharpening shader

  • Path: assets/shaders/vulkan/cas.glsl
  • Size: 2.6 KB
  • SHA1: 005cecf1a5e2...
  • MD5: deb7394a3118...
  • Source: nethersx2-turnip v0.7 libemucore.so 0xd4a2c
  • The New copy the project also carries, byte for byte.

present.glsl optional in repo bundled
Vulkan presentation shader

  • Path: assets/shaders/vulkan/present.glsl
  • Size: 8.0 KB
  • SHA1: 4871ee00b249...
  • MD5: 72626d625bb9...
  • Source: nethersx2-turnip v0.7 libemucore.so 0xd777a

merge.glsl optional in repo bundled
Vulkan frame merge shader

  • Path: assets/shaders/vulkan/merge.glsl
  • Size: 669 B
  • SHA1: b09de39d6459...
  • MD5: b776383d2160...
  • Source: nethersx2-turnip v0.7 libemucore.so 0xe8c36

shadeboost.glsl optional in repo bundled
Vulkan brightness and contrast shader

  • Path: assets/shaders/vulkan/shadeboost.glsl
  • Size: 1.7 KB
  • SHA1: 26b29f57685d...
  • MD5: 366b45b6c4e9...
  • Source: nethersx2-turnip v0.7 libemucore.so 0xde3c2

unlock.wav optional in repo bundled
Achievement unlock sound

  • Path: assets/sounds/achievements/unlock.wav
  • Size: 85.7 KB
  • SHA1: eb488a762176...
  • MD5: 4d035ee86f83...
  • Source: nethersx2-turnip v0.7 libemucore.so 0xceb85
  • Handed to playSoundAsync, which opens it from the package and plays it through MediaPlayer.

lbsubmit.wav optional in repo bundled
Leaderboard submission sound

  • Path: assets/sounds/achievements/lbsubmit.wav
  • Size: 80.2 KB
  • SHA1: 5ad1e110dcf0...
  • MD5: fa6a7030a9f2...
  • Source: nethersx2-turnip v0.7 libemucore.so 0xe1a29

message.wav optional in repo bundled
Achievement notification sound

  • Path: assets/sounds/achievements/message.wav
  • Size: 15.3 KB
  • SHA1: c54f04b63ac6...
  • MD5: d66b0bccd743...
  • Source: nethersx2-turnip v0.7 libemucore.so 0xfd47d

placeholder.png optional in repo bundled
Fallback interface texture

  • Path: assets/placeholder.png
  • Size: 2.7 KB
  • SHA1: c36292ab7e16...
  • MD5: 8f846541ccbf...
  • Source: nethersx2-turnip v0.7 libemucore.so 0x7dcbf4, nethersx2-turnip v0.7 libemucore.so 0x8238e0
  • Requested from the texture cache when a notification or a loading screen has no image of its own.

<region>.png optional in repo bundled
Game list region flag

  • Path: assets/icons/flags/NTSC-U.png
  • Source: nethersx2-turnip v0.7 classes.dex icons/flags/%s.png
  • Loaded as icons/flags/.png with the region string of the entry. Thirty are carried, seven NTSC and twenty-two PAL plus Other.

star-<rating>.png optional in repo bundled
Game list compatibility rating icon

  • Path: assets/icons/star-0.png
  • Source: nethersx2-turnip v0.7 classes.dex icons/star-%d.png
  • Loaded as icons/star-.png for ratings 0 to 5.

faq.html optional in repo bundled
Help page

  • Path: assets/faq.html
  • Size: 13.7 KB
  • SHA1: 9163d4a3d19b...
  • MD5: c2a64e0bcc40...
  • Source: nethersx2-turnip v0.7 classes.dex android_asset faq.html
  • Opened under the android_asset scheme in the built-in browser view.

3rdparty.html optional in repo bundled
Third party notices page

  • Path: assets/3rdparty.html
  • Size: 88.2 KB
  • SHA1: 7743bf1d7e6e...
  • MD5: fb4ff036f3e4...
  • Source: nethersx2-turnip v0.7 classes.dex android_asset 3rdparty.html
  • Opened under the android_asset scheme in the built-in browser view.

Generated on 2026-08-23T16:12:06Z