diff --git a/runtime/CMakeLists.txt b/runtime/CMakeLists.txt index 5bd0a08f..afc44d7b 100644 --- a/runtime/CMakeLists.txt +++ b/runtime/CMakeLists.txt @@ -1097,7 +1097,6 @@ if(BUILD_TESTING) add_executable(ws_cull_margin_width_test tests/test_ws_cull_margin_width.c - src/ws_ui_group.c src/psx_video_timing.c src/gpu_timeline.c) target_include_directories(ws_cull_margin_width_test PRIVATE include src) @@ -1537,6 +1536,9 @@ if(BUILD_TESTING) add_executable(mod_resident_test tests/test_mod_resident.cpp + src/mod_immediate.c + src/host_overlay.c + src/func_override.c src/mod_resident.cpp src/mod_runtime.cpp src/mod_netplay.c diff --git a/runtime/tests/test_mod_resident.cpp b/runtime/tests/test_mod_resident.cpp index e8be7b65..dfec73f3 100644 --- a/runtime/tests/test_mod_resident.cpp +++ b/runtime/tests/test_mod_resident.cpp @@ -71,6 +71,21 @@ extern "C" void gpu_ws_tag_screen_mask_quad(uint32_t) {} extern "C" { uint64_t s_frame_count = 0; } static uint64_t cycles; extern "C" uint64_t psx_get_cycle_count(void) { return cycles; } +/* Link the real package override/immediate services, as mod_runtime_test does. + * Resident-resource tests do not execute guest functions or service devices. */ +extern "C" uint32_t psx_peek_word_untraced(uint32_t a) { return psx_read_word(a); } +extern "C" void psx_dispatch_call(struct CPUState*, uint32_t, uint32_t) {} +extern "C" { +uint64_t psx_cycle_count = 0; +uint64_t psx_next_service_cycle = 0; +int psx_in_device_service = 0; +int g_event_step_conservative = 0; +int g_ls_replay_active = 0; +uint32_t g_psx_cyc_batch = 0; +uint32_t g_psx_cyc_batch_limit = 0; +void psx_devices_service_to_now(void) {} +void psx_advance_cycles_slow(uint32_t amount) { psx_cycle_count += amount; } +} extern "C" void gpu_ws_tag_radial_screen_mask_quad(uint32_t, float) {} extern "C" void gpu_ws_tag_feedback_rect(uint32_t) {} extern "C" int psx_netplay_active(void) { return 0; }