Browse Source

Cleanup Town.cpp+scrollrt

pull/78/head
galaxyhaxz 7 years ago committed by Anders Jenbo
parent
commit
09c2d8c696
  1. 469
      Source/scrollrt.cpp
  2. 958
      Source/town.cpp
  3. 6
      Source/town.h

469
Source/scrollrt.cpp

@ -436,116 +436,104 @@ void __fastcall DrawView(int StartX, int StartY)
void __fastcall DrawGame(int x, int y)
{
int v2; // esi
int v3; // ebx
int v4; // edi
int v5; // edi
int v6; // esi
int v7; // edi
int v8; // esi
int v9; // edi
int v10; // esi
signed int v11; // [esp+Ch] [ebp-10h]
signed int a6; // [esp+10h] [ebp-Ch]
signed int a6a; // [esp+10h] [ebp-Ch]
signed int a5; // [esp+14h] [ebp-8h]
int ya; // [esp+18h] [ebp-4h]
int i, sx, sy, chunks, blocks;
dword_5C2FF8 = 10;
v2 = ScrollInfo._sxoff + 64;
v3 = x - 10;
ya = y - 1;
a5 = 10;
v4 = ScrollInfo._syoff + 175;
scr_pix_width = 640;
scr_pix_height = 352;
dword_5C2FF8 = 10;
dword_5C2FFC = 11;
v11 = 8;
if (chrflag || questlog) {
ya = y - 3;
v3 += 2;
v2 = ScrollInfo._sxoff + 352;
a5 = 6;
}
if (invflag || sbookflag) {
ya -= 2;
v3 += 2;
v2 -= 32;
a5 = 6;
}
switch (ScrollInfo._sdir) {
case DIR_SW:
goto LABEL_9;
case DIR_W:
++a5;
LABEL_9:
v4 = ScrollInfo._syoff + 143;
--v3;
--ya;
goto LABEL_15;
case DIR_NW:
goto LABEL_13;
case DIR_N:
v11 = 9;
goto LABEL_13;
case DIR_NE:
goto LABEL_15;
case DIR_E:
v11 = 9;
goto LABEL_12;
case DIR_SE:
LABEL_12:
v2 -= 64;
--v3;
++ya;
LABEL_13:
++a5;
sx = ScrollInfo._sxoff + 64;
sy = ScrollInfo._syoff + 175;
x -= 10;
y--;
chunks = 10;
blocks = 8;
if(chrflag || questlog) {
x += 2;
y -= 2;
sx += 288;
chunks = 6;
}
if(invflag || sbookflag) {
x += 2;
y -= 2;
sx -= 32;
chunks = 6;
}
switch(ScrollInfo._sdir) {
case 0:
break;
case 2:
chunks++;
case 1:
sy -= 32;
x--;
y--;
blocks++;
break;
case 4:
blocks++;
case 3:
chunks++;
break;
case 5:
blocks++;
break;
case DIR_OMNI:
v2 -= 64;
v4 = ScrollInfo._syoff + 143;
v3 -= 2;
++a5;
LABEL_15:
v11 = 9;
case 6:
blocks++;
case 7:
sx -= 64;
x--;
y++;
chunks++;
break;
default:
case 8:
sx -= 64;
sy -= 32;
x -= 2;
chunks++;
blocks++;
break;
}
a6 = 0;
gpBufEnd = (unsigned char *)gpBuffer + screen_y_times_768[160];
do {
scrollrt_draw_upper(v3, ya++, v2, v4, a5, a6, 0);
v5 = v4 + 16;
v6 = v2 - 32;
scrollrt_draw_upper(v3++, ya, v6, v5, a5, a6, 1);
v2 = v6 + 32;
v4 = v5 + 16;
++a6;
} while (a6 < 4);
gpBufEnd = (unsigned char *)gpBuffer + screen_y_times_768[512];
if (v11 > 0) {
do {
scrollrt_draw_lower(v3, ya++, v2, v4, a5, 0);
v7 = v4 + 16;
v8 = v2 - 32;
scrollrt_draw_lower(v3++, ya, v8, v7, a5, 1);
v2 = v8 + 32;
v4 = v7 + 16;
--v11;
} while (v11);
/// ASSERT: assert(gpBuffer);
gpBufEnd = &gpBuffer[screen_y_times_768[160]];
for(i = 0; i < 4; i++) {
scrollrt_draw_upper(x, y, sx, sy, chunks, i, 0);
y++;
sx -= 32;
sy += 16;
scrollrt_draw_upper(x, y, sx, sy, chunks, i, 1);
x++;
sx += 32;
sy += 16;
}
/// ASSERT: assert(gpBuffer);
gpBufEnd = &gpBuffer[screen_y_times_768[512]];
for(i = 0; i < blocks; i++) {
scrollrt_draw_lower(x, y, sx, sy, chunks, 0);
y++;
sx -= 32;
sy += 16;
scrollrt_draw_lower(x, y, sx, sy, chunks, 1);
x++;
sx += 32;
sy += 16;
}
arch_draw_type = 0;
a6a = 0;
do {
scrollrt_draw_lower_2(v3, ya++, v2, v4, a5, a6a, 0);
v9 = v4 + 16;
v10 = v2 - 32;
scrollrt_draw_lower_2(v3++, ya, v10, v9, a5, a6a, 1);
v2 = v10 + 32;
v4 = v9 + 16;
++a6a;
} while (a6a < 4);
for(i = 0; i < 4; i++) {
scrollrt_draw_lower_2(x, y, sx, sy, chunks, i, 0);
y++;
sx -= 32;
sy += 16;
scrollrt_draw_lower_2(x, y, sx, sy, chunks, i, 1);
x++;
sx += 32;
sy += 16;
}
}
// 4B8968: using guessed type int sbookflag;
// 5C2FF8: using guessed type int dword_5C2FF8;
@ -2076,150 +2064,159 @@ void __fastcall scrollrt_draw_e_flag(BYTE *pBuff, int x, int y, int a4, int a5,
void __fastcall DrawZoom(int x, int y)
{
int v2; // edi
int v3; // ebx
int v4; // esi
int v5; // esi
int v6; // edi
int v7; // esi
int v8; // edi
int v9; // esi
int v10; // edi
_WORD *v11; // edi
char *v12; // esi
char *v13; // ebx
signed int v14; // edx
signed int v15; // ecx
short v16; // ax
int v17; // eax
signed int v18; // [esp+Ch] [ebp-10h]
signed int v19; // [esp+Ch] [ebp-10h]
signed int a5; // [esp+10h] [ebp-Ch]
int a5a; // [esp+10h] [ebp-Ch]
signed int a6; // [esp+14h] [ebp-8h]
signed int a6a; // [esp+14h] [ebp-8h]
int a6b; // [esp+14h] [ebp-8h]
int ya; // [esp+18h] [ebp-4h]
v2 = ScrollInfo._sxoff + 64;
dword_5C2FF8 = 6;
dword_5C2FFC = 6;
v3 = x - 6;
ya = y - 1;
a5 = 6;
v4 = ScrollInfo._syoff + 143;
int i, sx, sy, chunks, blocks;
int wdt, nSrcOff, nDstOff;
scr_pix_width = 384;
scr_pix_height = 192;
v18 = 3;
switch (ScrollInfo._sdir) {
case DIR_SW:
goto LABEL_3;
case DIR_W:
a5 = 7;
LABEL_3:
v4 = ScrollInfo._syoff + 111;
v3 = x - 7;
ya = y - 2;
goto LABEL_9;
case DIR_NW:
goto LABEL_7;
case DIR_N:
v18 = 4;
goto LABEL_7;
case DIR_NE:
goto LABEL_9;
case DIR_E:
v18 = 4;
goto LABEL_6;
case DIR_SE:
LABEL_6:
v2 = ScrollInfo._sxoff;
v3 = x - 7;
ya = y;
LABEL_7:
a5 = 7;
dword_5C2FF8 = 6;
dword_5C2FFC = 6;
sx = ScrollInfo._sxoff + 64;
sy = ScrollInfo._syoff + 143;
x -= 6;
y--;
chunks = 6;
blocks = 3;
switch(ScrollInfo._sdir) {
case 0:
break;
case 2:
chunks++;
case 1:
sy -= 32;
x--;
y--;
blocks++;
break;
case 4:
blocks++;
case 3:
chunks++;
break;
case DIR_OMNI:
v2 = ScrollInfo._sxoff;
v4 = ScrollInfo._syoff + 111;
a5 = 7;
v3 = x - 8;
LABEL_9:
v18 = 4;
case 5:
blocks++;
break;
default:
case 6:
blocks++;
case 7:
sx -= 64;
x--;
y++;
chunks++;
break;
case 8:
sx -= 64;
sy -= 32;
x -= 2;
chunks++;
blocks++;
break;
}
a6 = 0;
gpBufEnd = (unsigned char *)gpBuffer + screen_y_times_768[143];
do {
scrollrt_draw_upper(v3, ya++, v2, v4, a5, a6, 0);
v5 = v4 + 16;
v6 = v2 - 32;
scrollrt_draw_upper(v3++, ya, v6, v5, a5, a6, 1);
v2 = v6 + 32;
v4 = v5 + 16;
++a6;
} while (a6 < 4);
gpBufEnd = (unsigned char *)gpBuffer + screen_y_times_768[320];
if (v18 > 0) {
do {
scrollrt_draw_lower(v3, ya++, v2, v4, a5, 0);
v7 = v4 + 16;
v8 = v2 - 32;
scrollrt_draw_lower(v3++, ya, v8, v7, a5, 1);
v2 = v8 + 32;
v4 = v7 + 16;
--v18;
} while (v18);
/// ASSERT: assert(gpBuffer);
gpBufEnd = &gpBuffer[screen_y_times_768[143]];
for(i = 0; i < 4; i++) {
scrollrt_draw_upper(x, y, sx, sy, chunks, i, 0);
y++;
sx -= 32;
sy += 16;
scrollrt_draw_upper(x, y, sx, sy, chunks, i, 1);
x++;
sx += 32;
sy += 16;
}
/// ASSERT: assert(gpBuffer);
gpBufEnd = &gpBuffer[screen_y_times_768[320]];
for(i = 0; i < blocks; i++) {
scrollrt_draw_lower(x, y, sx, sy, chunks, 0);
y++;
sx -= 32;
sy += 16;
scrollrt_draw_lower(x, y, sx, sy, chunks, 1);
x++;
sx += 32;
sy += 16;
}
arch_draw_type = 0;
a6a = 0;
do {
scrollrt_draw_lower_2(v3, ya++, v2, v4, a5, a6a, 0);
v9 = v4 + 16;
v10 = v2 - 32;
scrollrt_draw_lower_2(v3++, ya, v10, v9, a5, a6a, 1);
v2 = v10 + 32;
v4 = v9 + 16;
++a6a;
} while (a6a < 4);
if (chrflag || questlog) {
a6b = 392064;
goto LABEL_23;
}
if (invflag || sbookflag) {
a6b = 391744;
LABEL_23:
a5a = 245168;
v19 = 160;
goto LABEL_24;
}
a5a = 245088;
a6b = 391744;
v19 = 320;
LABEL_24:
v11 = (_WORD *)((char *)gpBuffer + a6b);
v12 = (char *)gpBuffer + a5a;
v13 = (char *)&gpBuffer[a6b + 768];
v14 = 176;
do {
v15 = v19;
do {
_LOBYTE(v16) = *v12++;
_HIBYTE(v16) = v16;
*v11 = v16;
*(_WORD *)v13 = v16;
++v11;
v13 += 2;
--v15;
} while (v15);
v12 += -v19 - 768;
v17 = 2 * (v19 + 768);
v13 -= v17;
v11 = (_WORD *)((char *)v11 - v17);
--v14;
} while (v14);
for(i = 0; i < 4; i++) {
scrollrt_draw_lower_2(x, y, sx, sy, chunks, i, 0);
y++;
sx -= 32;
sy += 16;
scrollrt_draw_lower_2(x, y, sx, sy, chunks, i, 1);
x++;
sx += 32;
sy += 16;
}
if(chrflag || questlog) {
nSrcOff = SCREENXY(112, 159);
nDstOff = SCREENXY(320, 350);
wdt = 160;
} else if(invflag || sbookflag) {
nSrcOff = SCREENXY(112, 159);
nDstOff = SCREENXY(0, 350);
wdt = 160;
} else {
nSrcOff = SCREENXY(32, 159);
nDstOff = SCREENXY(0, 350);
wdt = 320;
}
/// ASSERT: assert(gpBuffer);
#if (_MSC_VER >= 800) && (_MSC_VER <= 1200)
__asm {
mov esi, gpBuffer
mov edx, nDstOff
mov edi, esi
mov ecx, nSrcOff
add edi, edx
add esi, ecx
mov ebx, edi
add ebx, 768
mov edx, 176
label1:
mov ecx, wdt
label2:
mov al, [esi]
inc esi
mov ah, al
mov [edi], ax
mov [ebx], ax
add edi, 2
add ebx, 2
dec ecx
jnz label2
mov eax, 768
add eax, wdt
sub esi, eax
add eax, eax
sub ebx, eax
sub edi, eax
dec edx
jnz label1
}
#else
int hgt;
BYTE *src, *dst1, *dst2;
src = &gpBuffer[nSrcOff];
dst1 = &gpBuffer[nDstOff];
dst2 = &gpBuffer[nDstOff + 768];
for(hgt = 176; hgt != 0; hgt--, src -= 768 + wdt, dst1 -= 2 * (768 + wdt), dst2 -= 2 * (768 + wdt)) {
for(i = wdt; i != 0; i--) {
*dst1++ = *src;
*dst1++ = *src;
*dst2++ = *src;
*dst2++ = *src;
src++;
}
}
#endif
}
// 4B8968: using guessed type int sbookflag;
// 5C2FF8: using guessed type int dword_5C2FF8;

958
Source/town.cpp

File diff suppressed because it is too large Load Diff

6
Source/town.h

@ -5,13 +5,13 @@
void __fastcall town_clear_upper_buf(BYTE *pBuff);
void __fastcall town_clear_low_buf(BYTE *pBuff);
void __fastcall town_draw_clipped_e_flag(BYTE *pBuff, int x, int y, int sx, int sy);
void __fastcall town_draw_clipped_town(BYTE *buffer, int x, int y, int sx, int sy, int some_flag);
void __fastcall town_draw_clipped_town(BYTE *pBuff, int x, int y, int sx, int sy, int some_flag);
void __fastcall town_draw_lower(int x, int y, int sx, int sy, int a5, int some_flag);
void __fastcall town_draw_clipped_e_flag_2(BYTE *pBuff, int x, int y, int a4, int a5, int sx, int sy);
void __fastcall town_draw_clipped_town_2(int x, int y, int a3, int a4, int a5, int sx, int sy, int some_flag);
void __fastcall town_draw_clipped_town_2(BYTE *pBuff, int x, int y, int a4, int a5, int sx, int sy, int some_flag);
void __fastcall town_draw_lower_2(int x, int y, int sx, int sy, int a5, int a6, int some_flag);
void __fastcall town_draw_e_flag(BYTE *pBuff, int x, int y, int a4, int dir, int sx, int sy);
void __fastcall town_draw_town_all(BYTE *buffer, int x, int y, int a4, int dir, int sx, int sy, int some_flag);
void __fastcall town_draw_town_all(BYTE *pBuff, int x, int y, int a4, int dir, int sx, int sy, int some_flag);
void __fastcall town_draw_upper(int x, int y, int sx, int sy, int a5, int a6, int some_flag);
void __fastcall T_DrawGame(int x, int y);
void __fastcall T_DrawZoom(int x, int y);

Loading…
Cancel
Save