diff --git a/Source/automap.cpp b/Source/automap.cpp index b668c8847..860acfdca 100644 --- a/Source/automap.cpp +++ b/Source/automap.cpp @@ -7,7 +7,7 @@ WORD automaptype[512]; static int MapX; static int MapY; BOOL automapflag; // idb -char AMbyte_4B7E4C[32]; +char AmShiftTab[32]; // [31]? unsigned char automapview[DMAXX][DMAXY]; int AutoMapScale; // idb int AutoMapXOfs; // weak @@ -49,82 +49,63 @@ void __cdecl InitAutomapOnce() void __cdecl InitAutomap() { - signed int v0; // edi - signed int v1; // ecx - int v2; // esi - char v3; // al - int v4; // esi - char v5; // al - char *v6; // ecx - unsigned char *v7; // eax - int v8; // ecx - unsigned char *v9; // edx - unsigned int i; // esi - unsigned char v11; // bl - _BYTE *v12; // edx - signed int v13; // ecx - _BYTE *v14; // eax - signed int v15; // edx - int size; // [esp+Ch] [ebp-4h] - - v0 = 50; - v1 = 0; - do { - v2 = (v0 << 6) / 100; - v3 = 2 * (320 / v2); - v4 = 320 % v2; - v5 = v3 + 1; - AMbyte_4B7E4C[v1] = v5; - if (v4) - AMbyte_4B7E4C[v1] = v5 + 1; - if (v4 >= 32 * v0 / 100) - ++AMbyte_4B7E4C[v1]; - v0 += 5; - ++v1; - } while (v1 < 31); + unsigned char b1, b2; + unsigned int dwTiles; + int x, y; + unsigned char *pAFile, *pTmp; + int i, j; + int d; + + j = 50; + + for(i = 0; i < 31; i++) { + d = (j << 6) / 100; + AmShiftTab[i] = 2 * (320 / d) + 1; + if(320 % d) + AmShiftTab[i]++; + if(320 % d >= (j << 5) / 100) + AmShiftTab[i]++; + j += 5; + } + memset(automaptype, 0, sizeof(automaptype)); - switch (leveltype) { + + switch(leveltype) { case DTYPE_CATHEDRAL: - v6 = "Levels\\L1Data\\L1.AMP"; + pAFile = LoadFileInMem("Levels\\L1Data\\L1.AMP", (int *)&dwTiles); + dwTiles >>= 1; break; case DTYPE_CATACOMBS: - v6 = "Levels\\L2Data\\L2.AMP"; + pAFile = LoadFileInMem("Levels\\L2Data\\L2.AMP", (int *)&dwTiles); + dwTiles >>= 1; break; case DTYPE_CAVES: - v6 = "Levels\\L3Data\\L3.AMP"; + pAFile = LoadFileInMem("Levels\\L3Data\\L3.AMP", (int *)&dwTiles); + dwTiles >>= 1; break; case DTYPE_HELL: - v6 = "Levels\\L4Data\\L4.AMP"; + pAFile = LoadFileInMem("Levels\\L4Data\\L4.AMP", (int *)&dwTiles); + dwTiles >>= 1; break; default: return; } - v7 = LoadFileInMem(v6, &size); - size = (unsigned int)size >> 1; - v9 = v7; - for (i = 1; i <= size; ++i) { - v11 = *v9; - v12 = v9 + 1; - _LOWORD(v0) = v11; - _LOBYTE(v8) = *v12; - v9 = v12 + 1; - _LOWORD(v8) = (unsigned char)v8; - v8 = v0 + (v8 << 8); - automaptype[i] = v8; + + pTmp = pAFile; + + for(i = 1; i <= dwTiles; i++) { + b1 = *pTmp++; + b2 = *pTmp++; + automaptype[i] = b1 + (b2 << 8); } - mem_free_dbg(v7); + + mem_free_dbg(pAFile); memset(automapview, 0, sizeof(automapview)); - v13 = 0; - do { - v14 = (unsigned char *)dFlags + v13; - v15 = 112; - do { - *v14 &= ~DFLAG_EXPLORED; - v14 += 112; - --v15; - } while (v15); - ++v13; - } while (v13 < 112); + + for(y = 0; y < MAXDUNY; y++) { + for(x = 0; x < MAXDUNX; x++) + dFlags[x][y] &= ~DFLAG_EXPLORED; + } } void __cdecl StartAutomap() @@ -210,7 +191,7 @@ void __cdecl DrawAutomap() AutoMapYOfs--; MapY += AutoMapYOfs; - cells = AMbyte_4B7E4C[(AutoMapScale - 50) / 5]; + cells = AmShiftTab[(AutoMapScale - 50) / 5]; if (ScrollInfo._sxoff + ScrollInfo._syoff) cells++; mapx = MapX - cells; diff --git a/Source/automap.h b/Source/automap.h index 9d9d12c22..1231b1603 100644 --- a/Source/automap.h +++ b/Source/automap.h @@ -4,7 +4,7 @@ extern WORD automaptype[512]; extern BOOL automapflag; // idb -extern char AMbyte_4B7E4C[32]; +extern char AmShiftTab[32]; extern unsigned char automapview[DMAXX][DMAXY]; extern int AutoMapScale; // idb extern int AutoMapXOfs; // weak diff --git a/Source/scrollrt.cpp b/Source/scrollrt.cpp index 44ed3141f..47118eb69 100644 --- a/Source/scrollrt.cpp +++ b/Source/scrollrt.cpp @@ -2545,94 +2545,80 @@ void __cdecl ClearScreenBuffer() #ifdef _DEBUG void __cdecl ScrollView() { - signed int v0; // esi - int v1; // edi - int v2; // edx - - if (pcurs < 12) { - v0 = 0; - if (MouseX >= 20) { - v2 = ViewX; - v1 = ViewY; - } else { - v1 = ViewY; - v2 = ViewX; - if (ViewY >= dmaxy - 1 || dminx >= ViewX) { - if (ViewY < dmaxy - 1) { - v1 = ViewY + 1; - v0 = 1; - } - if (dminx < ViewX) { - v2 = ViewX - 1; - v0 = 1; - } - } else { - v1 = ViewY + 1; - v2 = ViewX - 1; - v0 = 1; + BOOL scroll; + + if(pcurs >= CURSOR_FIRSTITEM) + return; + + scroll = FALSE; + + if(MouseX < 20) { + if(dmaxy - 1 <= ViewY || dminx >= ViewX) { + if(dmaxy - 1 > ViewY) { + ViewY++; + scroll = TRUE; + } + if(dminx < ViewX) { + ViewX--; + scroll = TRUE; } + } else { + ViewY++; + ViewX--; + scroll = TRUE; } - if (MouseX > 620) { - if (dmaxx - 1 > v2) { - if (dminy < v1) { - --v1; - ++v2; - v0 = 1; - goto LABEL_19; - } - if (dmaxx - 1 > v2) { - ++v2; - v0 = 1; - } + } + if(MouseX > 640-20) { + if(dmaxx - 1 <= ViewX || dminy >= ViewY) { + if(dmaxx - 1 > ViewX) { + ViewX++; + scroll = TRUE; } - if (dminy < v1) { - --v1; - v0 = 1; + if(dminy < ViewY) { + ViewY--; + scroll = TRUE; } + } else { + ViewY--; + ViewX++; + scroll = TRUE; } - LABEL_19: - if (MouseY >= 20) - goto LABEL_28; - if (dminy < v1) { - if (dminx < v2) { - --v2; - --v1; - goto LABEL_27; + } + if(MouseY < 20) { + if(dminy >= ViewY || dminx >= ViewX) { + if(dminy < ViewY) { + ViewY--; + scroll = TRUE; } - if (dminy < v1) { - --v1; - v0 = 1; + if(dminx < ViewX) { + ViewX--; + scroll = TRUE; } + } else { + ViewX--; + ViewY--; + scroll = TRUE; } - if (dminx >= v2) - goto LABEL_28; - --v2; - LABEL_27: - v0 = 1; - LABEL_28: - ViewX = v2; - ViewY = v1; - if (MouseY > 460) { - if (v1 >= dmaxy - 1 || dmaxx - 1 <= v2) { - ViewY = v1; - if (v1 < dmaxy - 1) { - v0 = 1; - ViewY = v1 + 1; - } - ViewX = v2; - if (dmaxx - 1 <= v2) - goto LABEL_37; - ViewX = v2 + 1; - } else { - ViewX = v2 + 1; - ViewY = v1 + 1; + } + if(MouseY > 480-20) { + if(dmaxy - 1 <= ViewY || dmaxx - 1 <= ViewX) { + if(dmaxy - 1 > ViewY) { + ViewY++; + scroll = TRUE; + } + if(dmaxx - 1 > ViewX) { + ViewX++; + scroll = TRUE; } - v0 = 1; + } else { + ViewX++; + ViewY++; + scroll = TRUE; } - LABEL_37: - if (v0) - ScrollInfo._sdir = 0; } + + if(scroll) + ScrollInfo._sdir = 0; } void __cdecl EnableFrameCount()