diff --git a/Source/engine.cpp b/Source/engine.cpp index 7956095c0..e7577b3b9 100644 --- a/Source/engine.cpp +++ b/Source/engine.cpp @@ -163,7 +163,7 @@ void __fastcall CelDecDatOnly(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWidth) */ void __fastcall CelDrawHdrOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap) { - int v1, v2, nDataSize; + int nDataStart, nDataCap, nDataSize; BYTE *pRLEBytes; DWORD *pFrameTable; @@ -176,25 +176,24 @@ void __fastcall CelDrawHdrOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWi pFrameTable = (DWORD *)pCelBuff; pRLEBytes = &pCelBuff[pFrameTable[nCel]]; - v1 = *(WORD *)&pRLEBytes[CelSkip]; - - if (!v1) + nDataStart = *(WORD *)&pRLEBytes[CelSkip]; + if (!nDataStart) return; nDataSize = pFrameTable[nCel + 1] - pFrameTable[nCel]; if (CelCap == 8) - v2 = 0; + nDataCap = 0; else - v2 = *(WORD *)&pRLEBytes[CelCap]; - if (v2) - nDataSize = v2 - v1; + nDataCap = *(WORD *)&pRLEBytes[CelCap]; + if (nDataCap) + nDataSize = nDataCap - nDataStart; else - nDataSize -= v1; + nDataSize -= nDataStart; CelDrawDatOnly( &gpBuffer[sx + screen_y_times_768[sy - 16 * CelSkip]], - &pRLEBytes[v1], + pRLEBytes + nDataStart, nDataSize, nWidth); } @@ -205,7 +204,7 @@ void __fastcall CelDrawHdrOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWi */ void __fastcall CelDecodeHdrOnly(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap) { - int v1, v2, nDataSize; + int nDataStart, nDataCap, nDataSize; BYTE *pRLEBytes; DWORD *pFrameTable; @@ -218,23 +217,22 @@ void __fastcall CelDecodeHdrOnly(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWid pFrameTable = (DWORD *)pCelBuff; pRLEBytes = &pCelBuff[pFrameTable[nCel]]; - v1 = *(WORD *)&pRLEBytes[CelSkip]; - - if (!v1) + nDataStart = *(WORD *)&pRLEBytes[CelSkip]; + if (!nDataStart) return; nDataSize = pFrameTable[nCel + 1] - pFrameTable[nCel]; if (CelCap == 8) - v2 = 0; + nDataCap = 0; else - v2 = *(WORD *)&pRLEBytes[CelCap]; - if (v2) - nDataSize = v2 - v1; + nDataCap = *(WORD *)&pRLEBytes[CelCap]; + if (nDataCap) + nDataSize = nDataCap - nDataStart; else - nDataSize -= v1; + nDataSize -= nDataStart; - CelDrawDatOnly(pBuff, &pRLEBytes[v1], nDataSize, nWidth); + CelDrawDatOnly(pBuff, pRLEBytes + nDataStart, nDataSize, nWidth); } void __fastcall CelDecDatLightOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth) @@ -611,8 +609,8 @@ void __fastcall CelDecodeLightOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int */ void __fastcall CelDecodeHdrLightOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap) { - int hdr, nDataSize, v1, v2; - BYTE *pRLEBytes, *pDecodeTo, *v9; + int nDataStart, nDataCap, nDataSize; + BYTE *pRLEBytes, *pDecodeTo; DWORD *pFrameTable; /// ASSERT: assert(gpBuffer); @@ -622,23 +620,24 @@ void __fastcall CelDecodeHdrLightOnly(int sx, int sy, BYTE *pCelBuff, int nCel, if (!pCelBuff) return; - pFrameTable = (DWORD *)&pCelBuff[4 * nCel]; - v9 = &pCelBuff[pFrameTable[0]]; - hdr = *(WORD *)&v9[CelSkip]; - if (!hdr) + pFrameTable = (DWORD *)pCelBuff; + pRLEBytes = &pCelBuff[pFrameTable[nCel]]; + nDataStart = *(WORD *)&pRLEBytes[CelSkip]; + if (!nDataStart) return; - v1 = pFrameTable[1] - pFrameTable[0]; + nDataSize = pFrameTable[nCel + 1] - pFrameTable[nCel]; + if (CelCap == 8) - v2 = 0; + nDataCap = 0; else - v2 = *(WORD *)&v9[CelCap]; - if (v2) - nDataSize = v2 - hdr; + nDataCap = *(WORD *)&pRLEBytes[CelCap]; + if (nDataCap) + nDataSize = nDataCap - nDataStart; else - nDataSize = v1 - hdr; + nDataSize -= nDataStart; - pRLEBytes = &v9[hdr]; + pRLEBytes += nDataStart; pDecodeTo = &gpBuffer[sx + screen_y_times_768[sy - 16 * CelSkip]]; if (light_table_index) @@ -654,8 +653,8 @@ void __fastcall CelDecodeHdrLightOnly(int sx, int sy, BYTE *pCelBuff, int nCel, */ void __fastcall CelDecodeHdrLightTrans(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap) { - int hdr, nDataSize, v1, v2; - BYTE *pRLEBytes, *v9; + int nDataStart, nDataCap, nDataSize; + BYTE *pRLEBytes; DWORD *pFrameTable; /// ASSERT: assert(pCelBuff != NULL); @@ -665,23 +664,24 @@ void __fastcall CelDecodeHdrLightTrans(BYTE *pBuff, BYTE *pCelBuff, int nCel, in if (!pBuff) return; - pFrameTable = (DWORD *)&pCelBuff[4 * nCel]; - v9 = &pCelBuff[pFrameTable[0]]; - hdr = *(WORD *)&v9[CelSkip]; - if (!hdr) + pFrameTable = (DWORD *)pCelBuff; + pRLEBytes = &pCelBuff[pFrameTable[nCel]]; + nDataStart = *(WORD *)&pRLEBytes[CelSkip]; + if (!nDataStart) return; - v1 = pFrameTable[1] - pFrameTable[0]; + nDataSize = pFrameTable[nCel + 1] - pFrameTable[nCel]; + if (CelCap == 8) - v2 = 0; + nDataCap = 0; else - v2 = *(WORD *)&v9[CelCap]; - if (v2) - nDataSize = v2 - hdr; + nDataCap = *(WORD *)&pRLEBytes[CelCap]; + if (nDataCap) + nDataSize = nDataCap - nDataStart; else - nDataSize = v1 - hdr; + nDataSize -= nDataStart; - pRLEBytes = &v9[hdr]; + pRLEBytes += nDataStart; if (cel_transparency_active) CelDecDatLightTrans(pBuff, pRLEBytes, nDataSize, nWidth); @@ -927,7 +927,7 @@ void __fastcall Cel2DecDatOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, */ void __fastcall Cel2DrawHdrOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap) { - int v1, v2, nDataSize; + int nDataStart, nDataCap, nDataSize; BYTE *pRLEBytes; DWORD *pFrameTable; @@ -940,25 +940,24 @@ void __fastcall Cel2DrawHdrOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nW pFrameTable = (DWORD *)pCelBuff; pRLEBytes = &pCelBuff[pFrameTable[nCel]]; - v1 = *(WORD *)&pRLEBytes[CelSkip]; - - if (!v1) + nDataStart = *(WORD *)&pRLEBytes[CelSkip]; + if (!nDataStart) return; nDataSize = pFrameTable[nCel + 1] - pFrameTable[nCel]; if (CelCap == 8) - v2 = 0; + nDataCap = 0; else - v2 = *(WORD *)&pRLEBytes[CelCap]; - if (v2) - nDataSize = v2 - v1; + nDataCap = *(WORD *)&pRLEBytes[CelCap]; + if (nDataCap) + nDataSize = nDataCap - nDataStart; else - nDataSize -= v1; + nDataSize -= nDataStart; Cel2DecDatOnly( &gpBuffer[sx + screen_y_times_768[sy - 16 * CelSkip]], - &pRLEBytes[v1], + pRLEBytes + nDataStart, nDataSize, nWidth); } @@ -969,7 +968,7 @@ void __fastcall Cel2DrawHdrOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nW */ void __fastcall Cel2DecodeHdrOnly(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap) { - int v1, v2, nDataSize; + int nDataStart, nDataCap, nDataSize; BYTE *pRLEBytes; DWORD *pFrameTable; @@ -982,22 +981,21 @@ void __fastcall Cel2DecodeHdrOnly(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWi pFrameTable = (DWORD *)pCelBuff; pRLEBytes = &pCelBuff[pFrameTable[nCel]]; - v1 = *(WORD *)&pRLEBytes[CelSkip]; - - if (!v1) + nDataStart = *(WORD *)&pRLEBytes[CelSkip]; + if (!nDataStart) return; nDataSize = pFrameTable[nCel + 1] - pFrameTable[nCel]; - - v2 = *(WORD *)&pRLEBytes[CelCap]; + nDataCap = *(WORD *)&pRLEBytes[CelCap]; if (CelCap == 8) - v2 = 0; - if (v2) - nDataSize = v2 - v1; + nDataCap = 0; + + if (nDataCap) + nDataSize = nDataCap - nDataStart; else - nDataSize -= v1; + nDataSize -= nDataStart; - Cel2DecDatOnly(pBuff, &pRLEBytes[v1], nDataSize, nWidth); + Cel2DecDatOnly(pBuff, pRLEBytes + nDataStart, nDataSize, nWidth); } void __fastcall Cel2DecDatLightOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth) @@ -1379,8 +1377,8 @@ void __fastcall Cel2DecDatLightTrans(BYTE *pDecodeTo, BYTE *pRLEBytes, int nData */ void __fastcall Cel2DecodeHdrLight(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap) { - int hdr, nDataSize, v1; - BYTE *pRLEBytes, *pDecodeTo, *v9; + int nDataStart, nDataCap, nDataSize; + BYTE *pRLEBytes, *pDecodeTo; DWORD *pFrameTable; /// ASSERT: assert(gpBuffer); @@ -1390,21 +1388,23 @@ void __fastcall Cel2DecodeHdrLight(int sx, int sy, BYTE *pCelBuff, int nCel, int if (!pCelBuff) return; - pFrameTable = (DWORD *)&pCelBuff[4 * nCel]; - v9 = &pCelBuff[pFrameTable[0]]; - hdr = *(WORD *)&v9[CelSkip]; - if (!hdr) + pFrameTable = (DWORD *)pCelBuff; + pRLEBytes = &pCelBuff[pFrameTable[nCel]]; + nDataStart = *(WORD *)&pRLEBytes[CelSkip]; + if (!nDataStart) return; - v1 = *(WORD *)&v9[CelCap]; + nDataSize = pFrameTable[nCel + 1] - pFrameTable[nCel]; + nDataCap = *(WORD *)&pRLEBytes[CelCap]; if (CelCap == 8) - v1 = 0; - if (v1) - nDataSize = v1 - hdr; + nDataCap = 0; + + if (nDataCap) + nDataSize = nDataCap - nDataStart; else - nDataSize = pFrameTable[1] - pFrameTable[0] - hdr; + nDataSize -= nDataStart; - pRLEBytes = &v9[hdr]; + pRLEBytes += nDataStart; pDecodeTo = &gpBuffer[sx + screen_y_times_768[sy - 16 * CelSkip]]; if (light_table_index) @@ -1420,30 +1420,31 @@ void __fastcall Cel2DecodeHdrLight(int sx, int sy, BYTE *pCelBuff, int nCel, int */ void __fastcall Cel2DecodeLightTrans(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap) { - int hdr, nDataSize, v1, v2; - BYTE *pRLEBytes, *v9; + int nDataStart, nDataCap, nDataSize; + BYTE *pRLEBytes; DWORD *pFrameTable; /// ASSERT: assert(pCelBuff != NULL); if (!pCelBuff) return; - pFrameTable = (DWORD *)&pCelBuff[4 * nCel]; - v9 = &pCelBuff[pFrameTable[0]]; - hdr = *(WORD *)&v9[CelSkip]; - if (!hdr) + pFrameTable = (DWORD *)pCelBuff; + pRLEBytes = &pCelBuff[pFrameTable[nCel]]; + nDataStart = *(WORD *)&pRLEBytes[CelSkip]; + if (!nDataStart) return; - v1 = pFrameTable[1] - pFrameTable[0]; - v2 = *(WORD *)&v9[CelCap]; + nDataSize = pFrameTable[nCel + 1] - pFrameTable[nCel]; + nDataCap = *(WORD *)&pRLEBytes[CelCap]; if (CelCap == 8) - v2 = 0; - if (v2) - nDataSize = v2 - hdr; + nDataCap = 0; + + if (nDataCap) + nDataSize = nDataCap - nDataStart; else - nDataSize = v1 - hdr; + nDataSize -= nDataStart; - pRLEBytes = &v9[hdr]; + pRLEBytes += nDataStart; if (cel_transparency_active) Cel2DecDatLightTrans(pBuff, pRLEBytes, nDataSize, nWidth); @@ -1703,7 +1704,7 @@ void __fastcall CelDecodeRect(BYTE *pBuff, int CelSkip, int hgt, int wdt, BYTE * */ void __fastcall CelDecodeClr(char col, int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap) { - int w, hdr, nDataSize, v1; + int w, nDataStart, nDataCap, nDataSize; BYTE *src, *dst; /// ASSERT: assert(pCelBuff != NULL); @@ -1728,23 +1729,23 @@ void __fastcall CelDecodeClr(char col, int sx, int sy, BYTE *pCelBuff, int nCel, add edx, CelSkip xor eax, eax mov ax, [edx] - mov hdr, eax + mov nDataStart, eax mov edx, src add edx, CelCap mov ax, [edx] - mov v1, eax + mov nDataCap, eax } - if (!hdr) return; + if (!nDataStart) return; if (CelCap == 8) - v1 = 0; - if (v1) - nDataSize = v1 - hdr; + nDataCap = 0; + if (nDataCap) + nDataSize = nDataCap - nDataStart; else - nDataSize -= hdr; + nDataSize -= nDataStart; - src += hdr; + src += nDataStart; dst = &gpBuffer[sx + screen_y_times_768[sy - 16 * CelSkip]]; __asm { @@ -1796,19 +1797,20 @@ void __fastcall CelDecodeClr(char col, int sx, int sy, BYTE *pCelBuff, int nCel, pFrameTable = (DWORD *)&pCelBuff[4 * nCel]; pRLEBytes = &pCelBuff[pFrameTable[0]]; - hdr = *(WORD *)&pRLEBytes[CelSkip]; - if (!hdr) + nDataStart = *(WORD *)&pRLEBytes[CelSkip]; + if (!nDataStart) return; - v1 = *(WORD *)&pRLEBytes[CelCap]; + nDataCap = *(WORD *)&pRLEBytes[CelCap]; if (CelCap == 8) - v1 = 0; - if (v1) - nDataSize = v1 - hdr; + nDataCap = 0; + + if (nDataCap) + nDataSize = nDataCap - nDataStart; else - nDataSize = pFrameTable[1] - pFrameTable[0] - hdr; + nDataSize = pFrameTable[1] - pFrameTable[0] - nDataStart; - src = &pRLEBytes[hdr]; + src = pRLEBytes + nDataStart; end = &src[nDataSize]; dst = &gpBuffer[sx + screen_y_times_768[sy - 16 * CelSkip]]; @@ -1843,7 +1845,7 @@ void __fastcall CelDecodeClr(char col, int sx, int sy, BYTE *pCelBuff, int nCel, */ void __fastcall CelDrawHdrClrHL(char col, int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap) { - int w, hdr, nDataSize, v1; + int w, nDataStart, nDataCap, nDataSize; BYTE *src, *dst; /// ASSERT: assert(pCelBuff != NULL); @@ -1868,23 +1870,23 @@ void __fastcall CelDrawHdrClrHL(char col, int sx, int sy, BYTE *pCelBuff, int nC add edx, CelSkip xor eax, eax mov ax, [edx] - mov hdr, eax + mov nDataStart, eax mov edx, src add edx, CelCap mov ax, [edx] - mov v1, eax + mov nDataCap, eax } - if (!hdr) return; + if (!nDataStart) return; if (CelCap == 8) - v1 = 0; - if (v1) - nDataSize = v1 - hdr; + nDataCap = 0; + if (nDataCap) + nDataSize = nDataCap - nDataStart; else - nDataSize -= hdr; + nDataSize -= nDataStart; - src += hdr; + src += nDataStart; dst = &gpBuffer[sx + screen_y_times_768[sy - 16 * CelSkip]]; __asm { @@ -1961,19 +1963,20 @@ void __fastcall CelDrawHdrClrHL(char col, int sx, int sy, BYTE *pCelBuff, int nC pFrameTable = (DWORD *)&pCelBuff[4 * nCel]; pRLEBytes = &pCelBuff[pFrameTable[0]]; - hdr = *(WORD *)&pRLEBytes[CelSkip]; - if (!hdr) + nDataStart = *(WORD *)&pRLEBytes[CelSkip]; + if (!nDataStart) return; - v1 = *(WORD *)&pRLEBytes[CelCap]; + nDataCap = *(WORD *)&pRLEBytes[CelCap]; if (CelCap == 8) - v1 = 0; - if (v1) - nDataSize = v1 - hdr; + nDataCap = 0; + + if (nDataCap) + nDataSize = nDataCap - nDataStart; else - nDataSize = pFrameTable[1] - pFrameTable[0] - hdr; + nDataSize = pFrameTable[1] - pFrameTable[0] - nDataStart; - src = &pRLEBytes[hdr]; + src = pRLEBytes + nDataStart; end = &src[nDataSize]; dst = &gpBuffer[sx + screen_y_times_768[sy - 16 * CelSkip]]; @@ -2525,7 +2528,7 @@ void __fastcall Cl2ApplyTrans(BYTE *p, BYTE *ttbl, int nCel) */ void __fastcall Cl2DecodeFrm1(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap) { - int hdr, nDataSize; + int nDataStart, nDataSize; BYTE *pRLEBytes; DWORD *pFrameTable; @@ -2543,8 +2546,8 @@ void __fastcall Cl2DecodeFrm1(int sx, int sy, BYTE *pCelBuff, int nCel, int nWid /// ASSERT: assert(nCel <= (int) pFrameTable[0]); pRLEBytes = &pCelBuff[pFrameTable[nCel]]; - hdr = *(WORD *)&pRLEBytes[CelSkip]; - if (!hdr) + nDataStart = *(WORD *)&pRLEBytes[CelSkip]; + if (!nDataStart) return; if (CelCap == 8) @@ -2556,8 +2559,8 @@ void __fastcall Cl2DecodeFrm1(int sx, int sy, BYTE *pCelBuff, int nCel, int nWid Cl2DecDatFrm1( &gpBuffer[sx + screen_y_times_768[sy - 16 * CelSkip]], - &pRLEBytes[hdr], - nDataSize - hdr, + pRLEBytes + nDataStart, + nDataSize - nDataStart, nWidth); } @@ -2708,7 +2711,7 @@ void __fastcall Cl2DecDatFrm1(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, i */ void __fastcall Cl2DecodeFrm2(char col, int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap) { - int hdr, nDataSize; + int nDataStart, nDataSize; BYTE *pRLEBytes; DWORD *pFrameTable; @@ -2726,8 +2729,8 @@ void __fastcall Cl2DecodeFrm2(char col, int sx, int sy, BYTE *pCelBuff, int nCel /// ASSERT: assert(nCel <= (int) pFrameTable[0]); pRLEBytes = &pCelBuff[pFrameTable[nCel]]; - hdr = *(WORD *)&pRLEBytes[CelSkip]; - if (!hdr) + nDataStart = *(WORD *)&pRLEBytes[CelSkip]; + if (!nDataStart) return; if (CelCap == 8) @@ -2739,8 +2742,8 @@ void __fastcall Cl2DecodeFrm2(char col, int sx, int sy, BYTE *pCelBuff, int nCel Cl2DecDatFrm2( &gpBuffer[sx + screen_y_times_768[sy - 16 * CelSkip]], - &pRLEBytes[hdr], - nDataSize - hdr, + pRLEBytes + nDataStart, + nDataSize - nDataStart, nWidth, col); } @@ -3158,7 +3161,7 @@ void __fastcall Cl2DecodeLightTbl(int sx, int sy, BYTE *pCelBuff, int nCel, int */ void __fastcall Cl2DecodeFrm4(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap) { - int hdr, nDataSize; + int nDataStart, nDataSize; BYTE *pRLEBytes; DWORD *pFrameTable; @@ -3176,8 +3179,8 @@ void __fastcall Cl2DecodeFrm4(int sx, int sy, BYTE *pCelBuff, int nCel, int nWid /// ASSERT: assert(nCel <= (int) pFrameTable[0]); pRLEBytes = &pCelBuff[pFrameTable[nCel]]; - hdr = *(WORD *)&pRLEBytes[CelSkip]; - if (!hdr) + nDataStart = *(WORD *)&pRLEBytes[CelSkip]; + if (!nDataStart) return; if (CelCap == 8) @@ -3189,8 +3192,8 @@ void __fastcall Cl2DecodeFrm4(int sx, int sy, BYTE *pCelBuff, int nCel, int nWid Cl2DecDatFrm4( &gpBuffer[sx + screen_y_times_768[sy - 16 * CelSkip]], - &pRLEBytes[hdr], - nDataSize - hdr, + pRLEBytes + nDataStart, + nDataSize - nDataStart, nWidth); } @@ -3355,7 +3358,7 @@ void __fastcall Cl2DecDatFrm4(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, i */ void __fastcall Cl2DecodeClrHL(char col, int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap) { - int hdr, nDataSize; + int nDataStart, nDataSize; BYTE *pRLEBytes; DWORD *pFrameTable; @@ -3373,8 +3376,8 @@ void __fastcall Cl2DecodeClrHL(char col, int sx, int sy, BYTE *pCelBuff, int nCe /// ASSERT: assert(nCel <= (int) pFrameTable[0]); pRLEBytes = &pCelBuff[pFrameTable[nCel]]; - hdr = *(WORD *)&pRLEBytes[CelSkip]; - if (!hdr) + nDataStart = *(WORD *)&pRLEBytes[CelSkip]; + if (!nDataStart) return; if (CelCap == 8) @@ -3387,8 +3390,8 @@ void __fastcall Cl2DecodeClrHL(char col, int sx, int sy, BYTE *pCelBuff, int nCe gpBufEnd -= 768; Cl2DecDatClrHL( &gpBuffer[sx + screen_y_times_768[sy - 16 * CelSkip]], - &pRLEBytes[hdr], - nDataSize - hdr, + pRLEBytes + nDataStart, + nDataSize - nDataStart, nWidth, col); gpBufEnd += 768;