From 03494c6b888a97b875b4986bafb9e2f39229d50e Mon Sep 17 00:00:00 2001 From: Ben Vanik Date: Wed, 25 Sep 2013 00:46:29 -0700 Subject: [PATCH] Stubbing methods and cleanup. --- src/xenia/gpu/xenos/sources.gypi | 1 + .../modules/xboxkrnl/xboxkrnl_threading.cc | 7 +-- .../kernel/modules/xboxkrnl/xboxkrnl_video.cc | 44 ++++++++++++++++++- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/xenia/gpu/xenos/sources.gypi b/src/xenia/gpu/xenos/sources.gypi index b0bc17396..af1cfd299 100644 --- a/src/xenia/gpu/xenos/sources.gypi +++ b/src/xenia/gpu/xenos/sources.gypi @@ -2,6 +2,7 @@ { 'sources': [ 'packets.h', + 'register_table.inc', 'registers.cc', 'registers.h', ], diff --git a/src/xenia/kernel/modules/xboxkrnl/xboxkrnl_threading.cc b/src/xenia/kernel/modules/xboxkrnl/xboxkrnl_threading.cc index 04347c5b2..2bd2fdbf9 100644 --- a/src/xenia/kernel/modules/xboxkrnl/xboxkrnl_threading.cc +++ b/src/xenia/kernel/modules/xboxkrnl/xboxkrnl_threading.cc @@ -141,9 +141,6 @@ uint32_t xeKeGetCurrentProcessType() { // DWORD - XELOGD( - "KeGetCurrentProcessType()"); - return X_PROCTYPE_USER; } @@ -329,7 +326,7 @@ SHIM_CALL KeSetEvent_shim( uint32_t wait = SHIM_GET_ARG_32(2); XELOGD( - "KeSetEvent(%.4X, %.4X, %.4X)", + "KeSetEvent(%.8X, %.8X, %.8X)", event_ref, increment, wait); void* event_ptr = SHIM_MEM_ADDR(event_ref); @@ -358,7 +355,7 @@ SHIM_CALL KeResetEvent_shim( uint32_t event_ref = SHIM_GET_ARG_32(0); XELOGD( - "KeResetEvent(%.4X)", + "KeResetEvent(%.8X)", event_ref); void* event_ptr = SHIM_MEM_ADDR(event_ref); diff --git a/src/xenia/kernel/modules/xboxkrnl/xboxkrnl_video.cc b/src/xenia/kernel/modules/xboxkrnl/xboxkrnl_video.cc index 4534ad8d0..bd627d2cd 100644 --- a/src/xenia/kernel/modules/xboxkrnl/xboxkrnl_video.cc +++ b/src/xenia/kernel/modules/xboxkrnl/xboxkrnl_video.cc @@ -259,8 +259,28 @@ SHIM_CALL VdEnableRingBufferRPtrWriteBack_shim( } -// VdSetSystemCommandBufferGpuIdentifierAddress -// r3 = ? +void xeVdSetSystemCommandBufferGpuIdentifierAddress(uint32_t unk) { + KernelState* state = shared_kernel_state_; + XEASSERTNOTNULL(state); + GraphicsSystem* gs = state->processor()->graphics_system().get(); + if (!gs) { + return; + } + + // r3 = 0x2B10(d3d?) + 8 +} + + +SHIM_CALL VdSetSystemCommandBufferGpuIdentifierAddress_shim( + xe_ppc_state_t* ppc_state, KernelState* state) { + uint32_t unk = SHIM_GET_ARG_32(0); + + XELOGD( + "VdSetSystemCommandBufferGpuIdentifierAddress(%.4X)", + unk); + + xeVdSetSystemCommandBufferGpuIdentifierAddress(unk); +} // VdVerifyMEInitCommand @@ -275,6 +295,23 @@ SHIM_CALL VdEnableRingBufferRPtrWriteBack_shim( // callbacks get 0, r3, r4 +SHIM_CALL VdRetrainEDRAM_shim( + xe_ppc_state_t* ppc_state, KernelState* state) { + uint32_t unk0 = SHIM_GET_ARG_32(0); + uint32_t unk1 = SHIM_GET_ARG_32(1); + uint32_t unk2 = SHIM_GET_ARG_32(2); + uint32_t unk3 = SHIM_GET_ARG_32(3); + uint32_t unk4 = SHIM_GET_ARG_32(4); + uint32_t unk5 = SHIM_GET_ARG_32(5); + + XELOGD( + "VdRetrainEDRAM(%.4X, %.4X, %.4X, %.4X, %.4X, %.4X)", + unk0, unk1, unk2, unk3, unk4, unk5); + + SHIM_SET_RETURN(0); +} + + } // namespace xboxkrnl } // namespace kernel } // namespace xe @@ -289,6 +326,9 @@ void xe::kernel::xboxkrnl::RegisterVideoExports( SHIM_SET_MAPPING("xboxkrnl.exe", VdSetGraphicsInterruptCallback, state); SHIM_SET_MAPPING("xboxkrnl.exe", VdInitializeRingBuffer, state); SHIM_SET_MAPPING("xboxkrnl.exe", VdEnableRingBufferRPtrWriteBack, state); + SHIM_SET_MAPPING("xboxkrnl.exe", + VdSetSystemCommandBufferGpuIdentifierAddress, state); + SHIM_SET_MAPPING("xboxkrnl.exe", VdRetrainEDRAM, state); xe_memory_ref memory = state->memory(); uint8_t* mem = xe_memory_addr(memory);