diff --git a/Source/engine.cpp b/Source/engine.cpp index 9e61f27f1..4637ab927 100644 --- a/Source/engine.cpp +++ b/Source/engine.cpp @@ -187,10 +187,9 @@ void CelDecodeHdrOnly(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWidth, int Cel CelDrawDatOnly(pBuff, pRLEBytes + nDataStart, nDataSize, nWidth); } -void CelDecDatLightOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth) +void CelDecDatLightOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth, BYTE *tbl) { int w; - BYTE *tbl; /// ASSERT: assert(pDecodeTo != NULL); if (!pDecodeTo) @@ -205,7 +204,8 @@ void CelDecDatLightOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWi src = pRLEBytes; dst = pDecodeTo; - tbl = &pLightTbl[light_table_index * 256]; + if (!tbl) + tbl = &pLightTbl[light_table_index * 256]; w = nWidth; for (; src != &pRLEBytes[nDataSize]; dst -= BUFFER_WIDTH + w) { diff --git a/Source/engine.h b/Source/engine.h index 051e8f97d..d4c90f372 100644 --- a/Source/engine.h +++ b/Source/engine.h @@ -16,7 +16,7 @@ void CelDecodeOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth); void CelDecDatOnly(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWidth); void CelDrawHdrOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap); void CelDecodeHdrOnly(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap); -void CelDecDatLightOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth); +void CelDecDatLightOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth, BYTE *tbl = NULL); void CelDecDatLightTrans(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth); void CelDecodeLightOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth); void CelDecodeHdrLightOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap);