- SceCpuForDriver: ksceKernelCpuIcacheInvalidateRange and
ksceKernelCpuIcacheAndL2WritebackInvalidateRange now call
invalidate_jit_cache() to properly invalidate dynarmic's JIT cache
- taiHEN: All loaded_modules accesses now protected by kernel.mutex
using scoped locks to avoid deadlocks with state->mutex and
export_nids_mutex (lock order: kernel.mutex -> export_nids_mutex -> state->mutex)
Implement the core taiHEN plugin framework as HLE in SceLibTaihen:
Hooks:
- taiHookFunctionExportForUser/ForKernel: inline hooks via substitute's
transform-dis for ARM/Thumb instruction relocation, with fallback to
import stub patching when inline hooking fails (FUNC_TOO_SHORT)
- taiHookFunctionImportForUser/ForKernel: import stub patching (12-byte
ARM stubs: movw/movt/bx)
- taiHookFunctionOffsetForUser/ForKernel: hook at module segment+offset
- taiHookRelease/ForKernel: restore original bytes/stubs, free trampoline
- Hook chaining with TAI_CONTINUE support via TaiHookUser structs
Injections:
- taiInjectAbs/ForKernel: arbitrary memory patching with save/restore
- taiInjectDataForUser/ForKernel: inject data at module segment+offset
- taiInjectRelease/ForKernel: restore original bytes
Module utils:
- taiGetModuleInfo/ForKernel: query module info by name
- module_get_offset: resolve segment+offset to address
- module_get_export_func: resolve NID to export address
Plugin loading:
- taiLoadKernelModule, taiLoadStartKernelModuleForUser,
taiLoadStartModuleForPidForUser: load plugin .skprx/.suprx files
- Config parsing: ux0:tai/config.txt format (*KERNEL, *TITLEID sections)
External dependency:
- Add Vita3K/substitute as git submodule (forked from comex/substitute,
LGPLv2.1+). Only the ARM transform-dis component is used for
instruction relocation in inline hooks.
Tested with 10 integration tests covering all implemented APIs.
Add Windows ARM64 build.
- Simplify vcpkg installation with `--triplet=<triplet>`.
- Remove useless `if` in the job `Compute git short SHA`.
- Rename macOS/Windows x86_64 artifacts.
- Disable Discord Rich Presence on Windows ARM64.
- Add flags to disable inclusion of timestamps in PCH files with clang-cl.
- Enable Visual Studio for ARM64 in CMake presets.
- Fix the Windows update script still using '0.2.0' when parsing version.
- external: Update ffmpeg-core
- Remove all Unicorn references from language files and project as it’s deprecated and unused.
- Update SPIRV-Cross to vulkan-sdk-1.4.321.
- Update YAML to latest master.
- Fix CMake minimum version requirement errors by ensuring minimum version 3.5.
* external: Update VulkanMemoryAllocator-Hpp to version v3.2.1
* external: Update capstone to version 5.0.6
* external: Update cubeb
* external: Update fmt to version 11.1.4
* external: Update googletest to version v1.16.0
* external: Update imgui to version v1.91.3
* external: Update imgui_club
* external: Update libfat16
* external: Update nativefiledialog-extended to version v1.2.1
* external: Update pugixml to version v1.15
* external: Update sdl to version 2.30.11
* external: Update spdlog to version v1.15.2
* external: Update stb
* external: Update vita-toolchain
* external: Update xxHash to version v0.8.3
* external: download MoltenVK when configuring build system
* external: add option to build OpenSSL on macOS
* external: build custom boost with specific arch on macOS
* cmake: unify mixed and wrong indentations with tabs
* vita3K/ci: set macOS minimun version with 11.0