From 0b24356080b3b49d6b9c9f1f811a5bcccfcc58ef Mon Sep 17 00:00:00 2001 From: Ben Vanik Date: Mon, 14 Oct 2013 21:35:23 -0700 Subject: [PATCH] Skipping unknown form of PM4_EVENT_WRITE_SHD for now. --- src/xenia/gpu/ring_buffer_worker.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/xenia/gpu/ring_buffer_worker.cc b/src/xenia/gpu/ring_buffer_worker.cc index eb07e4543..d3c5487d8 100644 --- a/src/xenia/gpu/ring_buffer_worker.cc +++ b/src/xenia/gpu/ring_buffer_worker.cc @@ -115,7 +115,7 @@ void RingBufferWorker::ExecutePrimaryBuffer( end_ptr = (primary_buffer_ptr_ & ~0x1FFFFFFF) | (end_ptr & 0x1FFFFFFF); XELOGGPU("[%.8X] ExecutePrimaryBuffer(%dw -> %dw)", - start_index, end_index); + ptr, start_index, end_index); // Execute commands! PacketArgs args; @@ -326,7 +326,13 @@ uint32_t RingBufferWorker::ExecutePacket(PacketArgs& args) { uint32_t d0 = READ_AND_ADVANCE_PTR(); // 3? uint32_t d1 = READ_AND_ADVANCE_PTR(); // ptr uint32_t d2 = READ_AND_ADVANCE_PTR(); // value? - XESETUINT32BE(p + TRANSLATE_ADDR(d1), d2); + if (!(d1 & 0xC0000000)) { + XESETUINT32BE(p + TRANSLATE_ADDR(d1), d2); + } else { + // TODO(benvanik): read up on PM4_EVENT_WRITE_SHD. + // No clue. Maybe relative write based on a register base? + XELOGE("UNKNOWN FORM OF PM4_EVENT_WRITE_SHD"); + } } break;