Browse Source

Merge pull request #866 from AJenbo/CelDecodeHdrLightTrans

Clean up CelDrawHdrLightRed
pull/88/head
Robin Eklind 7 years ago committed by GitHub
parent
commit
aefddd13d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 26
      Source/engine.cpp

26
Source/engine.cpp

@ -701,8 +701,8 @@ void CelDecodeHdrLightTrans(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWidth, i
*/ */
void CelDrawHdrLightRed(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap, char light) void CelDrawHdrLightRed(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap, char light)
{ {
int w, hdr, idx, nDataSize, v1; int w, idx, nDataStart, nDataCap, nDataSize;
BYTE *src, *dst, *tbl, *pRLEBytes; BYTE *src, *dst, *tbl;
DWORD *pFrameTable; DWORD *pFrameTable;
/// ASSERT: assert(gpBuffer); /// ASSERT: assert(gpBuffer);
@ -712,22 +712,24 @@ void CelDrawHdrLightRed(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, in
if (!pCelBuff) if (!pCelBuff)
return; return;
pFrameTable = (DWORD *)&pCelBuff[4 * nCel]; pFrameTable = (DWORD *)pCelBuff;
pRLEBytes = &pCelBuff[pFrameTable[0]]; src = &pCelBuff[pFrameTable[nCel]];
hdr = *(WORD *)&pRLEBytes[CelSkip]; nDataStart = *(WORD *)&src[CelSkip];
if (!hdr) if (!nDataStart)
return; return;
nDataSize = pFrameTable[nCel + 1] - pFrameTable[nCel];
if (CelCap == 8) if (CelCap == 8)
v1 = 0; nDataCap = 0;
else else
v1 = *(WORD *)&pRLEBytes[CelCap]; nDataCap = *(WORD *)&src[CelCap];
if (v1) if (nDataCap)
nDataSize = v1 - hdr; nDataSize = nDataCap - nDataStart;
else else
nDataSize = pFrameTable[1] - pFrameTable[0] - hdr; nDataSize -= nDataStart;
src = &pRLEBytes[hdr]; src += nDataStart;
dst = &gpBuffer[sx + screen_y_times_768[sy - 16 * CelSkip]]; dst = &gpBuffer[sx + screen_y_times_768[sy - 16 * CelSkip]];
idx = light4flag ? 1024 : 4096; idx = light4flag ? 1024 : 4096;

Loading…
Cancel
Save