(CHR): use overlay alpha channel.

This commit is contained in:
morkt 2017-01-19 23:46:23 +04:00
parent 6b2aed909e
commit f01f4909b4
2 changed files with 4 additions and 5 deletions

View File

@ -133,8 +133,9 @@ namespace GameRes.Formats.GameSystem
int stride = (int)Info.Width * 4; int stride = (int)Info.Width * 4;
var pixels = new byte[stride * (int)Info.Height]; var pixels = new byte[stride * (int)Info.Height];
m_input.Read (pixels, 0, pixels.Length); m_input.Read (pixels, 0, pixels.Length);
return ImageData.CreateFlipped (Info, PixelFormats.Bgr32, null, pixels, stride); for (int i = 3; i < pixels.Length; i += 4)
pixels[i] = (byte)(pixels[i] * 0xFF / 0x80);
return ImageData.CreateFlipped (Info, PixelFormats.Bgra32, null, pixels, stride);
} }
} }
} }

View File

@ -181,9 +181,7 @@ namespace GameRes.Formats.GameSystem
{ {
m_input.Read (m_output, dst, 3); m_input.Read (m_output, dst, 3);
int a = m_input.ReadByte(); int a = m_input.ReadByte();
if (a != 0x80) m_output[dst+3] = (byte)(a * 0xFF / 0x80);
throw new InvalidFormatException ("Error reading overlay frame");
m_output[dst+3] = 0xFF;
dst += 4; dst += 4;
} }
output += m_stride; output += m_stride;