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)