summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/citra_qt/debugger/graphics_cmdlists.cpp2
-rw-r--r--src/common/color.h18
-rw-r--r--src/video_core/debug_utils/debug_utils.cpp6
-rw-r--r--src/video_core/pica.h3
4 files changed, 27 insertions, 2 deletions
diff --git a/src/citra_qt/debugger/graphics_cmdlists.cpp b/src/citra_qt/debugger/graphics_cmdlists.cpp
index e51a4480f..35a3140b2 100644
--- a/src/citra_qt/debugger/graphics_cmdlists.cpp
+++ b/src/citra_qt/debugger/graphics_cmdlists.cpp
@@ -73,7 +73,7 @@ TextureInfoDockWidget::TextureInfoDockWidget(const Pica::DebugUtils::TextureInfo
73 format_choice->addItem(tr("RGB565")); 73 format_choice->addItem(tr("RGB565"));
74 format_choice->addItem(tr("RGBA4")); 74 format_choice->addItem(tr("RGBA4"));
75 format_choice->addItem(tr("IA8")); 75 format_choice->addItem(tr("IA8"));
76 format_choice->addItem(tr("UNK6")); 76 format_choice->addItem(tr("RG8"));
77 format_choice->addItem(tr("I8")); 77 format_choice->addItem(tr("I8"));
78 format_choice->addItem(tr("A8")); 78 format_choice->addItem(tr("A8"));
79 format_choice->addItem(tr("IA4")); 79 format_choice->addItem(tr("IA4"));
diff --git a/src/common/color.h b/src/common/color.h
index 9dafdca0c..eb199e308 100644
--- a/src/common/color.h
+++ b/src/common/color.h
@@ -69,6 +69,15 @@ inline const Math::Vec4<u8> DecodeRGB8(const u8* bytes) {
69} 69}
70 70
71/** 71/**
72 * Decode a color stored in RG8 (aka HILO8) format
73 * @param bytes Pointer to encoded source color
74 * @return Result color decoded as Math::Vec4<u8>
75 */
76inline const Math::Vec4<u8> DecodeRG8(const u8* bytes) {
77 return { bytes[1], bytes[0], 0, 255 };
78}
79
80/**
72 * Decode a color stored in RGB565 format 81 * Decode a color stored in RGB565 format
73 * @param bytes Pointer to encoded source color 82 * @param bytes Pointer to encoded source color
74 * @return Result color decoded as Math::Vec4<u8> 83 * @return Result color decoded as Math::Vec4<u8>
@@ -152,6 +161,15 @@ inline void EncodeRGB8(const Math::Vec4<u8>& color, u8* bytes) {
152} 161}
153 162
154/** 163/**
164 * Encode a color as RG8 (aka HILO8) format
165 * @param color Source color to encode
166 * @param bytes Destination pointer to store encoded color
167 */
168inline void EncodeRG8(const Math::Vec4<u8>& color, u8* bytes) {
169 bytes[1] = color.r();
170 bytes[0] = color.g();
171}
172/**
155 * Encode a color as RGB565 format 173 * Encode a color as RGB565 format
156 * @param color Source color to encode 174 * @param color Source color to encode
157 * @param bytes Destination pointer to store encoded color 175 * @param bytes Destination pointer to store encoded color
diff --git a/src/video_core/debug_utils/debug_utils.cpp b/src/video_core/debug_utils/debug_utils.cpp
index 21664aab6..8ad77f0c8 100644
--- a/src/video_core/debug_utils/debug_utils.cpp
+++ b/src/video_core/debug_utils/debug_utils.cpp
@@ -410,6 +410,12 @@ const Math::Vec4<u8> LookupTexture(const u8* source, int x, int y, const Texture
410 } 410 }
411 } 411 }
412 412
413 case Regs::TextureFormat::RG8:
414 {
415 auto res = Color::DecodeRG8(source + VideoCore::GetMortonOffset(x, y, 2));
416 return { res.r(), res.g(), 0, 255 };
417 }
418
413 case Regs::TextureFormat::I8: 419 case Regs::TextureFormat::I8:
414 { 420 {
415 const u8* source_ptr = source + VideoCore::GetMortonOffset(x, y, 1); 421 const u8* source_ptr = source + VideoCore::GetMortonOffset(x, y, 1);
diff --git a/src/video_core/pica.h b/src/video_core/pica.h
index 36916f862..58b924f9e 100644
--- a/src/video_core/pica.h
+++ b/src/video_core/pica.h
@@ -174,7 +174,7 @@ struct Regs {
174 RGB565 = 3, 174 RGB565 = 3,
175 RGBA4 = 4, 175 RGBA4 = 4,
176 IA8 = 5, 176 IA8 = 5,
177 177 RG8 = 6, ///< @note Also called HILO8 in 3DBrew.
178 I8 = 7, 178 I8 = 7,
179 A8 = 8, 179 A8 = 8,
180 IA4 = 9, 180 IA4 = 9,
@@ -215,6 +215,7 @@ struct Regs {
215 case TextureFormat::RGB565: 215 case TextureFormat::RGB565:
216 case TextureFormat::RGBA4: 216 case TextureFormat::RGBA4:
217 case TextureFormat::IA8: 217 case TextureFormat::IA8:
218 case TextureFormat::RG8:
218 return 4; 219 return 4;
219 220
220 case TextureFormat::I4: 221 case TextureFormat::I4: