Przeglądaj źródła

GSP: Updated RegisterInterruptRelayQueue to return expected magic number.

bunnei 11 lat temu
rodzic
commit
3e1654eaa8
1 zmienionych plików z 4 dodań i 1 usunięć
  1. 4 1
      src/core/hle/service/gsp_gpu.cpp

+ 4 - 1
src/core/hle/service/gsp_gpu.cpp

@@ -162,7 +162,8 @@ static void RegisterInterruptRelayQueue(Service::Interface* self) {
 
 
     _assert_msg_(GSP, (g_interrupt_event != 0), "handle is not valid!");
     _assert_msg_(GSP, (g_interrupt_event != 0), "handle is not valid!");
 
 
-    cmd_buff[2] = g_thread_id++; // ThreadID
+    cmd_buff[1] = 0x2A07; // Value verified by 3dmoo team, purpose unknown, but needed for GSP init
+    cmd_buff[2] = g_thread_id++; // Thread ID
     cmd_buff[4] = g_shared_memory; // GSP shared memory
     cmd_buff[4] = g_shared_memory; // GSP shared memory
 
 
     Kernel::SignalEvent(g_interrupt_event); // TODO(bunnei): Is this correct?
     Kernel::SignalEvent(g_interrupt_event); // TODO(bunnei): Is this correct?
@@ -305,6 +306,8 @@ static void ExecuteCommand(const Command& command, u32 thread_id) {
 /// This triggers handling of the GX command written to the command buffer in shared memory.
 /// This triggers handling of the GX command written to the command buffer in shared memory.
 static void TriggerCmdReqQueue(Service::Interface* self) {
 static void TriggerCmdReqQueue(Service::Interface* self) {
 
 
+    DEBUG_LOG(GSP, "called");
+
     // Iterate through each thread's command queue...
     // Iterate through each thread's command queue...
     for (unsigned thread_id = 0; thread_id < 0x4; ++thread_id) {
     for (unsigned thread_id = 0; thread_id < 0x4; ++thread_id) {
         CommandBuffer* command_buffer = (CommandBuffer*)GetCommandBuffer(thread_id);
         CommandBuffer* command_buffer = (CommandBuffer*)GetCommandBuffer(thread_id);