Files
Ranieri 75d729ce40 Feature/iop emulator (#244)
* refactor: from guest  threads to EE scheduler

* feat: bad wip mpeg fix for code veronica

* feat: cheap copy from host
feat: small perf o vsync tick

* feat: added EE clock Hz
fix: fix MPEG out of sync with new EE refactor

* fix: fix lotr tests

* fix: fix cri dtx loading
fix: fix wrong mmi instruction translation
fix: fix thread info params
feat: added EE  timers decoder and consumer
feat: split SFI and IOP memory to prevent collision and overrides

* feat: revert wrong changes

* refactor: change GS architecture

* feat: IOP emulator
refactor: codegen to catch callbacks on mips code
feat: added a lot of entries or IOP emulator

* feat: analyzer resolve the complete constant-producing sequence with five-instruction backward scan stopped at LUI and therefore

* feat: remove recompiled version of GetRomName
refactor: split IOP emulator logic
feat: added more HLE IOP modules
feat: added ps2_path

* eat: enhance ELF parser with improved callable entry detection and control flow analysis

* feat: update memory hint handling and enhance entry point discovery logic

* feat: add SET_GPR_ZE32 macro for zero-extending loads with unsigned semantics

* refactor: Refactor PS2 IOP Host Adapter and Memory Management
feat: Added PS2Vfs for virtual file system operations, including file opening, reading, writing, and path resolution.
feat: Improve VIF1 data processing to handle GIF image packets more efficiently.

* feat: added a lot of tests

* fix: fix texture caching
feat: wip multi version on dbcman

* feat: remove LLE IOPs
2026-09-19 21:31:44 -03:00

106 lines
2.8 KiB
CMake

cmake_minimum_required(VERSION 3.21)
project(ps2xTest LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(CTest)
if(BUILD_TESTING)
add_subdirectory(gs_cache)
endif()
# Static library with test logic (no main), used by ps2xStudio
add_library(ps2_test_function_table OBJECT
src/test_function_table.cpp
)
target_include_directories(ps2_test_function_table PRIVATE
${CMAKE_SOURCE_DIR}/ps2xRuntime/include
${CMAKE_SOURCE_DIR}/ps2xIOP/include
)
add_library(ps2_test_lib STATIC
src/code_generator_tests.cpp
src/r5900_decoder_tests.cpp
src/elf_analyzer_tests.cpp
src/pad_input_tests.cpp
src/ps2_runtime_io_tests.cpp
src/ps2_runtime_kernel_tests.cpp
src/ps2_runtime_interrupt_tests.cpp
src/ps2_memory_tests.cpp
src/ps2_vu1_tests.cpp
src/ps2_vu_tests.cpp
src/ps2_gs_tests.cpp
src/ps2_iop_tests.cpp
src/ps2_sif_rpc_tests.cpp
src/ps2_sif_dma_tests.cpp
src/ps2_recompiler_tests.cpp
src/ps2_runtime_expansion_tests.cpp
)
target_include_directories(ps2_test_lib PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/ps2xRecomp/include
${CMAKE_SOURCE_DIR}/ps2xAnalyzer/include
${CMAKE_SOURCE_DIR}/ps2xRuntime/include
${CMAKE_SOURCE_DIR}/ps2xRuntime/src/lib
)
target_link_libraries(ps2_test_lib PRIVATE
ps2_recomp_lib
ps2_analyzer_lib
ps2_runtime
ps2_iop
)
if(UNIX AND NOT APPLE)
target_link_libraries(ps2_test_lib PRIVATE ${CMAKE_DL_LIBS})
endif()
add_executable(ps2x_tests
src/main.cpp
$<TARGET_OBJECTS:ps2_test_function_table>
)
option(PRINT_GENERATED_CODE "Print generated code in tests" OFF)
if(PRINT_GENERATED_CODE)
target_compile_definitions(ps2x_tests PRIVATE PRINT_GENERATED_CODE)
target_compile_definitions(ps2_test_lib PRIVATE PRINT_GENERATED_CODE)
endif()
target_include_directories(ps2x_tests PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/ps2xRecomp/include
${CMAKE_SOURCE_DIR}/ps2xAnalyzer/include
${CMAKE_SOURCE_DIR}/ps2xRuntime/include
)
target_link_libraries(ps2x_tests PRIVATE
ps2_test_lib
ps2_recomp_lib
ps2_analyzer_lib
ps2_runtime
)
# VU/GS tests intentionally instantiate large interpreter state.
# Windows executables default to a much smaller stack than Linux, and
# sanitizer/debug instrumentation can push these test frames over 1 MiB.
if(MSVC)
target_link_options(ps2x_tests PRIVATE "/STACK:8388608")
elseif(MINGW)
target_link_options(ps2x_tests PRIVATE "--stack,8388608")
endif()
if(COMMAND ps2x_stage_ffmpeg_runtime_dlls)
ps2x_stage_ffmpeg_runtime_dlls(ps2x_tests)
endif()
include("${CMAKE_SOURCE_DIR}/ps2xRuntime/cmake/ReleaseMode.cmake")
if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
EnableFastReleaseMode(ps2_test_lib)
EnableFastReleaseMode(ps2x_tests)
endif()