diff --git a/Source/render.cpp b/Source/render.cpp index ad6ef8335..a7b362f69 100644 --- a/Source/render.cpp +++ b/Source/render.cpp @@ -13,7 +13,7 @@ enum { RT_RTRAPEZOID }; -static DWORD RightMask[32] = { +static DWORD RightMask[TILE_HEIGHT] = { 0xEAAAAAAA, 0xF5555555, 0xFEAAAAAA, 0xFF555555, 0xFFEAAAAA, 0xFFF55555, @@ -32,7 +32,7 @@ static DWORD RightMask[32] = { 0xFFFFFFFF, 0xFFFFFFFF }; -static DWORD LeftMask[32] = { +static DWORD LeftMask[TILE_HEIGHT] = { 0xAAAAAAAB, 0x5555555F, 0xAAAAAABF, 0x555555FF, 0xAAAAABFF, 0x55555FFF, @@ -51,7 +51,7 @@ static DWORD LeftMask[32] = { 0xFFFFFFFF, 0xFFFFFFFF }; -static DWORD WallMask[32] = { +static DWORD WallMask[TILE_HEIGHT] = { 0xAAAAAAAA, 0x55555555, 0xAAAAAAAA, 0x55555555, 0xAAAAAAAA, 0x55555555, @@ -70,7 +70,7 @@ static DWORD WallMask[32] = { 0xAAAAAAAA, 0x55555555 }; -static DWORD SolidMask[32] = { +static DWORD SolidMask[TILE_HEIGHT] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, @@ -89,7 +89,7 @@ static DWORD SolidMask[32] = { 0xFFFFFFFF, 0xFFFFFFFF }; -static DWORD RightFoliageMask[32] = { +static DWORD RightFoliageMask[TILE_HEIGHT] = { 0xFFFFFFFF, 0x3FFFFFFF, 0x0FFFFFFF, 0x03FFFFFF, 0x00FFFFFF, 0x003FFFFF, @@ -108,7 +108,7 @@ static DWORD RightFoliageMask[32] = { 0x0FFFFFFF, 0x3FFFFFFF, }; -static DWORD LeftFoliageMask[32] = { +static DWORD LeftFoliageMask[TILE_HEIGHT] = { 0xFFFFFFFF, 0xFFFFFFFC, 0xFFFFFFF0, 0xFFFFFFC0, 0xFFFFFF00, 0xFFFFFC00, @@ -198,22 +198,22 @@ void RenderTile(BYTE *pBuff) tile = (level_cel_block & 0x7000) >> 12; tbl = &pLightTbl[256 * light_table_index]; - mask = &SolidMask[31]; + mask = &SolidMask[TILE_HEIGHT - 1]; if (cel_transparency_active) { if (arch_draw_type == 0) { - mask = &WallMask[31]; + mask = &WallMask[TILE_HEIGHT - 1]; } if (arch_draw_type == 1 && tile != RT_LTRIANGLE) { c = block_lvid[level_piece_id]; if (c == 1 || c == 3) { - mask = &LeftMask[31]; + mask = &LeftMask[TILE_HEIGHT - 1]; } } if (arch_draw_type == 2 && tile != RT_RTRIANGLE) { c = block_lvid[level_piece_id]; if (c == 2 || c == 3) { - mask = &RightMask[31]; + mask = &RightMask[TILE_HEIGHT - 1]; } } } else if (arch_draw_type && cel_foliage_active) { @@ -221,29 +221,29 @@ void RenderTile(BYTE *pBuff) return; } if (arch_draw_type == 1) { - mask = &LeftFoliageMask[31]; + mask = &LeftFoliageMask[TILE_HEIGHT - 1]; } if (arch_draw_type == 2) { - mask = &RightFoliageMask[31]; + mask = &RightFoliageMask[TILE_HEIGHT - 1]; } } #ifdef _DEBUG if (GetAsyncKeyState(VK_MENU) & 0x8000) { - mask = &SolidMask[31]; + mask = &SolidMask[TILE_HEIGHT - 1]; } #endif switch (tile) { case RT_SQUARE: - for (i = 32; i != 0; i--, dst -= BUFFER_WIDTH + 32, mask--) { - RenderLine(&dst, &src, 32, tbl, *mask); + for (i = TILE_HEIGHT; i != 0; i--, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) { + RenderLine(&dst, &src, TILE_WIDTH / 2, tbl, *mask); } break; case RT_TRANSPARENT: - for (i = 32; i != 0; i--, dst -= BUFFER_WIDTH + 32, mask--) { + for (i = TILE_HEIGHT; i != 0; i--, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) { m = *mask; - for (j = 32; j != 0; j -= v, v == 32 ? m = 0 : m <<= v) { + for (j = TILE_WIDTH / 2; j != 0; j -= v, v == TILE_WIDTH / 2 ? m = 0 : m <<= v) { v = *src++; if (v >= 0) { RenderLine(&dst, &src, v, tbl, m); @@ -255,47 +255,47 @@ void RenderTile(BYTE *pBuff) } break; case RT_LTRIANGLE: - for (i = 30; i >= 0; i -= 2, dst -= BUFFER_WIDTH + 32, mask--) { + for (i = TILE_HEIGHT - 2; i >= 0; i -= 2, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) { src += i & 2; dst += i; - RenderLine(&dst, &src, 32 - i, tbl, *mask); + RenderLine(&dst, &src, TILE_WIDTH / 2 - i, tbl, *mask); } - for (i = 2; i != 32; i += 2, dst -= BUFFER_WIDTH + 32, mask--) { + for (i = 2; i != TILE_WIDTH / 2; i += 2, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) { src += i & 2; dst += i; - RenderLine(&dst, &src, 32 - i, tbl, *mask); + RenderLine(&dst, &src, TILE_WIDTH / 2 - i, tbl, *mask); } break; case RT_RTRIANGLE: - for (i = 30; i >= 0; i -= 2, dst -= BUFFER_WIDTH + 32, mask--) { - RenderLine(&dst, &src, 32 - i, tbl, *mask); + for (i = TILE_HEIGHT - 2; i >= 0; i -= 2, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) { + RenderLine(&dst, &src, TILE_WIDTH / 2 - i, tbl, *mask); src += i & 2; dst += i; } - for (i = 2; i != 32; i += 2, dst -= BUFFER_WIDTH + 32, mask--) { - RenderLine(&dst, &src, 32 - i, tbl, *mask); + for (i = 2; i != TILE_HEIGHT; i += 2, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) { + RenderLine(&dst, &src, TILE_WIDTH / 2 - i, tbl, *mask); src += i & 2; dst += i; } break; case RT_LTRAPEZOID: - for (i = 30; i >= 0; i -= 2, dst -= BUFFER_WIDTH + 32, mask--) { + for (i = TILE_HEIGHT - 2; i >= 0; i -= 2, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) { src += i & 2; dst += i; - RenderLine(&dst, &src, 32 - i, tbl, *mask); + RenderLine(&dst, &src, TILE_WIDTH / 2 - i, tbl, *mask); } - for (i = 16; i != 0; i--, dst -= BUFFER_WIDTH + 32, mask--) { - RenderLine(&dst, &src, 32, tbl, *mask); + for (i = TILE_HEIGHT / 2; i != 0; i--, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) { + RenderLine(&dst, &src, TILE_WIDTH / 2, tbl, *mask); } break; case RT_RTRAPEZOID: - for (i = 30; i >= 0; i -= 2, dst -= BUFFER_WIDTH + 32, mask--) { - RenderLine(&dst, &src, 32 - i, tbl, *mask); + for (i = TILE_HEIGHT - 2; i >= 0; i -= 2, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) { + RenderLine(&dst, &src, TILE_WIDTH / 2 - i, tbl, *mask); src += i & 2; dst += i; } - for (i = 16; i != 0; i--, dst -= BUFFER_WIDTH + 32, mask--) { - RenderLine(&dst, &src, 32, tbl, *mask); + for (i = TILE_HEIGHT / 2; i != 0; i--, dst -= BUFFER_WIDTH + TILE_WIDTH / 2, mask--) { + RenderLine(&dst, &src, TILE_WIDTH / 2, tbl, *mask); } break; } @@ -311,20 +311,20 @@ void world_draw_black_tile(int sx, int sy) int i, j, k; BYTE *dst; - if (sx >= SCREEN_X + SCREEN_WIDTH || sy >= SCREEN_Y + VIEWPORT_HEIGHT + 32) + if (sx >= SCREEN_X + SCREEN_WIDTH || sy >= SCREEN_Y + VIEWPORT_HEIGHT + TILE_WIDTH / 2) return; - if (sx < SCREEN_X - 60 || sy < SCREEN_Y) + if (sx < SCREEN_X - (TILE_WIDTH - 4) || sy < SCREEN_Y) return; - dst = &gpBuffer[sx + BUFFER_WIDTH * sy] + 30; + dst = &gpBuffer[sx + BUFFER_WIDTH * sy] + TILE_WIDTH / 2 - 2; - for (i = 30, j = 1; i >= 0; i -= 2, j++, dst -= BUFFER_WIDTH + 2) { + for (i = TILE_HEIGHT - 2, j = 1; i >= 0; i -= 2, j++, dst -= BUFFER_WIDTH + 2) { if (dst < gpBufEnd) memset(dst, 0, 4 * j); } dst += 4; - for (i = 2, j = 15; i != 32; i += 2, j--, dst -= BUFFER_WIDTH - 2) { + for (i = 2, j = TILE_HEIGHT / 2 - 1; i != TILE_HEIGHT; i += 2, j--, dst -= BUFFER_WIDTH - 2) { if (dst < gpBufEnd) memset(dst, 0, 4 * j); }