shithub: cstory

Download patch

ref: d41b3993f507b5b20a020be795222bbd7bc79ddc
parent: 8adf5934036660e01c4a00128d2efa655eca9872
author: Clownacy <Clownacy@users.noreply.github.com>
date: Wed Aug 5 16:55:50 EDT 2020

Document caret stuff some more

--- a/src/Caret.cpp
+++ b/src/Caret.cpp
@@ -38,24 +38,24 @@
 
 // Sprite offsets
 CARET_TABLE gCaretTable[18] = {
-	{0, 0},
-	{ 4 * 0x200,  4 * 0x200},
-	{ 8 * 0x200,  8 * 0x200},
-	{ 8 * 0x200,  8 * 0x200},
-	{ 8 * 0x200,  8 * 0x200},
-	{ 4 * 0x200,  4 * 0x200},
-	{ 8 * 0x200,  8 * 0x200},
-	{ 4 * 0x200,  4 * 0x200},
-	{ 8 * 0x200,  8 * 0x200},
-	{ 8 * 0x200,  8 * 0x200},
-	{28 * 0x200,  8 * 0x200},
-	{ 4 * 0x200,  4 * 0x200},
-	{16 * 0x200, 16 * 0x200},
-	{ 4 * 0x200,  4 * 0x200},
-	{20 * 0x200, 20 * 0x200},
-	{ 4 * 0x200,  4 * 0x200},
-	{20 * 0x200,  4 * 0x200},
-	{52 * 0x200,  4 * 0x200}
+	{0, 0},                   // Null
+	{ 4 * 0x200,  4 * 0x200}, // Bubble
+	{ 8 * 0x200,  8 * 0x200}, // Projectile dissipation
+	{ 8 * 0x200,  8 * 0x200}, // Shoot
+	{ 8 * 0x200,  8 * 0x200}, // Snake after-image? This doesn't seem to be used.
+	{ 4 * 0x200,  4 * 0x200}, // 'Zzz' - snoring
+	{ 8 * 0x200,  8 * 0x200}, // Duplicate of the Snake after-image
+	{ 4 * 0x200,  4 * 0x200}, // Exhaust (used by the Booster and hoverbike)
+	{ 8 * 0x200,  8 * 0x200}, // Drowned Quote
+	{ 8 * 0x200,  8 * 0x200}, // The '?' that appears when you press the down key
+	{28 * 0x200,  8 * 0x200}, // 'Level Up!'
+	{ 4 * 0x200,  4 * 0x200}, // Red hurt particles (used by bosses and invisible hidden pickups)
+	{16 * 0x200, 16 * 0x200}, // Missile Launcher explosion flash
+	{ 4 * 0x200,  4 * 0x200}, // Dust particles (used when Quote jumps into the ceiling)
+	{20 * 0x200, 20 * 0x200}, // Broken (unknown and unused)
+	{ 4 * 0x200,  4 * 0x200}, // Tiny version of the projectile dissipation effect
+	{20 * 0x200,  4 * 0x200}, // 'Empty!'
+	{52 * 0x200,  4 * 0x200}  // 'PUSH JUMP KEY!' (unused)
 };
 
 void InitCaret(void)
@@ -63,16 +63,18 @@
 	memset(gCrt, 0, sizeof(gCrt));
 }
 
+// Null
 void ActCaret00(CARET *crt)
 {
 	(void)crt;
 }
 
+// Bubble
 void ActCaret01(CARET *crt)
 {
 	RECT rcLeft[4] = {
-		{0, 64, 8, 72},
-		{8, 64, 16, 72},
+		{ 0, 64,  8, 72},
+		{ 8, 64, 16, 72},
 		{16, 64, 24, 72},
 		{24, 64, 32, 72},
 	};
@@ -114,10 +116,11 @@
 		crt->rect = rcRight[crt->ani_no];
 }
 
+// Projectile dissipation
 void ActCaret02(CARET *crt)
 {
 	RECT rect_left[4] = {
-		{0, 32, 16, 48},
+		{ 0, 32, 16, 48},
 		{16, 32, 32, 48},
 		{32, 32, 48, 48},
 		{48, 32, 64, 48},
@@ -131,7 +134,7 @@
 	};
 
 	RECT rect_up[3] = {
-		{0, 32, 16, 48},
+		{ 0, 32, 16, 48},
 		{32, 32, 48, 48},
 		{16, 32, 32, 48},
 	};
@@ -187,10 +190,11 @@
 	}
 }
 
+// Shoot
 void ActCaret03(CARET *crt)
 {
 	RECT rect[4] = {
-		{0, 48, 16, 64},
+		{ 0, 48, 16, 64},
 		{16, 48, 32, 64},
 		{32, 48, 48, 64},
 		{48, 48, 64, 64},
@@ -212,19 +216,21 @@
 	crt->rect = rect[crt->ani_no];
 }
 
+// Snake after-image? This doesn't seem to be used.
 void ActCaret04(CARET *crt)
 {
 	RECT rect[9] = {
-		{64, 32, 80, 48},
-		{80, 32, 96, 48},
+		// Left
+		{64, 32,  80, 48},
+		{80, 32,  96, 48},
 		{96, 32, 112, 48},
-
-		{64, 48, 80, 64},
-		{80, 48, 96, 64},
+		// Up
+		{64, 48,  80, 64},
+		{80, 48,  96, 64},
 		{96, 48, 112, 64},
-
-		{64, 64, 80, 80},
-		{80, 64, 96, 80},
+		// Right
+		{64, 64,  80, 80},
+		{80, 64,  96, 80},
 		{96, 64, 112, 80},
 	};
 
@@ -244,6 +250,7 @@
 	crt->rect = rect[(crt->direct * 3) + crt->ani_no];
 }
 
+// 'Zzz' - snoring
 void ActCaret05(CARET *crt)
 {
 	RECT rect[7] = {
@@ -276,15 +283,18 @@
 	crt->rect = rect[crt->ani_no];
 }
 
+// No ActCaret06...
+
+// Exhaust (used by the Booster and hoverbike)
 void ActCaret07(CARET *crt)
 {
 	RECT rcLeft[7] = {
-		{56, 0, 64, 8},
-		{64, 0, 72, 8},
-		{72, 0, 80, 8},
-		{80, 0, 88, 8},
-		{88, 0, 96, 8},
-		{96, 0, 104, 8},
+		{ 56, 0,  64, 8},
+		{ 64, 0,  72, 8},
+		{ 72, 0,  80, 8},
+		{ 80, 0,  88, 8},
+		{ 88, 0,  96, 8},
+		{ 96, 0, 104, 8},
 		{104, 0, 112, 8},
 	};
 
@@ -320,6 +330,7 @@
 	}
 }
 
+// Drowned Quote
 void ActCaret08(CARET *crt)
 {
 	RECT rcLeft = {16, 80, 32, 96};
@@ -331,6 +342,7 @@
 		crt->rect = rcRight;
 }
 
+// The '?' that appears when you press the down key
 void ActCaret09(CARET *crt)
 {
 	RECT rcLeft = {0, 80, 16, 96};
@@ -348,15 +360,16 @@
 		crt->rect = rcRight;
 }
 
+// 'Level Up!'
 void ActCaret10(CARET *crt)
 {
 	RECT rcLeft[2] = {
-		{0, 0, 56, 16},
+		{0,  0, 56, 16},
 		{0, 16, 56, 32},
 	};
 
 	RECT rcRight[2] = {
-		{0, 96, 56, 112},
+		{0,  96, 56, 112},
 		{0, 112, 56, 128},
 	};
 
@@ -385,6 +398,7 @@
 		crt->rect = rcRight[crt->ani_wait / 2 % 2];
 }
 
+// Red hurt particles (used by bosses and invisible hidden pickups)
 void ActCaret11(CARET *crt)
 {
 	unsigned char deg;
@@ -401,12 +415,12 @@
 	crt->y += crt->ym;
 
 	RECT rcRight[7] = {
-		{56, 8, 64, 16},
-		{64, 8, 72, 16},
-		{72, 8, 80, 16},
-		{80, 8, 88, 16},
-		{88, 8, 96, 16},
-		{96, 8, 104, 16},
+		{ 56, 8,  64, 16},
+		{ 64, 8,  72, 16},
+		{ 72, 8,  80, 16},
+		{ 80, 8,  88, 16},
+		{ 88, 8,  96, 16},
+		{ 96, 8, 104, 16},
 		{104, 8, 112, 16},
 	};
 
@@ -426,6 +440,7 @@
 	crt->rect = rcRight[crt->ani_no];
 }
 
+// Missile Launcher explosion flash
 void ActCaret12(CARET *crt)
 {
 	RECT rcLeft[2] = {
@@ -449,6 +464,7 @@
 	crt->rect = rcLeft[crt->ani_no];
 }
 
+// Particles used when Quote jumps into the ceiling
 void ActCaret13(CARET *crt)
 {
 	RECT rcLeft[2] = {
@@ -493,8 +509,12 @@
 		crt->x -= 4 * 0x200;
 }
 
+// Broken (unknown and unused)
 void ActCaret14(CARET *crt)
 {
+	// These rects are invalid.
+	// However, notably, there are 5 unused 40x40 sprites at the bottom of Caret.pbm.
+	// Perhaps those were originally at these coordinates.
 	RECT rect[5] = {
 		{0, 96, 40, 136},
 		{40, 96, 80, 136},
@@ -519,11 +539,12 @@
 	crt->rect = rect[crt->ani_no];
 }
 
+// Tiny version of the projectile dissipation effect
 void ActCaret15(CARET *crt)
 {
 	RECT rcLeft[4] = {
-		{0, 72, 8, 80},
-		{8, 72, 16, 80},
+		{ 0, 72,  8, 80},
+		{ 8, 72, 16, 80},
 		{16, 72, 24, 80},
 		{24, 72, 32, 80},
 	};
@@ -544,10 +565,11 @@
 	crt->rect = rcLeft[crt->ani_no];
 }
 
+// 'Empty!'
 void ActCaret16(CARET *crt)
 {
 	RECT rcLeft[2] = {
-		{104, 96, 144, 104},
+		{104,  96, 144, 104},
 		{104, 104, 144, 112},
 	};
 
@@ -560,6 +582,7 @@
 	crt->rect = rcLeft[crt->ani_wait / 2 % 2];
 }
 
+// 'PUSH JUMP KEY!' (unused)
 void ActCaret17(CARET *crt)
 {
 	RECT rcLeft[2] = {
@@ -585,7 +608,7 @@
 	ActCaret03,
 	ActCaret04,
 	ActCaret05,
-	ActCaret04,
+	ActCaret04, // Interestingly, this slot is a duplicate
 	ActCaret07,
 	ActCaret08,
 	ActCaret09,