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.
- 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
This commit creates the first library of the host OS abstraction
layer to access native OS dialogs using a more flexible C++ API
and implements file browser dialogs using nativefiledialog-extended
so that XDG desktop portals can be used to spawn these dialogs
in Linux.
* cmake: Add NOMINMAX globally to avoid Windows compilation issues with std::min/std::max
* main/net: add missing include files
* rtc: Remove convert_filetime/convert_timespec functions as they have been replaced with _wstat/stat
* external: Update better-enums to tag "0.11.3"
* external: Update CLI11 to tag "v1.9.1"
* external: Update elfio to tag "Release_3.8"
* external: Update glad to tag "0.1.34"
* external: Update googletest to tag "release-1.10.0"
* external: Update imgui to tag "v1.80"
* external: Update imgui_club
* external: Update miniz to tag "2.1.0"
* external: Update pugixml to tag "v1.11.4"
* external: Update spdlog to tag "v1.8.2"
* external: Update stb
* external: Update yaml-cpp to tag "yaml-cpp-0.6.3"
* external: Switch to vitasdk/vita-toolchain
* external: Refactor xxHash integration
format: run clang format.
small refactor firmware install dialog
small refactor for game install dialog.
button on setting dialog for download last firmware if it is missing.
fix popup failed installation with correct typo
stub savedatadialogstatus
* np/trophy: Add TRP parser
* np/profile: Add profile manager
* np: Make init/deinit
* modules/SceNpManager: Implement Init, Termination, and GetID
* np: Use second node for parsing profile
* util: Add byte swap
* np/trp: Use callbacks for read/write
* np/trophy: Handling context creation
* modules/SceNpTrophy: Implement Init/Term/ContextCreation
* np/trophy: Make trophy context reusable in vector
* modules/SceNpTrophy: Implement handle functions and destroy context
* np/trophy/trp_parser: Add search file function
* modules/SceNpTrophy: Implement get game and trophy icons
* external: Add pugixml
* np/trophy/trp_loader: Fix name comparision and get entry data
* np/trophy/context: Implement load/save trophy state
* modules/SceNpTrophy: Implement GetTrophyUnlockState
* np/trophy: Add trophy description read and unlock
* modules/SceNpTrophy: Implement UnlockTrophy
No saving yet, for debugging
* np/trophy/context: Save when unlock trophy and accept custom language
* gui: Add trophy unlock window
* emulator: Draw trophies unlock window
* gui/trophy_unlock: Auto resize trophy dialog by height
* np: Remove multi-profile
* format: Run clang-format
* gui/trophy: Make GUI size easier to be configure
* i
* will
* adjust change 1
* make
* a jojo reference
* 120963
* lvl2
* gggggggggggggg
* nice
* good now
* name trophy in unlocked
* np/context: Store a reference of IO instead of pointer
* external: Add newline
* change search file return to int32_t
* Update trp_parser.h
* Update init.cpp
* module: Implement vargs and printf functions
- Source code of printf is here: https://github.com/mpaland/printf, modify for vita3k usage
* [module] Pass layout state as argument rather than tuple
* module: Get rid of state array and don't continue layout if meet varargs
* module/test: Readjust test as requests and add test for vargs
* module: Remove unneccesary thin function is_arg_vargs
* module: Add newline