ref: 5ba0454bc800d519eb966347c73852dcb0278272
parent: 995a4f7a7968f5399de1459a6534cca7cc3e44a5
author: Clownacy <Clownacy@users.noreply.github.com>
date: Thu Feb 21 14:46:52 EST 2019
Made Fade.cpp ASM-accurate
--- a/src/Draw.cpp
+++ b/src/Draw.cpp
@@ -474,6 +474,11 @@
surf[to].needs_updating = true;
}
+unsigned long GetCortBoxColor(unsigned long col)
+{
+ return ((col & 0xFF) << 16) | (col & 0xFF00) | ((col & 0xFF0000) >> 16);
+}
+
void CortBox(RECT *rect, uint32_t col)
{
//Get rect
--- a/src/Draw.h
+++ b/src/Draw.h
@@ -4,6 +4,10 @@
#include "WindowsWrapper.h"
+#ifndef RGB
+#define RGB(r,g,b) ((r) | ((g) << 8) | ((b) << 16))
+#endif
+
extern RECT grcGame;
extern RECT grcFull;
@@ -63,6 +67,7 @@
void PutBitmap3(RECT *rcView, int x, int y, RECT *rect, Surface_Ids surf_no);
void PutBitmap4(RECT *rcView, int x, int y, RECT *rect, Surface_Ids surf_no);
void Surface2Surface(int x, int y, RECT *rect, int to, int from);
+unsigned long GetCortBoxColor(unsigned long col);
void CortBox(RECT *rect, uint32_t col);
void CortBox2(RECT *rect, uint32_t col, Surface_Ids surf_no);
void InitTextObject(const char *font_name);
--- a/src/Fade.cpp
+++ b/src/Fade.cpp
@@ -8,20 +8,22 @@
#include "Game.h"
FADE gFade;
+static unsigned long mask_color;
void InitFade()
{
memset(&gFade, 0, sizeof(FADE));
+ mask_color = GetCortBoxColor(RGB(0, 0, 0x20));
}
void SetFadeMask()
{
- gFade.bMask = true;
+ gFade.bMask = TRUE;
}
void ClearFade()
{
- gFade.bMask = false;
+ gFade.bMask = FALSE;
gFade.mode = 0;
}
@@ -30,7 +32,7 @@
gFade.mode = 2;
gFade.count = 0;
gFade.dir = dir;
- gFade.bMask = false;
+ gFade.bMask = FALSE;
for (int y = 0; y < FADE_HEIGHT; y++)
{
@@ -37,7 +39,7 @@
for (int x = 0; x < FADE_WIDTH; x++)
{
gFade.ani_no[y][x] = 0;
- gFade.flag[y][x] = 0;
+ gFade.flag[y][x] = FALSE;
}
}
}
@@ -44,225 +46,234 @@
void StartFadeIn(char dir)
{
+ int x;
+ int y;
+
gFade.mode = 1;
gFade.count = 0;
gFade.dir = dir;
- gFade.bMask = true;
+ gFade.bMask = TRUE;
- for (int y = 0; y < FADE_HEIGHT; y++)
+ for (y = 0; y < FADE_HEIGHT; y++)
{
- for (int x = 0; x < FADE_WIDTH; x++)
+ for (x = 0; x < FADE_WIDTH; x++)
{
gFade.ani_no[y][x] = 15;
- gFade.flag[y][x] = 0;
+ gFade.flag[y][x] = FALSE;
}
}
+
+ x = x; // What
}
void ProcFade()
{
- if (gFade.mode == 1)
+ int x;
+ int y;
+
+ switch (gFade.mode)
{
- gFade.bMask = false;
-
- switch (gFade.dir)
- {
- case 0:
- for (int y = 0; y < FADE_HEIGHT; y++)
- {
- for (int x = 0; x <= FADE_WIDTH; x++)
+ case 2:
+ switch (gFade.dir)
+ {
+ case 0:
+ for (y = 0; y < FADE_HEIGHT; y++)
{
- if ((FADE_WIDTH - 1) - gFade.count == x)
- gFade.flag[y][x] = 1;
+ for (x = 0; x < FADE_WIDTH; x++)
+ {
+ if ((FADE_WIDTH - 1) - gFade.count == x)
+ gFade.flag[y][x] = TRUE;
+ }
}
- }
- break;
-
- case 1:
- for (int y = 0; y < FADE_HEIGHT; y++)
- {
- for (int x = 0; x < FADE_WIDTH; x++)
+ break;
+
+ case 2:
+ for (y = 0; y < FADE_HEIGHT; y++)
{
- if ((FADE_HEIGHT - 1) - gFade.count == y)
- gFade.flag[y][x] = 1;
+ for (x = 0; x < FADE_WIDTH; x++)
+ {
+ if (gFade.count == x)
+ gFade.flag[y][x] = TRUE;
+ }
}
- }
- break;
-
- case 2:
- for (int y = 0; y < FADE_HEIGHT; y++)
- {
- for (int x = 0; x < FADE_WIDTH; x++)
+ break;
+
+ case 1:
+ for (y = 0; y < FADE_HEIGHT; y++)
{
- if (gFade.count == x)
- gFade.flag[y][x] = 1;
+ for (x = 0; x < FADE_WIDTH; x++)
+ {
+ if ((FADE_HEIGHT - 1) - gFade.count == y)
+ gFade.flag[y][x] = TRUE;
+ }
}
- }
- break;
-
- case 3:
- for (int y = 0; y < FADE_HEIGHT; y++)
- {
- for (int x = 0; x < FADE_WIDTH; x++)
+ break;
+
+ case 3:
+ for (y = 0; y < FADE_HEIGHT; y++)
{
- if (gFade.count == y)
- gFade.flag[y][x] = 1;
+ for (x = 0; x < FADE_WIDTH; x++)
+ {
+ if (gFade.count == y)
+ gFade.flag[y][x] = TRUE;
+ }
}
- }
- break;
-
- case 4:
- for (int y = 0; y < (FADE_HEIGHT / 2); y++)
- {
- for (int x = 0; x < (FADE_WIDTH / 2); x++)
+ break;
+
+ case 4:
+ for (y = 0; y < (FADE_HEIGHT / 2); y++)
{
- if ((FADE_WIDTH - 1) - gFade.count == x + y)
- gFade.flag[y][x] = 1;
+ for (x = 0; x < (FADE_WIDTH / 2); x++)
+ {
+ if (gFade.count == x + y)
+ gFade.flag[y][x] = TRUE;
+ }
}
- }
- for (int y = 0; y < (FADE_HEIGHT / 2); y++)
- {
- for (int x = (FADE_WIDTH / 2); x < FADE_WIDTH; x++)
+ for (y = 0; y < (FADE_HEIGHT / 2); y++)
{
- if ((FADE_WIDTH - 1) - gFade.count == y + ((FADE_WIDTH - 1) - x))
- gFade.flag[y][x] = 1;
+ for (x = (FADE_WIDTH / 2); x < FADE_WIDTH; x++)
+ {
+ if (gFade.count == y + ((FADE_WIDTH - 1) - x))
+ gFade.flag[y][x] = TRUE;
+ }
}
- }
- for (int y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; y++)
- {
- for (int x = 0; x < (FADE_WIDTH / 2); x++)
+ for (y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; y++)
{
- if ((FADE_WIDTH - 1) - gFade.count == x + ((FADE_HEIGHT - 1) - y))
- gFade.flag[y][x] = 1;
+ for (x = 0; x < (FADE_WIDTH / 2); x++)
+ {
+ if (gFade.count == x + ((FADE_HEIGHT - 1) - y))
+ gFade.flag[y][x] = TRUE;
+ }
}
- }
- for (int y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; y++)
- {
- for (int x = (FADE_WIDTH / 2); x < FADE_WIDTH; x++)
+ for (y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; y++)
{
- if ((FADE_WIDTH - 1) - gFade.count == ((FADE_WIDTH - 1) - x) + ((FADE_HEIGHT - 1) - y))
- gFade.flag[y][x] = 1;
+ for (x = (FADE_WIDTH / 2); x < FADE_WIDTH; x++)
+ {
+ if (gFade.count == ((FADE_WIDTH - 1) - x) + ((FADE_HEIGHT - 1) - y))
+ gFade.flag[y][x] = TRUE;
+ }
}
+ break;
+ }
+
+ for (y = 0; y < FADE_HEIGHT; y++)
+ {
+ for (x = 0; x < FADE_WIDTH; x++)
+ {
+ if (gFade.ani_no[y][x] < 15 && gFade.flag[y][x])
+ ++gFade.ani_no[y][x];
}
- break;
-
- default:
- break;
- }
-
- for (int y = 0; y < FADE_HEIGHT; y++)
- {
- for (int x = 0; x < FADE_WIDTH; x++)
+ }
+
+ if (++gFade.count > ((FADE_WIDTH > FADE_HEIGHT) ? FADE_WIDTH : FADE_HEIGHT) + 16)
{
- if (gFade.ani_no[y][x] > 0 && gFade.flag[y][x])
- --gFade.ani_no[y][x];
+ gFade.bMask = TRUE;
+ gFade.mode = 0;
}
- }
-
- if (++gFade.count > ((FADE_WIDTH > FADE_HEIGHT) ? FADE_WIDTH : FADE_HEIGHT) + 16)
- gFade.mode = 0;
- }
- else if (gFade.mode == 2)
- {
- switch (gFade.dir)
- {
- case 0:
- for (int y = 0; y < FADE_HEIGHT; y++)
- {
- for (int x = 0; x <= FADE_WIDTH; x++)
+
+ break;
+
+ case 1:
+ gFade.bMask = FALSE;
+
+ switch (gFade.dir)
+ {
+ case 0:
+ for (y = 0; y < FADE_HEIGHT; y++)
{
- if ((FADE_WIDTH - 1) - gFade.count == x)
- gFade.flag[y][x] = 1;
+ for (x = 0; x < FADE_WIDTH; x++)
+ {
+ if ((FADE_WIDTH - 1) - gFade.count == x)
+ gFade.flag[y][x] = TRUE;
+ }
}
- }
- break;
-
- case 1:
- for (int y = 0; y < FADE_HEIGHT; y++)
- {
- for (int x = 0; x < FADE_WIDTH; x++)
+ break;
+
+ case 2:
+ for (y = 0; y < FADE_HEIGHT; y++)
{
- if ((FADE_HEIGHT - 1) - gFade.count == y)
- gFade.flag[y][x] = 1;
+ for (x = 0; x < FADE_WIDTH; x++)
+ {
+ if (gFade.count == x)
+ gFade.flag[y][x] = TRUE;
+ }
}
- }
- break;
-
- case 2:
- for (int y = 0; y < FADE_HEIGHT; y++)
- {
- for (int x = 0; x < FADE_WIDTH; x++)
+ break;
+
+ case 1:
+ for (y = 0; y < FADE_HEIGHT; y++)
{
- if (gFade.count == x)
- gFade.flag[y][x] = 1;
+ for (x = 0; x < FADE_WIDTH; x++)
+ {
+ if ((FADE_HEIGHT - 1) - gFade.count == y)
+ gFade.flag[y][x] = TRUE;
+ }
}
- }
- break;
-
- case 3:
- for (int y = 0; y < FADE_HEIGHT; y++)
- {
- for (int x = 0; x < FADE_WIDTH; x++)
+ break;
+
+ case 3:
+ for (y = 0; y < FADE_HEIGHT; y++)
{
- if (gFade.count == y)
- gFade.flag[y][x] = 1;
+ for (x = 0; x < FADE_WIDTH; x++)
+ {
+ if (gFade.count == y)
+ gFade.flag[y][x] = TRUE;
+ }
}
- }
- break;
-
- case 4:
- for (int y = 0; y < (FADE_HEIGHT / 2); y++)
- {
- for (int x = 0; x < (FADE_WIDTH / 2); x++)
+ break;
+
+ case 4:
+ for (y = 0; y < (FADE_HEIGHT / 2); y++)
{
- if (gFade.count == x + y)
- gFade.flag[y][x] = 1;
+ for (x = 0; x < (FADE_WIDTH / 2); x++)
+ {
+ if ((FADE_WIDTH - 1) - gFade.count == x + y)
+ gFade.flag[y][x] = TRUE;
+ }
}
- }
- for (int y = 0; y < (FADE_HEIGHT / 2); y++)
- {
- for (int x = (FADE_WIDTH / 2); x < FADE_WIDTH; x++)
+ for (y = 0; y < (FADE_HEIGHT / 2); y++)
{
- if (gFade.count == y + ((FADE_WIDTH - 1) - x))
- gFade.flag[y][x] = 1;
+ for (x = (FADE_WIDTH / 2); x < FADE_WIDTH; x++)
+ {
+ if ((FADE_WIDTH - 1) - gFade.count == y + ((FADE_WIDTH - 1) - x))
+ gFade.flag[y][x] = TRUE;
+ }
}
- }
- for (int y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; y++)
- {
- for (int x = 0; x < (FADE_WIDTH / 2); x++)
+ for (y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; y++)
{
- if (gFade.count == x + ((FADE_HEIGHT - 1) - y))
- gFade.flag[y][x] = 1;
+ for (x = 0; x < (FADE_WIDTH / 2); x++)
+ {
+ if ((FADE_WIDTH - 1) - gFade.count == x + ((FADE_HEIGHT - 1) - y))
+ gFade.flag[y][x] = TRUE;
+ }
}
- }
- for (int y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; y++)
- {
- for (int x = (FADE_WIDTH / 2); x < FADE_WIDTH; x++)
+ for (y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; y++)
{
- if (gFade.count == ((FADE_WIDTH - 1) - x) + ((FADE_HEIGHT - 1) - y))
- gFade.flag[y][x] = 1;
+ for (x = (FADE_WIDTH / 2); x < FADE_WIDTH; x++)
+ {
+ if ((FADE_WIDTH - 1) - gFade.count == ((FADE_WIDTH - 1) - x) + ((FADE_HEIGHT - 1) - y))
+ gFade.flag[y][x] = TRUE;
+ }
}
- }
- break;
-
- default:
- break;
- }
-
- for (int y = 0; y < FADE_HEIGHT; y++)
- {
- for (int x = 0; x < FADE_WIDTH; x++)
+ break;
+
+ default:
+ break;
+ }
+
+ for (y = 0; y < FADE_HEIGHT; y++)
{
- if (gFade.ani_no[y][x] < 15 && gFade.flag[y][x])
- ++gFade.ani_no[y][x];
+ for (x = 0; x < FADE_WIDTH; x++)
+ {
+ if (gFade.ani_no[y][x] > 0 && gFade.flag[y][x])
+ --gFade.ani_no[y][x];
+ }
}
- }
-
- if (++gFade.count > ((FADE_WIDTH > FADE_HEIGHT) ? FADE_WIDTH : FADE_HEIGHT) + 16)
- {
- gFade.bMask = true;
- gFade.mode = 0;
- }
+
+ if (++gFade.count > ((FADE_WIDTH > FADE_HEIGHT) ? FADE_WIDTH : FADE_HEIGHT) + 16)
+ gFade.mode = 0;
+
+ break;
}
}
@@ -274,23 +285,28 @@
if (gFade.bMask)
{
- CortBox(&grcGame, 0x000020);
+ CortBox(&grcGame, mask_color);
+ return;
}
- else if (gFade.mode)
+
+ if (gFade.mode == 0)
+ return;
+
+ for (int y = 0; y < FADE_HEIGHT; y++)
{
- for (int y = 0; y < FADE_HEIGHT; y++)
+ for (int x = 0; x < FADE_WIDTH; x++)
{
- for (int x = 0; x < FADE_WIDTH; x++)
- {
- rect.left = 16 * gFade.ani_no[y][x];
- rect.right = rect.left + 16;
- PutBitmap3(&grcGame, 16 * x, 16 * y, &rect, SURFACE_ID_FADE);
- }
+ rect.left = 16 * gFade.ani_no[y][x];
+ rect.right = rect.left + 16;
+ PutBitmap3(&grcGame, 16 * x, 16 * y, &rect, SURFACE_ID_FADE);
}
}
}
-bool GetFadeActive()
+BOOL GetFadeActive()
{
- return gFade.mode != 0;
+ if (gFade.mode == 0)
+ return FALSE;
+ else
+ return TRUE;
}
--- a/src/Fade.h
+++ b/src/Fade.h
@@ -1,6 +1,7 @@
#pragma once
#include "CommonDefines.h"
+#include "WindowsWrapper.h"
#define FADE_WIDTH (((WINDOW_WIDTH - 1) >> 4) + 1)
#define FADE_HEIGHT (((WINDOW_HEIGHT - 1) >> 4) + 1)
@@ -8,10 +9,10 @@
struct FADE
{
int mode;
- bool bMask;
+ BOOL bMask;
int count;
char ani_no[FADE_HEIGHT][FADE_WIDTH];
- char flag[FADE_HEIGHT][FADE_WIDTH];
+ BOOLEAN flag[FADE_HEIGHT][FADE_WIDTH];
char dir;
};
@@ -22,4 +23,4 @@
void StartFadeIn(char dir);
void ProcFade();
void PutFade();
-bool GetFadeActive();
+BOOL GetFadeActive();
--- a/src/WindowsWrapper.h
+++ b/src/WindowsWrapper.h
@@ -4,6 +4,7 @@
void rep_srand(unsigned int seed);
typedef int BOOL;
+typedef unsigned char BOOLEAN;
#ifndef FALSE
#define FALSE 0