diff --git a/src/xenia/gpu/command_processor.cc b/src/xenia/gpu/command_processor.cc index b52a46d7d..cac3a14a2 100644 --- a/src/xenia/gpu/command_processor.cc +++ b/src/xenia/gpu/command_processor.cc @@ -327,11 +327,15 @@ void CommandProcessor::CaptureUiDrawForRE( if (!q) { break; } - uint32_t w0 = be_u32(q), w1 = be_u32(q + 4); - float f0, f1; + // Three floats, not two: attribute 0 of a UI quad is k_32_32_32_FLOAT, + // so the stream carries a Z per vertex — which is the game's own layer + // key if it has one, and the whole question this capture is asked. + uint32_t w0 = be_u32(q), w1 = be_u32(q + 4), w2 = be_u32(q + 8); + float f0, f1, f2; std::memcpy(&f0, &w0, 4); std::memcpy(&f1, &w1, 4); - ui_out << fmt::format(" [{:08X},{:08X}={:.2f},{:.2f}]", w0, w1, f0, f1); + std::memcpy(&f2, &w2, 4); + ui_out << fmt::format(" [{:.2f},{:.2f},z={:.5f}]", f0, f1, f2); } } }