summaryrefslogtreecommitdiff
path: root/src/citra_qt/debugger/graphics_framebuffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/citra_qt/debugger/graphics_framebuffer.cpp')
-rw-r--r--src/citra_qt/debugger/graphics_framebuffer.cpp28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/citra_qt/debugger/graphics_framebuffer.cpp b/src/citra_qt/debugger/graphics_framebuffer.cpp
index dd41c3880..7ef699f37 100644
--- a/src/citra_qt/debugger/graphics_framebuffer.cpp
+++ b/src/citra_qt/debugger/graphics_framebuffer.cpp
@@ -10,6 +10,7 @@
10#include <QPushButton> 10#include <QPushButton>
11#include <QSpinBox> 11#include <QSpinBox>
12 12
13#include "video_core/color.h"
13#include "video_core/pica.h" 14#include "video_core/pica.h"
14 15
15#include "graphics_framebuffer.hxx" 16#include "graphics_framebuffer.hxx"
@@ -157,7 +158,7 @@ void GraphicsFramebufferWidget::OnFramebufferAddressChanged(qint64 new_value)
157 } 158 }
158} 159}
159 160
160void GraphicsFramebufferWidget::OnFramebufferWidthChanged(int new_value) 161void GraphicsFramebufferWidget::OnFramebufferWidthChanged(unsigned int new_value)
161{ 162{
162 if (framebuffer_width != new_value) { 163 if (framebuffer_width != new_value) {
163 framebuffer_width = new_value; 164 framebuffer_width = new_value;
@@ -167,7 +168,7 @@ void GraphicsFramebufferWidget::OnFramebufferWidthChanged(int new_value)
167 } 168 }
168} 169}
169 170
170void GraphicsFramebufferWidget::OnFramebufferHeightChanged(int new_value) 171void GraphicsFramebufferWidget::OnFramebufferHeightChanged(unsigned int new_value)
171{ 172{
172 if (framebuffer_height != new_value) { 173 if (framebuffer_height != new_value) {
173 framebuffer_height = new_value; 174 framebuffer_height = new_value;
@@ -202,7 +203,8 @@ void GraphicsFramebufferWidget::OnUpdate()
202 framebuffer_address = framebuffer.GetColorBufferPhysicalAddress(); 203 framebuffer_address = framebuffer.GetColorBufferPhysicalAddress();
203 framebuffer_width = framebuffer.GetWidth(); 204 framebuffer_width = framebuffer.GetWidth();
204 framebuffer_height = framebuffer.GetHeight(); 205 framebuffer_height = framebuffer.GetHeight();
205 framebuffer_format = static_cast<Format>(framebuffer.color_format); 206 // TODO: It's unknown how this format is actually specified
207 framebuffer_format = Format::RGBA8;
206 208
207 break; 209 break;
208 } 210 }
@@ -225,8 +227,8 @@ void GraphicsFramebufferWidget::OnUpdate()
225 { 227 {
226 QImage decoded_image(framebuffer_width, framebuffer_height, QImage::Format_ARGB32); 228 QImage decoded_image(framebuffer_width, framebuffer_height, QImage::Format_ARGB32);
227 u32* color_buffer = (u32*)Memory::GetPointer(Pica::PAddrToVAddr(framebuffer_address)); 229 u32* color_buffer = (u32*)Memory::GetPointer(Pica::PAddrToVAddr(framebuffer_address));
228 for (unsigned y = 0; y < framebuffer_height; ++y) { 230 for (unsigned int y = 0; y < framebuffer_height; ++y) {
229 for (unsigned x = 0; x < framebuffer_width; ++x) { 231 for (unsigned int x = 0; x < framebuffer_width; ++x) {
230 u32 value = *(color_buffer + x + y * framebuffer_width); 232 u32 value = *(color_buffer + x + y * framebuffer_width);
231 233
232 decoded_image.setPixel(x, y, qRgba((value >> 16) & 0xFF, (value >> 8) & 0xFF, value & 0xFF, 255/*value >> 24*/)); 234 decoded_image.setPixel(x, y, qRgba((value >> 16) & 0xFF, (value >> 8) & 0xFF, value & 0xFF, 255/*value >> 24*/));
@@ -240,8 +242,8 @@ void GraphicsFramebufferWidget::OnUpdate()
240 { 242 {
241 QImage decoded_image(framebuffer_width, framebuffer_height, QImage::Format_ARGB32); 243 QImage decoded_image(framebuffer_width, framebuffer_height, QImage::Format_ARGB32);
242 u8* color_buffer = Memory::GetPointer(Pica::PAddrToVAddr(framebuffer_address)); 244 u8* color_buffer = Memory::GetPointer(Pica::PAddrToVAddr(framebuffer_address));
243 for (unsigned y = 0; y < framebuffer_height; ++y) { 245 for (unsigned int y = 0; y < framebuffer_height; ++y) {
244 for (unsigned x = 0; x < framebuffer_width; ++x) { 246 for (unsigned int x = 0; x < framebuffer_width; ++x) {
245 u8* pixel_pointer = color_buffer + x * 3 + y * 3 * framebuffer_width; 247 u8* pixel_pointer = color_buffer + x * 3 + y * 3 * framebuffer_width;
246 248
247 decoded_image.setPixel(x, y, qRgba(pixel_pointer[0], pixel_pointer[1], pixel_pointer[2], 255/*value >> 24*/)); 249 decoded_image.setPixel(x, y, qRgba(pixel_pointer[0], pixel_pointer[1], pixel_pointer[2], 255/*value >> 24*/));
@@ -255,13 +257,13 @@ void GraphicsFramebufferWidget::OnUpdate()
255 { 257 {
256 QImage decoded_image(framebuffer_width, framebuffer_height, QImage::Format_ARGB32); 258 QImage decoded_image(framebuffer_width, framebuffer_height, QImage::Format_ARGB32);
257 u32* color_buffer = (u32*)Memory::GetPointer(Pica::PAddrToVAddr(framebuffer_address)); 259 u32* color_buffer = (u32*)Memory::GetPointer(Pica::PAddrToVAddr(framebuffer_address));
258 for (unsigned y = 0; y < framebuffer_height; ++y) { 260 for (unsigned int y = 0; y < framebuffer_height; ++y) {
259 for (unsigned x = 0; x < framebuffer_width; ++x) { 261 for (unsigned int x = 0; x < framebuffer_width; ++x) {
260 u16 value = *(u16*)(((u8*)color_buffer) + x * 2 + y * framebuffer_width * 2); 262 u16 value = *(u16*)(((u8*)color_buffer) + x * 2 + y * framebuffer_width * 2);
261 u8 r = (value >> 11) & 0x1F; 263 u8 r = Color::Convert5To8((value >> 11) & 0x1F);
262 u8 g = (value >> 6) & 0x1F; 264 u8 g = Color::Convert5To8((value >> 6) & 0x1F);
263 u8 b = (value >> 1) & 0x1F; 265 u8 b = Color::Convert5To8((value >> 1) & 0x1F);
264 u8 a = value & 1; 266 u8 a = Color::Convert1To8(value & 1);
265 267
266 decoded_image.setPixel(x, y, qRgba(r, g, b, 255/*a*/)); 268 decoded_image.setPixel(x, y, qRgba(r, g, b, 255/*a*/));
267 } 269 }