Browse Source

Cleanup DRLG_L1Pass3 (#662)

pull/41/head
galaxyhaxz 7 years ago committed by Robin Eklind
parent
commit
aeb111c5fc
  1. 152
      Source/drlg_l1.cpp
  2. 2
      Source/gendung.cpp
  3. 2
      Source/gendung.h

152
Source/drlg_l1.cpp

@ -200,77 +200,87 @@ void __cdecl DRLG_L1Floor()
void __cdecl DRLG_L1Pass3() void __cdecl DRLG_L1Pass3()
{ {
int v0; // eax int i, j, xx, yy;
int *v1; // edx long v1, v2, v3, v4, lv;
int *v2; // eax
signed int v3; // ecx lv = 22-1;
signed int v4; // ebx
int *v5; // ecx #if (_MSC_VER >= 800) && (_MSC_VER <= 1200)
unsigned char *v6; // edx __asm {
unsigned short *v7; // esi mov esi, pMegaTiles
unsigned short v8; // ax mov eax, lv
int v9; // eax shl eax, 3
int v10; // ST24_4 add esi, eax
int v11; // ST20_4 xor eax, eax
int v12; // ST1C_4 lodsw
signed int v13; // [esp+Ch] [ebp-1Ch] inc eax
int *v14; // [esp+10h] [ebp-18h] mov v1, eax
int v15; // [esp+14h] [ebp-14h] lodsw
int v16; // [esp+18h] [ebp-10h] inc eax
int v17; // [esp+1Ch] [ebp-Ch] mov v2, eax
int v18; // [esp+20h] [ebp-8h] lodsw
inc eax
v0 = *((unsigned short *)pMegaTiles + 84) + 1; mov v3, eax
v18 = *((unsigned short *)pMegaTiles + 84) + 1; lodsw
_LOWORD(v0) = *((_WORD *)pMegaTiles + 85); inc eax
v17 = ++v0; mov v4, eax
_LOWORD(v0) = *((_WORD *)pMegaTiles + 86); }
v16 = ++v0; #else
_LOWORD(v0) = *((_WORD *)pMegaTiles + 87); v1 = *((WORD *)&pMegaTiles[lv*8])+1;
v15 = v0 + 1; v2 = *((WORD *)&pMegaTiles[lv*8]+1)+1;
v1 = dPiece[1]; v3 = *((WORD *)&pMegaTiles[lv*8]+2)+1;
do { v4 = *((WORD *)&pMegaTiles[lv*8]+3)+1;
v2 = v1; #endif
v3 = 56;
do { for(j = 0; j < MAXDUNY; j += 2) {
*(v2 - 112) = v18; for(i = 0; i < MAXDUNX; i += 2) {
*v2 = v17; dPiece[i][j] = v1;
*(v2 - 111) = v16; dPiece[i+1][j] = v2;
v2[1] = v15; dPiece[i][j+1] = v3;
v2 += 224; dPiece[i+1][j+1] = v4;
--v3; }
} while (v3); }
v1 += 2;
} while ((signed int)v1 < (signed int)dPiece[2]); yy = 16;
v4 = 0; for(j = 0; j < DMAXY; j++) {
v14 = &dPiece[17][16]; /* check */ xx = 16;
do { for(i = 0; i < DMAXX; i++) {
v5 = v14; lv = (unsigned char)dungeon[i][j]-1;
v6 = (unsigned char *)dungeon + v4; /// ASSERT: assert(lv >= 0);
v13 = 40; #if (_MSC_VER >= 800) && (_MSC_VER <= 1200)
do { __asm {
v7 = (unsigned short *)((char *)pMegaTiles + 8 * (*v6 - 1)); mov esi, pMegaTiles
v8 = *v7; mov eax, lv
++v7; shl eax, 3
v9 = v8 + 1; add esi, eax
v10 = v9; xor eax, eax
_LOWORD(v9) = *v7; lodsw
++v7; inc eax
v11 = ++v9; mov v1, eax
_LOWORD(v9) = *v7; lodsw
v12 = ++v9; inc eax
_LOWORD(v9) = v7[1]; mov v2, eax
v6 += 40; lodsw
*(v5 - 112) = v10; inc eax
*v5 = v11; mov v3, eax
*(v5 - 111) = v12; lodsw
v5[1] = v9 + 1; inc eax
v5 += 224; mov v4, eax
--v13; }
} while (v13); #else
v14 += 2; v1 = *((WORD *)&pMegaTiles[lv*8])+1;
++v4; v2 = *((WORD *)&pMegaTiles[lv*8]+1)+1;
} while (v4 < 40); v3 = *((WORD *)&pMegaTiles[lv*8]+2)+1;
v4 = *((WORD *)&pMegaTiles[lv*8]+3)+1;
#endif
dPiece[xx][yy] = v1;
dPiece[xx+1][yy] = v2;
dPiece[xx][yy+1] = v3;
dPiece[xx+1][yy+1] = v4;
xx += 2;
}
yy += 2;
}
} }
void __cdecl DRLG_InitL1Vals() void __cdecl DRLG_InitL1Vals()

2
Source/gendung.cpp

@ -22,7 +22,7 @@ int dPiece[MAXDUNX][MAXDUNY];
char dTransVal[MAXDUNX][MAXDUNY]; char dTransVal[MAXDUNX][MAXDUNY];
int setloadflag_2; // weak int setloadflag_2; // weak
int tile_defs[2048]; int tile_defs[2048];
void *pMegaTiles; BYTE *pMegaTiles;
void *pLevelPieces; void *pLevelPieces;
int gnDifficulty; // idb int gnDifficulty; // idb
char block_lvid[2049]; char block_lvid[2049];

2
Source/gendung.h

@ -22,7 +22,7 @@ extern int dPiece[MAXDUNX][MAXDUNY];
extern char dTransVal[MAXDUNX][MAXDUNY]; extern char dTransVal[MAXDUNX][MAXDUNY];
extern int setloadflag_2; // weak extern int setloadflag_2; // weak
extern int tile_defs[2048]; extern int tile_defs[2048];
extern void *pMegaTiles; extern BYTE *pMegaTiles;
extern void *pLevelPieces; extern void *pLevelPieces;
extern int gnDifficulty; // idb extern int gnDifficulty; // idb
extern char block_lvid[2049]; extern char block_lvid[2049];

Loading…
Cancel
Save