shithub: cstory

Download patch

ref: a7f62c01a580737b40b1c8e616870dd9b1cc5900
parent: afc7f80ae945f1047eec7d7eae595d5f3771b658
author: cuckydev <cuckydev@users.noreply.github.com>
date: Tue Jan 22 05:48:16 EST 2019

added fading

--- a/Makefile
+++ b/Makefile
@@ -25,6 +25,7 @@
 	Draw \
 	Ending \
 	Escape \
+	Fade \
 	Flags \
 	Game \
 	Generic \
--- a/src/Escape.cpp
+++ b/src/Escape.cpp
@@ -11,17 +11,17 @@
 		//Get pressed keys
 		GetTrg();
 		
-		if (gKeyTrg & 0x8000) //Escape is pressed, quit game
+		if (gKeyTrg & KEY_ESCAPE) //Escape is pressed, quit game
 		{
 			gKeyTrg = 0;
 			return 0;
 		}
-		if (gKeyTrg & 0x400) //F1 is pressed, continue
+		if (gKeyTrg & KEY_F1) //F1 is pressed, continue
 		{
 			gKeyTrg = 0;
 			return 1;
 		}
-		if (gKeyTrg & 0x800) //F2 is pressed, reset
+		if (gKeyTrg & KEY_F2) //F2 is pressed, reset
 		{
 			gKeyTrg = 0;
 			return 2;
--- /dev/null
+++ b/src/Fade.cpp
@@ -1,0 +1,295 @@
+#include <string>
+
+#include "WindowsWrapper.h"
+
+#include "Fade.h"
+#include "Game.h"
+#include "Draw.h"
+
+FADE gFade;
+
+void InitFade()
+{
+	memset(&gFade, 0, sizeof(FADE));
+}
+
+void SetFadeMask()
+{
+	gFade.bMask = true;
+}
+
+void ClearFade()
+{
+	gFade.bMask = false;
+	gFade.mode = 0;
+}
+
+void StartFadeOut(char dir)
+{
+	gFade.mode = 2;
+	gFade.count = 0;
+	gFade.dir = dir;
+	gFade.bMask = false;
+	
+	for (int y = 0; y < FADE_HEIGHT; y++)
+	{
+		for (int x = 0; x < FADE_WIDTH; x++)
+		{
+			gFade.ani_no[y][x] = 0;
+			gFade.flag[y][x] = 0;
+		}
+	}
+}
+
+void StartFadeIn(char dir)
+{
+	gFade.mode = 1;
+	gFade.count = 0;
+	gFade.dir = dir;
+	gFade.bMask = true;
+	
+	for (int y = 0; y < FADE_HEIGHT; y++)
+	{
+		for (int x = 0; x < FADE_WIDTH; x++)
+		{
+			gFade.ani_no[y][x] = 15;
+			gFade.flag[y][x] = 0;
+		}
+	}
+}
+
+void ProcFade()
+{
+	if (gFade.mode == 1)
+	{
+		gFade.bMask = false;
+		
+		switch (gFade.dir)
+		{
+			case 0:
+				for (int y = 0; y < FADE_HEIGHT; y++)
+				{
+					for (int x = 0; x <= FADE_WIDTH; x++)
+					{
+						if ((FADE_WIDTH - 1) - gFade.count == x)
+							gFade.flag[y][x] = 1;
+					}
+				}
+				break;
+				
+			case 1:
+				for (int y = 0; y < FADE_HEIGHT; y++)
+				{
+					for (int x = 0; x < FADE_WIDTH; x++)
+					{
+						if ((FADE_HEIGHT - 1) - gFade.count == y)
+							gFade.flag[y][x] = 1;
+					}
+				}
+				break;
+				
+			case 2:
+				for (int y = 0; y < FADE_HEIGHT; y++)
+				{
+					for (int x = 0; x < FADE_WIDTH; x++)
+					{
+						if (gFade.count == x)
+							gFade.flag[y][x] = 1;
+					}
+				}
+				break;
+				
+			case 3:
+				for (int y = 0; y < FADE_HEIGHT; y++)
+				{
+					for (int x = 0; x < FADE_WIDTH; x++)
+					{
+						if (gFade.count == y)
+							gFade.flag[y][x] = 1;
+					}
+				}
+				break;
+				
+			case 4:
+				for (int y = 0; y < (FADE_HEIGHT / 2); y++)
+				{
+					for (int x = 0; x < (FADE_WIDTH / 2); x++)
+					{
+						if ((FADE_WIDTH - 1) - gFade.count == x + y)
+							gFade.flag[y][x] = 1;
+					}
+				}
+				for (int y = 0; y < (FADE_HEIGHT / 2); y++)
+				{
+					for (int x = (FADE_WIDTH / 2); x < FADE_WIDTH; x++)
+					{
+						if ((FADE_WIDTH - 1) - gFade.count == y + ((FADE_WIDTH - 1) - x))
+							gFade.flag[y][x] = 1;
+					}
+				}
+				for (int y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; y++)
+				{
+					for (int x = 0; x < (FADE_WIDTH / 2); x++)
+					{
+						if ((FADE_WIDTH - 1) - gFade.count == x + ((FADE_HEIGHT - 1) - y))
+							gFade.flag[y][x] = 1;
+					}
+				}
+				for (int y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; y++)
+				{
+					for (int 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] = 1;
+					}
+				}
+				break;
+				
+			default:
+				break;
+		}
+		
+		for (int y = 0; y < FADE_HEIGHT; y++)
+		{
+			for (int 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.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++)
+					{
+						if ((FADE_WIDTH - 1) - gFade.count == x)
+							gFade.flag[y][x] = 1;
+					}
+				}
+				break;
+				
+			case 1:
+				for (int y = 0; y < FADE_HEIGHT; y++)
+				{
+					for (int x = 0; x < FADE_WIDTH; x++)
+					{
+						if ((FADE_HEIGHT - 1) - gFade.count == y)
+							gFade.flag[y][x] = 1;
+					}
+				}
+				break;
+				
+			case 2:
+				for (int y = 0; y < FADE_HEIGHT; y++)
+				{
+					for (int x = 0; x < FADE_WIDTH; x++)
+					{
+						if (gFade.count == x)
+							gFade.flag[y][x] = 1;
+					}
+				}
+				break;
+				
+			case 3:
+				for (int y = 0; y < FADE_HEIGHT; y++)
+				{
+					for (int x = 0; x < FADE_WIDTH; x++)
+					{
+						if (gFade.count == y)
+							gFade.flag[y][x] = 1;
+					}
+				}
+				break;
+				
+			case 4:
+				for (int y = 0; y < (FADE_HEIGHT / 2); y++)
+				{
+					for (int x = 0; x < (FADE_WIDTH / 2); x++)
+					{
+						if (gFade.count == x + y)
+							gFade.flag[y][x] = 1;
+					}
+				}
+				for (int y = 0; y < (FADE_HEIGHT / 2); y++)
+				{
+					for (int x = (FADE_WIDTH / 2); x < FADE_WIDTH; x++)
+					{
+						if (gFade.count == y + ((FADE_WIDTH - 1) - x))
+							gFade.flag[y][x] = 1;
+					}
+				}
+				for (int y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; y++)
+				{
+					for (int x = 0; x < (FADE_WIDTH / 2); x++)
+					{
+						if (gFade.count == x + ((FADE_HEIGHT - 1) - y))
+							gFade.flag[y][x] = 1;
+					}
+				}
+				for (int y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; y++)
+				{
+					for (int x = (FADE_WIDTH / 2); x < FADE_WIDTH; x++)
+					{
+						if (gFade.count == ((FADE_WIDTH - 1) - x) + ((FADE_HEIGHT - 1) - y))
+							gFade.flag[y][x] = 1;
+					}
+				}
+				break;
+				
+			default:
+				break;
+		}
+		
+		for (int y = 0; y < FADE_HEIGHT; y++)
+		{
+			for (int x = 0; x < FADE_WIDTH; x++)
+			{
+				if (gFade.ani_no[y][x] < 15 && 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;
+		}
+	}
+}
+
+void PutFade()
+{
+	RECT rect;
+	rect.top = 0;
+	rect.bottom = 16;
+	
+	if (gFade.bMask)
+	{
+		CortBox(&grcGame, 0x000020);
+	}
+	else if (gFade.mode)
+	{
+		for (int y = 0; y < FADE_HEIGHT; y++)
+		{
+			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, 6);
+			}
+		}
+	}
+}
+
+bool GetFadeActive()
+{
+	return gFade.mode != 0;
+}
--- /dev/null
+++ b/src/Fade.h
@@ -1,0 +1,24 @@
+#pragma once
+#include "CommonDefines.h"
+
+#define FADE_WIDTH	(((WINDOW_WIDTH - 1) >> 4) + 1)
+#define FADE_HEIGHT	(((WINDOW_HEIGHT - 1) >> 4) + 1)
+
+struct FADE
+{
+	int mode;
+	bool bMask;
+	int count;
+	char ani_no[FADE_HEIGHT][FADE_WIDTH];
+	char flag[FADE_HEIGHT][FADE_WIDTH];
+	char dir;
+};
+
+void InitFade();
+void SetFadeMask();
+void ClearFade();
+void StartFadeOut(char dir);
+void StartFadeIn(char dir);
+void ProcFade();
+void PutFade();
+bool GetFadeActive();
--- a/src/Game.cpp
+++ b/src/Game.cpp
@@ -9,6 +9,7 @@
 #include "Generic.h"
 #include "GenericLoad.h"
 #include "TextScr.h"
+#include "Fade.h"
 #include "Flags.h"
 #include "Escape.h"
 #include "Stage.h"
@@ -85,13 +86,13 @@
 	//InitNpChar();
 	//InitCaret();
 	//InitStar();
-	//InitFade();
+	InitFade();
 	//InitFlash();
 	//InitBossLife();
 	ChangeMusic(0);
 	TransferStage(72, 100, 3, 3);
 	//SetFrameTargetMyChar(16);
-	//SetFadeMask();
+	SetFadeMask();
 	
 	//Reset cliprect and flags
 	grcGame.left = 0;
@@ -109,7 +110,7 @@
 		GetTrg();
 		
 		//Escape menu
-		if (gKey & 0x8000)
+		if (gKey & KEY_ESCAPE)
 		{
 			int escRet = Call_Escape();
 			if (escRet == 0)
@@ -119,7 +120,7 @@
 		}
 		
 		//Skip intro if OK is pressed
-		if ( gKey & gKeyOk )
+		if (gKey & gKeyOk)
 			break;
 		
 		//Update everything
@@ -135,7 +136,7 @@
 		//HitBossBullet();
 		//ActCaret();
 		//MoveFrame3();
-		//ProcFade();
+		ProcFade();
 		
 		//Draw everything
 		CortBox(&grcFull, 0x000000);
@@ -151,7 +152,7 @@
 		PutStage_Front(frame_x, frame_y);
 		//PutFront(frame_x, frame_y);
 		//PutCaret(frame_x, frame_y);
-		//PutFade();
+		PutFade();
 		
 		//Update Text Script
 		//int tscRet = TextScriptProc();
@@ -159,7 +160,7 @@
 		//	return 0;
 		//if (tscRet == 2)
 		//	return 1;
-		
+	
 		PutMapName(false);
 		//PutTextScript();
 		//PutFramePerSecound();
@@ -299,7 +300,7 @@
 				break;
 		}
 		
-		if (gKey & 0x8000)
+		if (gKey & KEY_ESCAPE)
 		{
 			int escRet = Call_Escape();
 			if (escRet == 0)
--- a/src/Sound.cpp
+++ b/src/Sound.cpp
@@ -10,7 +10,7 @@
 #include "PixTone.h"
 
 #define FREQUENCY 44100
-#define STREAM_SIZE (FREQUENCY / 100)
+#define STREAM_SIZE (FREQUENCY / 200)
 
 #define clamp(x, y, z) ((x > z) ? z : (x < y) ? y : x)