diff --git a/Source/gendung.cpp b/Source/gendung.cpp index 648894c4f..a304c1e36 100644 --- a/Source/gendung.cpp +++ b/Source/gendung.cpp @@ -11,7 +11,7 @@ BYTE *pSpeedCels; int nlevel_frames; // weak char pdungeon[40][40]; char dDead[MAXDUNX][MAXDUNY]; -WORD dpiece_defs_map_1[MAXDUNX * MAXDUNY][16]; +MICROS dpiece_defs_map_1[MAXDUNX * MAXDUNY]; char dPreLight[MAXDUNX][MAXDUNY]; char TransVal; // weak int MicroTileLen; @@ -65,7 +65,7 @@ int setpc_y; // idb char dMissile[MAXDUNX][MAXDUNY]; int dminx; // weak int dminy; // weak -WORD dpiece_defs_map_2[MAXDUNX][MAXDUNY][16]; +MICROS dpiece_defs_map_2[MAXDUNX][MAXDUNY]; void FillSolidBlockTbls() { @@ -126,8 +126,8 @@ void MakeSpeedCels() int total_frames, blocks, total_size, frameidx, lfs_adder, blk_cnt, currtile, nDataSize; WORD m; BOOL blood_flag; - WORD *pMap; DWORD *pFrameTable; + MICROS *pMap; #ifndef USE_ASM int k, l; BYTE width, pix; @@ -148,10 +148,10 @@ void MakeSpeedCels() for (y = 0; y < MAXDUNY; y++) { for (x = 0; x < MAXDUNX; x++) { for (i = 0; i < blocks; i++) { - pMap = dpiece_defs_map_2[x][y]; - if (pMap[i]) { - level_frame_count[pMap[i] & 0xFFF]++; - level_frame_types[pMap[i] & 0xFFF] = pMap[i] & 0x7000; + pMap = &dpiece_defs_map_2[x][y]; + if (pMap->mt[i]) { + level_frame_count[pMap->mt[i] & 0xFFF]++; + level_frame_types[pMap->mt[i] & 0xFFF] = pMap->mt[i] & 0x7000; } } } @@ -426,12 +426,12 @@ void MakeSpeedCels() for (y = 0; y < MAXDUNY; y++) { for (x = 0; x < MAXDUNX; x++) { if (dPiece[x][y]) { - pMap = dpiece_defs_map_2[x][y]; + pMap = &dpiece_defs_map_2[x][y]; for (i = 0; i < blocks; i++) { - if (pMap[i]) { + if (pMap->mt[i]) { for (m = 0; m < total_frames; m++) { - if ((pMap[i] & 0xFFF) == tile_defs[m]) { - pMap[i] = m + level_frame_types[m] + 0x8000; + if ((pMap->mt[i] & 0xFFF) == tile_defs[m]) { + pMap->mt[i] = m + level_frame_types[m] + 0x8000; m = total_frames; } } @@ -492,13 +492,11 @@ int IsometricCoord(int x, int y) void SetSpeedCels() { - int i, x, y; + int x, y; for (x = 0; x < MAXDUNX; x++) { for (y = 0; y < MAXDUNY; y++) { - for (i = 0; i < 16; i++) { - dpiece_defs_map_1[IsometricCoord(x, y)][i] = dpiece_defs_map_2[x][y][i]; - } + dpiece_defs_map_1[IsometricCoord(x, y)] = dpiece_defs_map_2[x][y]; } } } @@ -506,7 +504,8 @@ void SetSpeedCels() void SetDungeonMicros() { int i, x, y, lv, blocks; - WORD *pMap, *pPiece; + WORD *pPiece; + MICROS *pMap; if (leveltype != DTYPE_HELL) { MicroTileLen = 10; @@ -519,7 +518,7 @@ void SetDungeonMicros() for (y = 0; y < MAXDUNY; y++) { for (x = 0; x < MAXDUNX; x++) { lv = dPiece[x][y]; - pMap = dpiece_defs_map_2[x][y]; + pMap = &dpiece_defs_map_2[x][y]; if (lv) { lv--; if (leveltype != DTYPE_HELL) @@ -527,10 +526,10 @@ void SetDungeonMicros() else pPiece = (WORD *)&pLevelPieces[32 * lv]; for (i = 0; i < blocks; i++) - pMap[i] = pPiece[(i & 1) + blocks - 2 - (i & 0xE)]; + pMap->mt[i] = pPiece[(i & 1) + blocks - 2 - (i & 0xE)]; } else { for (i = 0; i < blocks; i++) - pMap[i] = 0; + pMap->mt[i] = 0; } } } diff --git a/Source/gendung.h b/Source/gendung.h index f5e96e97a..861dc0bd1 100644 --- a/Source/gendung.h +++ b/Source/gendung.h @@ -13,7 +13,7 @@ extern BYTE *pSpeedCels; extern int nlevel_frames; // weak extern char pdungeon[40][40]; extern char dDead[MAXDUNX][MAXDUNY]; -extern WORD dpiece_defs_map_1[MAXDUNX * MAXDUNY][16]; +extern MICROS dpiece_defs_map_1[MAXDUNX * MAXDUNY]; extern char dPreLight[MAXDUNX][MAXDUNY]; extern char TransVal; // weak extern int MicroTileLen; @@ -67,7 +67,7 @@ extern int setpc_y; // idb extern char dMissile[MAXDUNX][MAXDUNY]; extern int dminx; // weak extern int dminy; // weak -extern WORD dpiece_defs_map_2[MAXDUNX][MAXDUNY][16]; +extern MICROS dpiece_defs_map_2[MAXDUNX][MAXDUNY]; void FillSolidBlockTbls(); void MakeSpeedCels(); diff --git a/Source/objects.cpp b/Source/objects.cpp index 3737b4ebc..098bb3262 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -2172,21 +2172,22 @@ void ProcessObjects() void ObjSetMicro(int dx, int dy, int pn) { - WORD *defs, *v; + WORD *v; + MICROS *defs; int i; dPiece[dx][dy] = pn; pn--; - defs = dpiece_defs_map_1[IsometricCoord(dx, dy)]; + defs = &dpiece_defs_map_1[IsometricCoord(dx, dy)]; if (leveltype != DTYPE_HELL) { v = (WORD *)pLevelPieces + 10 * pn; for (i = 0; i < 10; i++) { - defs[i] = v[(i & 1) - (i & 0xE) + 8]; + defs->mt[i] = v[(i & 1) - (i & 0xE) + 8]; } } else { v = (WORD *)pLevelPieces + 16 * pn; for (i = 0; i < 16; i++) { - defs[i] = v[(i & 1) - (i & 0xE) + 14]; + defs->mt[i] = v[(i & 1) - (i & 0xE) + 14]; } } } @@ -2204,8 +2205,8 @@ void objects_set_door_piece(int x, int y) v4 = dPiece[x][y] - 1; v5 = *((_WORD *)pLevelPieces + 10 * (unsigned short)v4 + 8); v6 = *((_WORD *)pLevelPieces + 10 * (unsigned short)v4 + 9); - dpiece_defs_map_1[0][16 * IsometricCoord(x, y)] = v5; - dpiece_defs_map_1[0][16 * IsometricCoord(v3, v2) + 1] = v6; + dpiece_defs_map_1[IsometricCoord(x, y)].mt[0] = v5; + dpiece_defs_map_1[IsometricCoord(v3, v2)].mt[1] = v6; } void ObjSetMini(int x, int y, int v) diff --git a/Source/player.cpp b/Source/player.cpp index 76eeb199c..3c1f72228 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -918,7 +918,7 @@ void CheckEFlag(int pnum, BOOL flag) { int x, y, i; int bitflags; - USHORT *pieces; + MICROS *pieces; if ((DWORD)pnum >= MAX_PLRS) { app_fatal("InitPlayer: illegal player %d", pnum); @@ -927,10 +927,10 @@ void CheckEFlag(int pnum, BOOL flag) x = plr[pnum].WorldX - 1; y = plr[pnum].WorldY + 1; bitflags = 0; - pieces = dpiece_defs_map_1[IsometricCoord(x, y)]; + pieces = &dpiece_defs_map_1[IsometricCoord(x, y)]; for (i = 2; i < 10; i++) { - bitflags |= pieces[i]; + bitflags |= pieces->mt[i]; } if (bitflags | nSolidTable[dPiece[x][y]] | dArch[x][y]) { @@ -946,10 +946,10 @@ void CheckEFlag(int pnum, BOOL flag) x = plr[pnum].WorldX; y = plr[pnum].WorldY + 2; bitflags = 0; - pieces = dpiece_defs_map_1[IsometricCoord(x, y)]; + pieces = &dpiece_defs_map_1[IsometricCoord(x, y)]; for (i = 2; i < 10; i++) { - bitflags |= pieces[i]; + bitflags |= pieces->mt[i]; } if (bitflags | dArch[x][y]) { @@ -959,10 +959,10 @@ void CheckEFlag(int pnum, BOOL flag) x = plr[pnum].WorldX - 2; y = plr[pnum].WorldY + 1; bitflags = 0; - pieces = dpiece_defs_map_1[IsometricCoord(x, y)]; + pieces = &dpiece_defs_map_1[IsometricCoord(x, y)]; for (i = 2; i < 10; i++) { - bitflags |= pieces[i]; + bitflags |= pieces->mt[i]; } if (bitflags | dArch[x][y]) { diff --git a/Source/scrollrt.cpp b/Source/scrollrt.cpp index c8218c072..1de0f3f7d 100644 --- a/Source/scrollrt.cpp +++ b/Source/scrollrt.cpp @@ -551,11 +551,11 @@ void scrollrt_draw_lower(int x, int y, int sx, int sy, int chunks, int eflag) { int i, j; BYTE *dst; - WORD *pMap; + MICROS *pMap; /// ASSERT: assert(gpBuffer); - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; if (eflag) { if ((DWORD)y < MAXDUNY && (DWORD)x < MAXDUNX) { @@ -565,33 +565,33 @@ void scrollrt_draw_lower(int x, int y, int sx, int sy, int chunks, int eflag) dst = &gpBuffer[sx + 32 + PitchTbl[sy]]; cel_transparency_active = (unsigned char)(nTransTable[level_piece_id] & TransList[dTransVal[x][y]]); arch_draw_type = 2; - level_cel_block = pMap[1]; + level_cel_block = pMap->mt[1]; if (level_cel_block != 0) { drawLowerScreen(dst); } arch_draw_type = 0; dst -= 768 * 32; - level_cel_block = pMap[3]; + level_cel_block = pMap->mt[3]; if (level_cel_block != 0) { drawLowerScreen(dst); } dst -= 768 * 32; - level_cel_block = pMap[5]; + level_cel_block = pMap->mt[5]; if (level_cel_block != 0) { drawLowerScreen(dst); } dst -= 768 * 32; - level_cel_block = pMap[7]; + level_cel_block = pMap->mt[7]; if (level_cel_block != 0) { drawLowerScreen(dst); } dst -= 768 * 32; - level_cel_block = pMap[9]; + level_cel_block = pMap->mt[9]; if (level_cel_block != 0) { drawLowerScreen(dst); } dst -= 768 * 32; - level_cel_block = pMap[11]; + level_cel_block = pMap->mt[11]; if (level_cel_block != 0 && leveltype == DTYPE_HELL) { drawLowerScreen(dst); } @@ -603,7 +603,7 @@ void scrollrt_draw_lower(int x, int y, int sx, int sy, int chunks, int eflag) x++; y--; sx += 64; - pMap += 16; + pMap++; chunks--; } @@ -622,23 +622,23 @@ void scrollrt_draw_lower(int x, int y, int sx, int sy, int chunks, int eflag) dst = &gpBuffer[sx + PitchTbl[sy]]; cel_transparency_active = (unsigned char)(nTransTable[level_piece_id] & TransList[dTransVal[x][y]]); arch_draw_type = 1; - level_cel_block = pMap[0]; + level_cel_block = pMap->mt[0]; if (level_cel_block != 0) { drawLowerScreen(dst); } arch_draw_type = 2; - level_cel_block = pMap[1]; + level_cel_block = pMap->mt[1]; if (level_cel_block != 0) { drawLowerScreen(dst + 32); } arch_draw_type = 0; for (i = 2; i < MicroTileLen; i += 2) { dst -= 768 * 32; - level_cel_block = pMap[i]; + level_cel_block = pMap->mt[i]; if (level_cel_block != 0) { drawLowerScreen(dst); } - level_cel_block = pMap[i + 1]; + level_cel_block = pMap->mt[i + 1]; if (level_cel_block != 0) { drawLowerScreen(dst + 32); } @@ -649,7 +649,7 @@ void scrollrt_draw_lower(int x, int y, int sx, int sy, int chunks, int eflag) x++; y--; sx += 64; - pMap += 16; + pMap++; } if (eflag && (DWORD)y < MAXDUNY && (DWORD)x < MAXDUNX) { @@ -661,33 +661,33 @@ void scrollrt_draw_lower(int x, int y, int sx, int sy, int chunks, int eflag) dst = &gpBuffer[sx + PitchTbl[sy]]; cel_transparency_active = (unsigned char)(nTransTable[level_piece_id] & TransList[dTransVal[x][y]]); arch_draw_type = 1; - level_cel_block = pMap[0]; + level_cel_block = pMap->mt[0]; if (level_cel_block != 0) { drawLowerScreen(dst); } arch_draw_type = 0; dst -= 768 * 32; - level_cel_block = pMap[2]; + level_cel_block = pMap->mt[2]; if (level_cel_block != 0) { drawLowerScreen(dst); } dst -= 768 * 32; - level_cel_block = pMap[4]; + level_cel_block = pMap->mt[4]; if (level_cel_block != 0) { drawLowerScreen(dst); } dst -= 768 * 32; - level_cel_block = pMap[6]; + level_cel_block = pMap->mt[6]; if (level_cel_block != 0) { drawLowerScreen(dst); } dst -= 768 * 32; - level_cel_block = pMap[8]; + level_cel_block = pMap->mt[8]; if (level_cel_block != 0) { drawLowerScreen(dst); } dst -= 768 * 32; - level_cel_block = pMap[10]; + level_cel_block = pMap->mt[10]; if (level_cel_block != 0 && leveltype == DTYPE_HELL) { drawLowerScreen(dst); } @@ -1034,7 +1034,7 @@ void scrollrt_draw_clipped_e_flag(BYTE *pBuff, int x, int y, int a4, int a5) { int i, lti_old, cta_old, lpi_old; BYTE *dst; - WORD *pMap; + MICROS *pMap; lti_old = light_table_index; cta_old = cel_transparency_active; @@ -1043,16 +1043,16 @@ void scrollrt_draw_clipped_e_flag(BYTE *pBuff, int x, int y, int a4, int a5) level_piece_id = dPiece[x][y]; light_table_index = dLight[x][y]; cel_transparency_active = (unsigned char)(nTransTable[level_piece_id] & TransList[dTransVal[x][y]]); - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; dst = pBuff; arch_draw_type = 1; - level_cel_block = pMap[0]; + level_cel_block = pMap->mt[0]; if (level_cel_block != 0) { drawLowerScreen(dst); } arch_draw_type = 2; - level_cel_block = pMap[1]; + level_cel_block = pMap->mt[1]; if (level_cel_block != 0) { drawLowerScreen(dst + 32); } @@ -1061,11 +1061,11 @@ void scrollrt_draw_clipped_e_flag(BYTE *pBuff, int x, int y, int a4, int a5) arch_draw_type = 0; for (i = 2; i < MicroTileLen; i += 2) { dst -= 768 * 32; - level_cel_block = pMap[i]; + level_cel_block = pMap->mt[i]; if (level_cel_block != 0) { drawLowerScreen(dst); } - level_cel_block = pMap[i + 1]; + level_cel_block = pMap->mt[i + 1]; if (level_cel_block != 0) { drawLowerScreen(dst + 32); } @@ -1087,11 +1087,11 @@ void scrollrt_draw_lower_2(int x, int y, int sx, int sy, int chunks, int skipChu { int i, j, CelSkip; BYTE *dst; - WORD *pMap; + MICROS *pMap; /// ASSERT: assert(gpBuffer); - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; CelSkip = 2 * skipChunks + 2; if (eflag) { @@ -1103,7 +1103,7 @@ void scrollrt_draw_lower_2(int x, int y, int sx, int sy, int chunks, int skipChu cel_transparency_active = (unsigned char)(nTransTable[level_piece_id] & TransList[dTransVal[x][y]]); for (i = 0; i < (MicroTileLen >> 1) - 1; i++) { if (skipChunks <= i) { - level_cel_block = pMap[2 * i + 3]; + level_cel_block = pMap->mt[2 * i + 3]; if (level_cel_block != 0) { drawLowerScreen(dst); } @@ -1119,7 +1119,7 @@ void scrollrt_draw_lower_2(int x, int y, int sx, int sy, int chunks, int skipChu y--; sx += 64; chunks--; - pMap += 16; + pMap++; } j = chunks; @@ -1137,11 +1137,11 @@ void scrollrt_draw_lower_2(int x, int y, int sx, int sy, int chunks, int skipChu i = 0; while (i < (MicroTileLen >> 1) - 1) { if (skipChunks <= i) { - level_cel_block = pMap[2 * i + 2]; + level_cel_block = pMap->mt[2 * i + 2]; if (level_cel_block != 0) { drawLowerScreen(dst); } - level_cel_block = pMap[2 * i + 3]; + level_cel_block = pMap->mt[2 * i + 3]; if (level_cel_block != 0) { drawLowerScreen(dst + 32); } @@ -1157,7 +1157,7 @@ void scrollrt_draw_lower_2(int x, int y, int sx, int sy, int chunks, int skipChu x++; y--; sx += 64; - pMap += 16; + pMap++; } if (eflag && (DWORD)y < MAXDUNY && (DWORD)x < MAXDUNX) { @@ -1168,7 +1168,7 @@ void scrollrt_draw_lower_2(int x, int y, int sx, int sy, int chunks, int skipChu cel_transparency_active = (unsigned char)(nTransTable[level_piece_id] & TransList[dTransVal[x][y]]); for (i = 0; i < (MicroTileLen >> 1) - 1; i++) { if (skipChunks <= i) { - level_cel_block = pMap[2 * i + 2]; + level_cel_block = pMap->mt[2 * i + 2]; if (level_cel_block != 0) { drawLowerScreen(dst); } @@ -1434,7 +1434,7 @@ void scrollrt_draw_clipped_e_flag_2(BYTE *pBuff, int x, int y, int skipChunks, s { int lti_old, cta_old, lpi_old; BYTE *dst; - WORD *pMap; + MICROS *pMap; lti_old = light_table_index; cta_old = cel_transparency_active; @@ -1444,45 +1444,45 @@ void scrollrt_draw_clipped_e_flag_2(BYTE *pBuff, int x, int y, int skipChunks, s light_table_index = dLight[x][y]; dst = &pBuff[768 * 32 * skipChunks]; cel_transparency_active = (unsigned char)(nTransTable[level_piece_id] & TransList[dTransVal[x][y]]); - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; switch (skipChunks) { case 0: - level_cel_block = pMap[2]; + level_cel_block = pMap->mt[2]; if (level_cel_block != 0) { drawLowerScreen(dst); } - level_cel_block = pMap[3]; + level_cel_block = pMap->mt[3]; if (level_cel_block != 0) { drawLowerScreen(dst + 32); } case 1: dst -= 768 * 32; - level_cel_block = pMap[4]; + level_cel_block = pMap->mt[4]; if (level_cel_block != 0) { drawLowerScreen(dst); } - level_cel_block = pMap[5]; + level_cel_block = pMap->mt[5]; if (level_cel_block != 0) { drawLowerScreen(dst + 32); } case 2: dst -= 768 * 32; - level_cel_block = pMap[6]; + level_cel_block = pMap->mt[6]; if (level_cel_block != 0) { drawLowerScreen(dst); } - level_cel_block = pMap[7]; + level_cel_block = pMap->mt[7]; if (level_cel_block != 0) { drawLowerScreen(dst + 32); } case 3: dst -= 768 * 32; - level_cel_block = pMap[8]; + level_cel_block = pMap->mt[8]; if (level_cel_block != 0) { drawLowerScreen(dst); } - level_cel_block = pMap[9]; + level_cel_block = pMap->mt[9]; if (level_cel_block != 0) { drawLowerScreen(dst + 32); } @@ -1506,11 +1506,11 @@ void scrollrt_draw_upper(int x, int y, int sx, int sy, int chunks, int capChunks { int i, j, CelCap; BYTE *dst; - WORD *pMap; + MICROS *pMap; /// ASSERT: assert(gpBuffer); - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; CelCap = 2 * capChunks + 2; if (CelCap > 8) { CelCap = 8; @@ -1524,7 +1524,7 @@ void scrollrt_draw_upper(int x, int y, int sx, int sy, int chunks, int capChunks dst = &gpBuffer[sx + 32 + PitchTbl[sy]]; cel_transparency_active = (unsigned char)(nTransTable[level_piece_id] & TransList[dTransVal[x][y]]); if (capChunks >= 0) { - level_cel_block = pMap[1]; + level_cel_block = pMap->mt[1]; if (level_cel_block != 0) { arch_draw_type = 2; drawUpperScreen(dst); @@ -1533,21 +1533,21 @@ void scrollrt_draw_upper(int x, int y, int sx, int sy, int chunks, int capChunks } dst -= 768 * 32; if (capChunks >= 1) { - level_cel_block = pMap[3]; + level_cel_block = pMap->mt[3]; if (level_cel_block != 0) { drawUpperScreen(dst); } } dst -= 768 * 32; if (capChunks >= 2) { - level_cel_block = pMap[5]; + level_cel_block = pMap->mt[5]; if (level_cel_block != 0) { drawUpperScreen(dst); } } dst -= 768 * 32; if (capChunks >= 3) { - level_cel_block = pMap[7]; + level_cel_block = pMap->mt[7]; if (level_cel_block != 0) { drawUpperScreen(dst); } @@ -1561,7 +1561,7 @@ void scrollrt_draw_upper(int x, int y, int sx, int sy, int chunks, int capChunks y--; sx += 64; chunks--; - pMap += 16; + pMap++; } for (j = 0; j < chunks; j++) { @@ -1572,12 +1572,12 @@ void scrollrt_draw_upper(int x, int y, int sx, int sy, int chunks, int capChunks dst = &gpBuffer[sx + PitchTbl[sy]]; cel_transparency_active = (unsigned char)(nTransTable[level_piece_id] & TransList[dTransVal[x][y]]); arch_draw_type = 1; - level_cel_block = pMap[0]; + level_cel_block = pMap->mt[0]; if (level_cel_block != 0) { drawUpperScreen(dst); } arch_draw_type = 2; - level_cel_block = pMap[1]; + level_cel_block = pMap->mt[1]; if (level_cel_block != 0) { drawUpperScreen(dst + 32); } @@ -1585,11 +1585,11 @@ void scrollrt_draw_upper(int x, int y, int sx, int sy, int chunks, int capChunks for (i = 1; i < (MicroTileLen >> 1) - 1; i++) { dst -= 768 * 32; if (capChunks >= i) { - level_cel_block = pMap[2 * i]; + level_cel_block = pMap->mt[2 * i]; if (level_cel_block != 0) { drawUpperScreen(dst); } - level_cel_block = pMap[2 * i + 1]; + level_cel_block = pMap->mt[2 * i + 1]; if (level_cel_block != 0) { drawUpperScreen(dst + 32); } @@ -1603,7 +1603,7 @@ void scrollrt_draw_upper(int x, int y, int sx, int sy, int chunks, int capChunks x++; y--; sx += 64; - pMap += 16; + pMap++; } if (eflag && y >= 0 && y < MAXDUNY && x >= 0 && x < MAXDUNX) { @@ -1614,7 +1614,7 @@ void scrollrt_draw_upper(int x, int y, int sx, int sy, int chunks, int capChunks cel_transparency_active = (unsigned char)(nTransTable[level_piece_id] & TransList[dTransVal[x][y]]); arch_draw_type = 1; if (capChunks >= 0) { - level_cel_block = pMap[0]; + level_cel_block = pMap->mt[0]; if (level_cel_block != 0) { drawUpperScreen(dst); } @@ -1622,21 +1622,21 @@ void scrollrt_draw_upper(int x, int y, int sx, int sy, int chunks, int capChunks arch_draw_type = 0; dst -= 768 * 32; if (capChunks >= 1) { - level_cel_block = pMap[2]; + level_cel_block = pMap->mt[2]; if (level_cel_block != 0) { drawUpperScreen(dst); } } dst -= 768 * 32; if (capChunks >= 2) { - level_cel_block = pMap[4]; + level_cel_block = pMap->mt[4]; if (level_cel_block != 0) { drawUpperScreen(dst); } } dst -= 768 * 32; if (capChunks >= 3) { - level_cel_block = pMap[6]; + level_cel_block = pMap->mt[6]; if (level_cel_block != 0) { drawUpperScreen(dst); } @@ -1972,7 +1972,7 @@ void scrollrt_draw_e_flag(BYTE *pBuff, int x, int y, int capChunks, int CelCap, { int i, lti_old, cta_old, lpi_old; BYTE *dst; - WORD *pMap; + MICROS *pMap; lti_old = light_table_index; cta_old = cel_transparency_active; @@ -1982,15 +1982,15 @@ void scrollrt_draw_e_flag(BYTE *pBuff, int x, int y, int capChunks, int CelCap, light_table_index = dLight[x][y]; dst = pBuff; cel_transparency_active = (unsigned char)(nTransTable[level_piece_id] & TransList[dTransVal[x][y]]); - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; arch_draw_type = 1; - level_cel_block = pMap[0]; + level_cel_block = pMap->mt[0]; if (level_cel_block != 0) { drawUpperScreen(dst); } arch_draw_type = 2; - level_cel_block = pMap[1]; + level_cel_block = pMap->mt[1]; if (level_cel_block != 0) { drawUpperScreen(dst + 32); } @@ -1999,11 +1999,11 @@ void scrollrt_draw_e_flag(BYTE *pBuff, int x, int y, int capChunks, int CelCap, for (i = 1; i < (MicroTileLen >> 1) - 1; i++) { dst -= 768 * 32; if (capChunks >= i) { - level_cel_block = pMap[2 * i]; + level_cel_block = pMap->mt[2 * i]; if (level_cel_block != 0) { drawUpperScreen(dst); } - level_cel_block = pMap[2 * i + 1]; + level_cel_block = pMap->mt[2 * i + 1]; if (level_cel_block != 0) { drawUpperScreen(dst + 32); } diff --git a/Source/town.cpp b/Source/town.cpp index 4ef5ede50..f70737426 100644 --- a/Source/town.cpp +++ b/Source/town.cpp @@ -144,17 +144,17 @@ void town_draw_clipped_e_flag(BYTE *pBuff, int x, int y, int sx, int sy) { int i; BYTE *dst; - WORD *pMap; + MICROS *pMap; dst = pBuff; - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; for (i = 0; i < 12; i += 2) { - level_cel_block = pMap[i]; + level_cel_block = pMap->mt[i]; if (level_cel_block != 0) { drawLowerScreen(dst); } - level_cel_block = pMap[i + 1]; + level_cel_block = pMap->mt[i + 1]; if (level_cel_block != 0) { drawLowerScreen(dst + 32); } @@ -236,7 +236,7 @@ void town_draw_lower(int x, int y, int sx, int sy, int a5, int some_flag) { int i, j; BYTE *dst; - WORD *pMap; + MICROS *pMap; /// ASSERT: assert(gpBuffer); @@ -245,9 +245,9 @@ void town_draw_lower(int x, int y, int sx, int sy, int a5, int some_flag) level_cel_block = dPiece[x][y]; if (level_cel_block != 0) { dst = &gpBuffer[sx + 32 + PitchTbl[sy]]; - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; for (i = 1; i < 17; i += 2) { - level_cel_block = pMap[i]; + level_cel_block = pMap->mt[i]; if (level_cel_block != 0) { drawLowerScreen(dst); } @@ -270,13 +270,13 @@ void town_draw_lower(int x, int y, int sx, int sy, int a5, int some_flag) level_cel_block = dPiece[x][y]; if (level_cel_block != 0) { dst = &gpBuffer[sx + PitchTbl[sy]]; - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; for (i = 0; i < 16; i += 2) { - level_cel_block = pMap[i]; + level_cel_block = pMap->mt[i]; if (level_cel_block != 0) { drawLowerScreen(dst); } - level_cel_block = pMap[i + 1]; + level_cel_block = pMap->mt[i + 1]; if (level_cel_block != 0) { drawLowerScreen(dst + 32); } @@ -299,9 +299,9 @@ void town_draw_lower(int x, int y, int sx, int sy, int a5, int some_flag) level_cel_block = dPiece[x][y]; if (level_cel_block != 0) { dst = &gpBuffer[sx + PitchTbl[sy]]; - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; for (i = 0; i < 16; i += 2) { - level_cel_block = pMap[i]; + level_cel_block = pMap->mt[i]; if (level_cel_block != 0) { drawLowerScreen(dst); } @@ -322,7 +322,7 @@ void town_draw_clipped_e_flag_2(BYTE *pBuff, int x, int y, int a4, int a5, int s { int i; BYTE *dst; - WORD *pMap; + MICROS *pMap; if (a4 == 0) { dst = pBuff; @@ -330,15 +330,15 @@ void town_draw_clipped_e_flag_2(BYTE *pBuff, int x, int y, int a4, int a5, int s dst = &pBuff[768 * 32 * a4]; } - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; for (i = 0; i < 6; i++) { if (a4 <= i) { - level_cel_block = pMap[2 * i + 2]; + level_cel_block = pMap->mt[2 * i + 2]; if (level_cel_block != 0) { drawLowerScreen(dst); } - level_cel_block = pMap[2 * i + 3]; + level_cel_block = pMap->mt[2 * i + 3]; if (level_cel_block != 0) { drawLowerScreen(dst + 32); } @@ -419,7 +419,7 @@ void town_draw_lower_2(int x, int y, int sx, int sy, int a5, int a6, int some_fl { int i, j, dir; BYTE *dst; - WORD *pMap; + MICROS *pMap; /// ASSERT: assert(gpBuffer); @@ -430,10 +430,10 @@ void town_draw_lower_2(int x, int y, int sx, int sy, int a5, int a6, int some_fl level_cel_block = dPiece[x][y]; if (level_cel_block != 0) { dst = &gpBuffer[sx - (768 * 32 - 32) + PitchTbl[sy]]; - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; for (i = 0; i < 7; i++) { if (a6 <= i) { - level_cel_block = pMap[2 * i + 3]; + level_cel_block = pMap->mt[2 * i + 3]; if (level_cel_block != 0) { drawLowerScreen(dst); } @@ -459,14 +459,14 @@ void town_draw_lower_2(int x, int y, int sx, int sy, int a5, int a6, int some_fl level_cel_block = dPiece[x][y]; if (level_cel_block != 0) { dst = &gpBuffer[sx - 768 * 32 + PitchTbl[sy]]; - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; for (i = 0; i < 7; i++) { if (a6 <= i) { - level_cel_block = pMap[2 * i + 2]; + level_cel_block = pMap->mt[2 * i + 2]; if (level_cel_block != 0) { drawLowerScreen(dst); } - level_cel_block = pMap[2 * i + 3]; + level_cel_block = pMap->mt[2 * i + 3]; if (level_cel_block != 0) { drawLowerScreen(dst + 32); } @@ -492,10 +492,10 @@ void town_draw_lower_2(int x, int y, int sx, int sy, int a5, int a6, int some_fl level_cel_block = dPiece[x][y]; if (level_cel_block != 0) { dst = &gpBuffer[sx - 768 * 32 + PitchTbl[sy]]; - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; for (i = 0; i < 7; i++) { if (a6 <= i) { - level_cel_block = pMap[2 * i + 2]; + level_cel_block = pMap->mt[2 * i + 2]; if (level_cel_block != 0) { drawLowerScreen(dst); } @@ -519,18 +519,18 @@ void town_draw_e_flag(BYTE *pBuff, int x, int y, int a4, int dir, int sx, int sy { int i; BYTE *dst; - WORD *pMap; + MICROS *pMap; dst = pBuff; - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; for (i = 0; i < 7; i++) { if (a4 >= i) { - level_cel_block = pMap[2 * i]; + level_cel_block = pMap->mt[2 * i]; if (level_cel_block != 0) { drawUpperScreen(dst); } - level_cel_block = pMap[2 * i + 1]; + level_cel_block = pMap->mt[2 * i + 1]; if (level_cel_block != 0) { drawUpperScreen(dst + 32); } @@ -614,7 +614,7 @@ void town_draw_upper(int x, int y, int sx, int sy, int a5, int a6, int some_flag { int i, j, dir; BYTE *dst; - WORD *pMap; + MICROS *pMap; /// ASSERT: assert(gpBuffer); @@ -628,10 +628,10 @@ void town_draw_upper(int x, int y, int sx, int sy, int a5, int a6, int some_flag level_cel_block = dPiece[x][y]; if (level_cel_block != 0) { dst = &gpBuffer[sx + 32 + PitchTbl[sy]]; - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; for (i = 0; i < 7; i++) { if (a6 >= i) { - level_cel_block = pMap[2 * i + 1]; + level_cel_block = pMap->mt[2 * i + 1]; if (level_cel_block != 0) { drawUpperScreen(dst); } @@ -655,14 +655,14 @@ void town_draw_upper(int x, int y, int sx, int sy, int a5, int a6, int some_flag level_cel_block = dPiece[x][y]; if (level_cel_block != 0) { dst = &gpBuffer[sx + PitchTbl[sy]]; - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; for (i = 0; i < 7; i++) { if (a6 >= i) { - level_cel_block = pMap[2 * i]; + level_cel_block = pMap->mt[2 * i]; if (level_cel_block != 0) { drawUpperScreen(dst); } - level_cel_block = pMap[2 * i + 1]; + level_cel_block = pMap->mt[2 * i + 1]; if (level_cel_block != 0) { drawUpperScreen(dst + 32); } @@ -686,10 +686,10 @@ void town_draw_upper(int x, int y, int sx, int sy, int a5, int a6, int some_flag level_cel_block = dPiece[x][y]; if (level_cel_block != 0) { dst = &gpBuffer[sx + PitchTbl[sy]]; - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; for (i = 0; i < 7; i++) { if (a6 >= i) { - level_cel_block = pMap[2 * i]; + level_cel_block = pMap->mt[2 * i]; if (level_cel_block != 0) { drawUpperScreen(dst); } @@ -1059,21 +1059,22 @@ void T_DrawView(int StartX, int StartY) void SetTownMicros() { int i, x, y, lv; - WORD *pMap, *pPiece; + WORD *pPiece; + MICROS *pMap; for (y = 0; y < MAXDUNY; y++) { for (x = 0; x < MAXDUNX; x++) { lv = dPiece[x][y]; - pMap = dpiece_defs_map_1[IsometricCoord(x, y)]; + pMap = &dpiece_defs_map_1[IsometricCoord(x, y)]; if (lv != 0) { lv--; pPiece = (WORD *)&pLevelPieces[32 * lv]; for (i = 0; i < 16; i++) { - pMap[i] = pPiece[(i & 1) + 14 - (i & 0xE)]; + pMap->mt[i] = pPiece[(i & 1) + 14 - (i & 0xE)]; } } else { for (i = 0; i < 16; i++) { - pMap[i] = 0; + pMap->mt[i] = 0; } } } diff --git a/structs.h b/structs.h index 9071368d1..cccee5bbc 100644 --- a/structs.h +++ b/structs.h @@ -1117,6 +1117,10 @@ typedef struct THEME_LOC { int height; } THEME_LOC; +typedef struct MICROS { + WORD mt[16]; +} MICROS; + ////////////////////////////////////////////////// // drlg //////////////////////////////////////////////////