shithub: cstory

Download patch

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