summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPatrick Martin <thehairyrock@gmail.com>2015-05-14 22:39:46 +0200
committerYuri Kunde Schlesner <yuriks@yuriks.net>2015-08-16 07:21:50 +0200
commit5b65d9531043e2c99e33676b4014fef6b2a51382 (patch)
tree6fd5268731fa1a549912b7b18015880d92a8b866 /src
parentMerge pull request #1017 from LittleWhite-tb/qt-recent-files (diff)
downloadyuzu-5b65d9531043e2c99e33676b4014fef6b2a51382.tar
yuzu-5b65d9531043e2c99e33676b4014fef6b2a51382.tar.gz
yuzu-5b65d9531043e2c99e33676b4014fef6b2a51382.tar.bz2
yuzu-5b65d9531043e2c99e33676b4014fef6b2a51382.tar.lz
yuzu-5b65d9531043e2c99e33676b4014fef6b2a51382.tar.xz
yuzu-5b65d9531043e2c99e33676b4014fef6b2a51382.tar.zst
yuzu-5b65d9531043e2c99e33676b4014fef6b2a51382.zip
Diffstat (limited to 'src')
-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
3 files changed, 26 insertions, 1 deletions
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) {
}
/**
+ * Decode a color stored in RG8 (aka HILO8) format
+ * @param bytes Pointer to encoded source color
+ * @return Result color decoded as Math::Vec4<u8>
+ */
+inline const Math::Vec4<u8> DecodeRG8(const u8* bytes) {
+ return { bytes[1], bytes[0], 0, 255 };
+}
+
+/**
* Decode a color stored in RGB565 format
* @param bytes Pointer to encoded source color
* @return Result color decoded as Math::Vec4<u8>
@@ -152,6 +161,15 @@ inline void EncodeRGB8(const Math::Vec4<u8>& color, u8* bytes) {
}
/**
+ * Encode a color as RG8 (aka HILO8) format
+ * @param color Source color to encode
+ * @param bytes Destination pointer to store encoded color
+ */
+inline void EncodeRG8(const Math::Vec4<u8>& color, u8* bytes) {
+ bytes[1] = color.r();
+ bytes[0] = color.g();
+}
+/**
* Encode a color as RGB565 format
* @param color Source color to encode
* @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 572b4fd62..6d6b65286 100644
--- a/src/video_core/debug_utils/debug_utils.cpp
+++ b/src/video_core/debug_utils/debug_utils.cpp
@@ -359,6 +359,12 @@ const Math::Vec4<u8> LookupTexture(const u8* source, int x, int y, const Texture
}
}
+ case Regs::TextureFormat::RG8:
+ {
+ auto res = Color::DecodeRG8(source + VideoCore::GetMortonOffset(x, y, 2));
+ return { res.r(), res.g(), 0, 255 };
+ }
+
case Regs::TextureFormat::I8:
{
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 6ce90f95a..a5ec5ee9f 100644
--- a/src/video_core/pica.h
+++ b/src/video_core/pica.h
@@ -163,7 +163,7 @@ struct Regs {
RGB565 = 3,
RGBA4 = 4,
IA8 = 5,
-
+ RG8 = 6, ///< @note Also called HILO8 in 3DBrew.
I8 = 7,
A8 = 8,
IA4 = 9,
@@ -204,6 +204,7 @@ struct Regs {
case TextureFormat::RGB565:
case TextureFormat::RGBA4:
case TextureFormat::IA8:
+ case TextureFormat::RG8:
return 4;
case TextureFormat::I4: