[Scummvm-git-logs] scummvm master -> dd954a6227136caec914c64ac06f101425e46a77

neuromancer noreply at scummvm.org
Sat Feb 5 08:40:09 UTC 2022


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
57e2181590 HYPNO: added new wet demo
feb341e527 HYPNO: added some missing sounds in spider
dd954a6227 HYPNO: added more levels in wet, missing briefing video playing and some fixes


Commit: 57e218159016b21fd6b77103140f8d37179c84b9
    https://github.com/scummvm/scummvm/commit/57e218159016b21fd6b77103140f8d37179c84b9
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-02-05T09:31:09+01:00

Commit Message:
HYPNO: added new wet demo

Changed paths:
    engines/hypno/detection.cpp


diff --git a/engines/hypno/detection.cpp b/engines/hypno/detection.cpp
index 24a8d43e7a7..ad9f7a7909c 100644
--- a/engines/hypno/detection.cpp
+++ b/engines/hypno/detection.cpp
@@ -100,6 +100,17 @@ static const ADGameDescription gameDescriptions[] = {
 		ADGF_TESTING | ADGF_DEMO,
 		GUIO1(GUIO_NOMIDI)
 	},
+	{
+		"wetlands", // Wetlands Demo Hebrew
+		"Demo",
+		AD_ENTRY3s("wetlands.exe", "15a6b1b3819ef002438df340509b5373", 629503,
+				"wetdemo.exe", "15a6b1b3819ef002438df340509b5373", 458319,
+				"demo.exe", "15a6b1b3819ef002438df340509b5373", 533221),
+		Common::HE_ISR,
+		Common::kPlatformDOS,
+		ADGF_TESTING | ADGF_DEMO,
+		GUIO1(GUIO_NOMIDI)
+	},
 	{
 		"wetlands", // Personal Computer World (UK) (May 1996) - Chapter 11 demo
 		"PCWDemo",


Commit: feb341e527bcac96d3d61c66216a6f92c31804a6
    https://github.com/scummvm/scummvm/commit/feb341e527bcac96d3d61c66216a6f92c31804a6
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-02-05T09:31:09+01:00

Commit Message:
HYPNO: added some missing sounds in spider

Changed paths:
    engines/hypno/spider/spider.cpp


diff --git a/engines/hypno/spider/spider.cpp b/engines/hypno/spider/spider.cpp
index 60fd533d91e..273323f7025 100644
--- a/engines/hypno/spider/spider.cpp
+++ b/engines/hypno/spider/spider.cpp
@@ -253,7 +253,7 @@ void SpiderEngine::loadAssetsFullGame() {
 	_levels["<alley_selector>"] = alley_selector;
 
 	loadSceneLevel("alley.mi_", "<after_bank>", prefix);
-	_levels["alley.mi_"]->music = "alleymus.raw";
+	_levels["alley.mi_"]->music = "sound.lib/alleymus.raw";
 	_levels["alley.mi_"]->intros.push_back("cine/aleyc01s.smk");
 
 	loadArcadeLevel("c1.mi_", "<trans_apt_1>", prefix);
@@ -589,6 +589,7 @@ void SpiderEngine::loadAssetsFullGame() {
 	_levels["<trans_apt_6>"] = trans_apt_6;
 
 	loadSceneLevel("ball1.mi_", "<note>", prefix);
+	//_levels["ball1.mi_"]->music = "sound.lib/ballroom.raw"; // 11k
 	loadSceneLevel("coat.mi_", "ball2.mi_", prefix);
 
 	Code *note = new Code();


Commit: dd954a6227136caec914c64ac06f101425e46a77
    https://github.com/scummvm/scummvm/commit/dd954a6227136caec914c64ac06f101425e46a77
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-02-05T09:31:09+01:00

Commit Message:
HYPNO: added more levels in wet, missing briefing video playing and some fixes

Changed paths:
    engines/hypno/arcade.cpp
    engines/hypno/grammar.h
    engines/hypno/grammar_arc.cpp
    engines/hypno/grammar_arc.y
    engines/hypno/hypno.cpp
    engines/hypno/hypno.h
    engines/hypno/wet/arcade.cpp
    engines/hypno/wet/wet.cpp


diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index 26f967d0dd4..2f2da778ad5 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -67,6 +67,8 @@ void HypnoEngine::parseArcadeShooting(const Common::String &prefix, const Common
 	g_parsedArc->defeatNoEnergyFirstVideo.clear();
 	g_parsedArc->defeatMissBossVideo.clear();
 	g_parsedArc->defeatNoEnergySecondVideo.clear();
+	g_parsedArc->beforeVideo.clear();
+	g_parsedArc->briefingVideo.clear();
 }
 
 ShootSequence HypnoEngine::parseShootList(const Common::String &filename, const Common::String &data) {
@@ -102,7 +104,7 @@ ShootSequence HypnoEngine::parseShootList(const Common::String &filename, const
 		si.name = n;
 		si.timestamp = atoi(t.c_str());
 		if (si.timestamp == 0)
-			error("Error at parsing '%s'", n.c_str());
+			error("Error at parsing '%s' with timestamp: %s", n.c_str(), t.c_str());
 		seq.push_back(si);
 		debugC(1, kHypnoDebugParser, "%d -> %s", si.timestamp, si.name.c_str());
 	}
@@ -127,6 +129,8 @@ void HypnoEngine::drawHealth() { error("Function \"%s\" not implemented", __FUNC
 void HypnoEngine::drawShoot(const Common::Point &target) { error("Function \"%s\" not implemented", __FUNCTION__); }
 void HypnoEngine::hitPlayer() { error("Function \"%s\" not implemented", __FUNCTION__); }
 
+void HypnoEngine::runBeforeArcade(ArcadeShooting *arc) {}
+
 void HypnoEngine::runArcade(ArcadeShooting *arc) {
 	_arcadeMode = arc->mode;
 	Common::Point mousePos;
@@ -171,6 +175,11 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
 
 	changeCursor("arcade");
 	playVideo(background);
+	float rate = background.decoder->getFrameRate().toDouble();
+	if (rate < 10) {
+		debugC(1, kHypnoDebugArcade, "Using frame rate looks odd: %f, increasing x 10", rate);
+		background.decoder->setRate(10.0);
+	}
 	loadPalette(arc->backgroundPalette);
 	bool shootingPrimary = false;
 	bool shootingSecondary = false;
diff --git a/engines/hypno/grammar.h b/engines/hypno/grammar.h
index 92e0af712ae..18200703cb9 100644
--- a/engines/hypno/grammar.h
+++ b/engines/hypno/grammar.h
@@ -447,6 +447,8 @@ public:
 	Filename defeatNoEnergyFirstVideo;
 	Filename defeatNoEnergySecondVideo;
 	Filename defeatMissBossVideo;
+	Filename beforeVideo;
+	Filename briefingVideo;
 
 	Filename backgroundVideo;
 	Filename backgroundPalette;
diff --git a/engines/hypno/grammar_arc.cpp b/engines/hypno/grammar_arc.cpp
index 37f6a77aafd..f596a584e5b 100644
--- a/engines/hypno/grammar_arc.cpp
+++ b/engines/hypno/grammar_arc.cpp
@@ -573,12 +573,12 @@ static const yytype_int16 yyrline[] =
 {
        0,    75,    75,    75,    76,    79,    80,    81,    84,    87,
       88,    92,    93,    94,    95,    96,   101,   102,   103,   109,
-     114,   115,   119,   123,   126,   130,   131,   147,   159,   164,
-     167,   170,   177,   178,   181,   182,   183,   186,   194,   199,
-     204,   208,   212,   216,   220,   224,   228,   232,   236,   240,
-     244,   248,   252,   256,   260,   264,   268,   271,   275,   280,
-     281,   282,   286,   290,   293,   294,   297,   300,   304,   311,
-     312
+     114,   115,   119,   123,   126,   130,   131,   149,   161,   166,
+     169,   172,   179,   180,   183,   184,   185,   188,   196,   201,
+     206,   210,   214,   218,   222,   226,   230,   234,   238,   242,
+     246,   250,   254,   258,   262,   266,   270,   273,   277,   282,
+     283,   284,   288,   292,   295,   296,   299,   302,   306,   313,
+     314
 };
 #endif
 
@@ -1368,7 +1368,7 @@ yyreduce:
 #line 131 "engines/hypno/grammar_arc.y"
                          {
 		if (Common::String("B0") == (yyvsp[-1].s))
-			g_parsedArc->intros.push_back((yyvsp[0].s));
+			g_parsedArc->beforeVideo = (yyvsp[0].s);
 		//else if (Common::String("B1") == $1) 
 		//	g_parsedArc->nextLevelVideo = $2;
 		else if (Common::String("B2") == (yyvsp[-1].s))
@@ -1379,14 +1379,16 @@ yyreduce:
 			g_parsedArc->defeatMissBossVideo = (yyvsp[0].s);
 		else if (Common::String("B5") == (yyvsp[-1].s))
 			g_parsedArc->defeatNoEnergySecondVideo = (yyvsp[0].s);
+		else if (Common::String("BA") == (yyvsp[-1].s))
+			g_parsedArc->briefingVideo = (yyvsp[0].s);
 
 		debugC(1, kHypnoDebugParser, "BN %s", (yyvsp[0].s)); 
 	}
-#line 1386 "engines/hypno/grammar_arc.cpp"
+#line 1388 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 27: /* hline: SNTOK FILENAME enc  */
-#line 147 "engines/hypno/grammar_arc.y"
+#line 149 "engines/hypno/grammar_arc.y"
                              {
 		if (Common::String("S0") == (yyvsp[-2].s))
 			g_parsedArc->music = (yyvsp[-1].s);
@@ -1399,47 +1401,47 @@ yyreduce:
 
 		debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s)); 
 	}
-#line 1403 "engines/hypno/grammar_arc.cpp"
+#line 1405 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 28: /* hline: HETOK BYTE NUM NUM  */
-#line 159 "engines/hypno/grammar_arc.y"
+#line 161 "engines/hypno/grammar_arc.y"
                              {
 		Segment segment((yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
 		g_parsedArc->segments.push_back(segment);
 		debugC(1, kHypnoDebugParser, "HE %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i)); 
 	}
-#line 1413 "engines/hypno/grammar_arc.cpp"
+#line 1415 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 29: /* hline: HLTOK BYTE NUM NUM  */
-#line 164 "engines/hypno/grammar_arc.y"
+#line 166 "engines/hypno/grammar_arc.y"
                              { 
 		debugC(1, kHypnoDebugParser, "HL %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i)); 
 	}
-#line 1421 "engines/hypno/grammar_arc.cpp"
+#line 1423 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 30: /* hline: HUTOK BYTE NUM NUM  */
-#line 167 "engines/hypno/grammar_arc.y"
+#line 169 "engines/hypno/grammar_arc.y"
                              { 
 		debugC(1, kHypnoDebugParser, "HU %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i)); 
 	}
-#line 1429 "engines/hypno/grammar_arc.cpp"
+#line 1431 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 31: /* hline: HTOK BYTE NUM NUM  */
-#line 170 "engines/hypno/grammar_arc.y"
+#line 172 "engines/hypno/grammar_arc.y"
                             {
 		Segment segment((yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
 		g_parsedArc->segments.push_back(segment);
 		debugC(1, kHypnoDebugParser, "H %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i)); 
 	}
-#line 1439 "engines/hypno/grammar_arc.cpp"
+#line 1441 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 37: /* bline: FNTOK FILENAME  */
-#line 186 "engines/hypno/grammar_arc.y"
+#line 188 "engines/hypno/grammar_arc.y"
                       { 
 		shoot = new Shoot();
 		if (Common::String("F0") == (yyvsp[-1].s))
@@ -1448,271 +1450,271 @@ yyreduce:
 			shoot->explosionAnimation = (yyvsp[0].s);
 		debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s)); 
 	}
-#line 1452 "engines/hypno/grammar_arc.cpp"
+#line 1454 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 38: /* bline: FNTOK NONETOK  */
-#line 194 "engines/hypno/grammar_arc.y"
+#line 196 "engines/hypno/grammar_arc.y"
                         { 
 		shoot = new Shoot();
 		shoot->animation = "NONE";
 		debugC(1, kHypnoDebugParser, "FN NONE"); 
 	}
-#line 1462 "engines/hypno/grammar_arc.cpp"
+#line 1464 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 39: /* bline: FTOK FILENAME  */
-#line 199 "engines/hypno/grammar_arc.y"
+#line 201 "engines/hypno/grammar_arc.y"
                         { 
 		shoot = new Shoot();
 		shoot->animation = (yyvsp[0].s);
 		debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s)); 
 	}
-#line 1472 "engines/hypno/grammar_arc.cpp"
+#line 1474 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 40: /* bline: ITOK NAME  */
-#line 204 "engines/hypno/grammar_arc.y"
+#line 206 "engines/hypno/grammar_arc.y"
                      { 
 		shoot->name = (yyvsp[0].s);
 		debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s)); 
 	}
-#line 1481 "engines/hypno/grammar_arc.cpp"
+#line 1483 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 41: /* bline: ITOK BNTOK  */
-#line 208 "engines/hypno/grammar_arc.y"
+#line 210 "engines/hypno/grammar_arc.y"
                       {  // Workaround for NAME == B1
 		shoot->name = (yyvsp[0].s);
 		debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s)); 
 	}
-#line 1490 "engines/hypno/grammar_arc.cpp"
+#line 1492 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 42: /* bline: ITOK ATOK  */
-#line 212 "engines/hypno/grammar_arc.y"
+#line 214 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == A
 		shoot->name = "A";
 		debugC(1, kHypnoDebugParser, "I A"); 
 	}
-#line 1499 "engines/hypno/grammar_arc.cpp"
+#line 1501 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 43: /* bline: ITOK CTOK  */
-#line 216 "engines/hypno/grammar_arc.y"
+#line 218 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == C
 		shoot->name = "C";
 		debugC(1, kHypnoDebugParser, "I C"); 
 	}
-#line 1508 "engines/hypno/grammar_arc.cpp"
+#line 1510 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 44: /* bline: ITOK DTOK  */
-#line 220 "engines/hypno/grammar_arc.y"
+#line 222 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == D
 		shoot->name = "D";
 		debugC(1, kHypnoDebugParser, "I D"); 
 	}
-#line 1517 "engines/hypno/grammar_arc.cpp"
+#line 1519 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 45: /* bline: ITOK FTOK  */
-#line 224 "engines/hypno/grammar_arc.y"
+#line 226 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == F
 		shoot->name = "F";
 		debugC(1, kHypnoDebugParser, "I F"); 
 	}
-#line 1526 "engines/hypno/grammar_arc.cpp"
+#line 1528 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 46: /* bline: ITOK HTOK  */
-#line 228 "engines/hypno/grammar_arc.y"
+#line 230 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == H
 		shoot->name = "H";
 		debugC(1, kHypnoDebugParser, "I H"); 
 	}
-#line 1535 "engines/hypno/grammar_arc.cpp"
+#line 1537 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 47: /* bline: ITOK ITOK  */
-#line 232 "engines/hypno/grammar_arc.y"
+#line 234 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == I
 		shoot->name = "I";
 		debugC(1, kHypnoDebugParser, "I I"); 
 	}
-#line 1544 "engines/hypno/grammar_arc.cpp"
+#line 1546 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 48: /* bline: ITOK JTOK  */
-#line 236 "engines/hypno/grammar_arc.y"
+#line 238 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == I
 		shoot->name = "J";
 		debugC(1, kHypnoDebugParser, "I J"); 
 	}
-#line 1553 "engines/hypno/grammar_arc.cpp"
+#line 1555 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 49: /* bline: ITOK NTOK  */
-#line 240 "engines/hypno/grammar_arc.y"
+#line 242 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == N
 		shoot->name = "N";
 		debugC(1, kHypnoDebugParser, "I N"); 
 	}
-#line 1562 "engines/hypno/grammar_arc.cpp"
+#line 1564 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 50: /* bline: ITOK OTOK  */
-#line 244 "engines/hypno/grammar_arc.y"
+#line 246 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == O
 		shoot->name = "O";
 		debugC(1, kHypnoDebugParser, "I O"); 
 	}
-#line 1571 "engines/hypno/grammar_arc.cpp"
+#line 1573 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 51: /* bline: ITOK PTOK  */
-#line 248 "engines/hypno/grammar_arc.y"
+#line 250 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == P
 		shoot->name = "P";
 		debugC(1, kHypnoDebugParser, "I P"); 
 	}
-#line 1580 "engines/hypno/grammar_arc.cpp"
+#line 1582 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 52: /* bline: ITOK QTOK  */
-#line 252 "engines/hypno/grammar_arc.y"
+#line 254 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == Q
 		shoot->name = "Q";
 		debugC(1, kHypnoDebugParser, "I Q"); 
 	}
-#line 1589 "engines/hypno/grammar_arc.cpp"
+#line 1591 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 53: /* bline: ITOK RTOK  */
-#line 256 "engines/hypno/grammar_arc.y"
+#line 258 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == R
 		shoot->name = "R";
 		debugC(1, kHypnoDebugParser, "I R"); 
 	}
-#line 1598 "engines/hypno/grammar_arc.cpp"
+#line 1600 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 54: /* bline: ITOK SNTOK  */
-#line 260 "engines/hypno/grammar_arc.y"
+#line 262 "engines/hypno/grammar_arc.y"
                       {  // Workaround for NAME == S1
 		shoot->name = (yyvsp[0].s);
 		debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s)); 
 	}
-#line 1607 "engines/hypno/grammar_arc.cpp"
+#line 1609 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 55: /* bline: ITOK TTOK  */
-#line 264 "engines/hypno/grammar_arc.y"
+#line 266 "engines/hypno/grammar_arc.y"
                      { // Workaround for NAME == T
 		shoot->name = "T";
 		debugC(1, kHypnoDebugParser, "I T"); 
 	}
-#line 1616 "engines/hypno/grammar_arc.cpp"
+#line 1618 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 56: /* bline: JTOK NUM  */
-#line 268 "engines/hypno/grammar_arc.y"
+#line 270 "engines/hypno/grammar_arc.y"
                     {
 		debugC(1, kHypnoDebugParser, "J %d", (yyvsp[0].i)); 
 	}
-#line 1624 "engines/hypno/grammar_arc.cpp"
+#line 1626 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 57: /* bline: A0TOK NUM NUM  */
-#line 271 "engines/hypno/grammar_arc.y"
+#line 273 "engines/hypno/grammar_arc.y"
                         { 
 		shoot->position = Common::Point((yyvsp[-1].i), (yyvsp[0].i));
 		debugC(1, kHypnoDebugParser, "A0 %d %d", (yyvsp[-1].i), (yyvsp[0].i)); 
 	}
-#line 1633 "engines/hypno/grammar_arc.cpp"
+#line 1635 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 58: /* bline: RTOK NUM NUM  */
-#line 275 "engines/hypno/grammar_arc.y"
+#line 277 "engines/hypno/grammar_arc.y"
                         {
 		shoot->obj1KillsCount = (yyvsp[-1].i);
 		shoot->obj1MissesCount = (yyvsp[0].i); 
 		debugC(1, kHypnoDebugParser, "R %d %d", (yyvsp[-1].i), (yyvsp[0].i)); 
 	}
-#line 1643 "engines/hypno/grammar_arc.cpp"
+#line 1645 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 59: /* bline: R0TOK NUM NUM  */
-#line 280 "engines/hypno/grammar_arc.y"
+#line 282 "engines/hypno/grammar_arc.y"
                          { debugC(1, kHypnoDebugParser, "R0 %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1649 "engines/hypno/grammar_arc.cpp"
+#line 1651 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 60: /* bline: BNTOK NUM NUM  */
-#line 281 "engines/hypno/grammar_arc.y"
+#line 283 "engines/hypno/grammar_arc.y"
                         { debugC(1, kHypnoDebugParser, "BN %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1655 "engines/hypno/grammar_arc.cpp"
+#line 1657 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 61: /* bline: KNTOK NUM NUM  */
-#line 282 "engines/hypno/grammar_arc.y"
+#line 284 "engines/hypno/grammar_arc.y"
                         { 
 		shoot->explosionFrames.push_front((yyvsp[0].i));
 		debugC(1, kHypnoDebugParser, "KN %d %d", (yyvsp[-1].i), (yyvsp[0].i));
 	}
-#line 1664 "engines/hypno/grammar_arc.cpp"
+#line 1666 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 62: /* bline: P0TOK NUM NUM  */
-#line 286 "engines/hypno/grammar_arc.y"
+#line 288 "engines/hypno/grammar_arc.y"
                         { 
 		shoot->paletteSize = (yyvsp[-1].i);
 		shoot->paletteOffset = (yyvsp[0].i);
 		debugC(1, kHypnoDebugParser, "P0 %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1673 "engines/hypno/grammar_arc.cpp"
+#line 1675 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 63: /* bline: OTOK NUM NUM  */
-#line 290 "engines/hypno/grammar_arc.y"
+#line 292 "engines/hypno/grammar_arc.y"
                        { 
 		debugC(1, kHypnoDebugParser, "O %d %d", (yyvsp[-1].i), (yyvsp[0].i)); 
 	}
-#line 1681 "engines/hypno/grammar_arc.cpp"
+#line 1683 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 64: /* bline: CTOK NUM  */
-#line 293 "engines/hypno/grammar_arc.y"
+#line 295 "engines/hypno/grammar_arc.y"
                     { debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i)); }
-#line 1687 "engines/hypno/grammar_arc.cpp"
+#line 1689 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 65: /* bline: HTOK NUM  */
-#line 294 "engines/hypno/grammar_arc.y"
+#line 296 "engines/hypno/grammar_arc.y"
                     {
 		shoot->attackFrames.push_back((yyvsp[0].i)); 
 		debugC(1, kHypnoDebugParser, "H %d", (yyvsp[0].i)); }
-#line 1695 "engines/hypno/grammar_arc.cpp"
+#line 1697 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 66: /* bline: WTOK NUM  */
-#line 297 "engines/hypno/grammar_arc.y"
+#line 299 "engines/hypno/grammar_arc.y"
                     {
 		shoot->attackWeight = (yyvsp[0].i);  
 		debugC(1, kHypnoDebugParser, "W %d", (yyvsp[0].i)); }
-#line 1703 "engines/hypno/grammar_arc.cpp"
+#line 1705 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 67: /* bline: DTOK NUM  */
-#line 300 "engines/hypno/grammar_arc.y"
+#line 302 "engines/hypno/grammar_arc.y"
                     {
 		shoot->pointsToShoot = (yyvsp[0].i);  
 		debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i)); 
 	}
-#line 1712 "engines/hypno/grammar_arc.cpp"
+#line 1714 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 68: /* bline: SNTOK FILENAME enc  */
-#line 304 "engines/hypno/grammar_arc.y"
+#line 306 "engines/hypno/grammar_arc.y"
                              { 
 		if (Common::String("S1") == (yyvsp[-2].s))
 			shoot->deathSound = (yyvsp[-1].s);
@@ -1720,28 +1722,28 @@ yyreduce:
 			shoot->hitSound = (yyvsp[-1].s);
 		 
 		debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s)); }
-#line 1724 "engines/hypno/grammar_arc.cpp"
+#line 1726 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 69: /* bline: NTOK  */
-#line 311 "engines/hypno/grammar_arc.y"
+#line 313 "engines/hypno/grammar_arc.y"
                { debugC(1, kHypnoDebugParser, "N"); }
-#line 1730 "engines/hypno/grammar_arc.cpp"
+#line 1732 "engines/hypno/grammar_arc.cpp"
     break;
 
   case 70: /* bline: ZTOK  */
-#line 312 "engines/hypno/grammar_arc.y"
+#line 314 "engines/hypno/grammar_arc.y"
                {
 		g_parsedArc->shoots.push_back(*shoot); 
 		//delete shoot; 
 		//shoot = nullptr;
 		debugC(1, kHypnoDebugParser, "Z"); 
 	}
-#line 1741 "engines/hypno/grammar_arc.cpp"
+#line 1743 "engines/hypno/grammar_arc.cpp"
     break;
 
 
-#line 1745 "engines/hypno/grammar_arc.cpp"
+#line 1747 "engines/hypno/grammar_arc.cpp"
 
       default: break;
     }
diff --git a/engines/hypno/grammar_arc.y b/engines/hypno/grammar_arc.y
index 3cbc0c1e854..bd539c23fc1 100644
--- a/engines/hypno/grammar_arc.y
+++ b/engines/hypno/grammar_arc.y
@@ -130,7 +130,7 @@ hline: 	CTOK NUM {
 	| QTOK NUM NUM { debugC(1, kHypnoDebugParser, "Q %d %d", $2, $3); }
 	| BNTOK FILENAME {
 		if (Common::String("B0") == $1)
-			g_parsedArc->intros.push_back($2);
+			g_parsedArc->beforeVideo = $2;
 		//else if (Common::String("B1") == $1) 
 		//	g_parsedArc->nextLevelVideo = $2;
 		else if (Common::String("B2") == $1)
@@ -141,6 +141,8 @@ hline: 	CTOK NUM {
 			g_parsedArc->defeatMissBossVideo = $2;
 		else if (Common::String("B5") == $1)
 			g_parsedArc->defeatNoEnergySecondVideo = $2;
+		else if (Common::String("BA") == $1)
+			g_parsedArc->briefingVideo = $2;
 
 		debugC(1, kHypnoDebugParser, "BN %s", $2); 
 	}
diff --git a/engines/hypno/hypno.cpp b/engines/hypno/hypno.cpp
index a2b7a745f8f..c27f086c8b4 100644
--- a/engines/hypno/hypno.cpp
+++ b/engines/hypno/hypno.cpp
@@ -175,6 +175,7 @@ void HypnoEngine::runLevel(Common::String &name) {
 	} else if (_levels[name]->type == ArcadeLevel) {
 		debugC(1, kHypnoDebugArcade, "Executing arcade level %s", name.c_str());
 		changeScreenMode("320x200");
+		runBeforeArcade((ArcadeShooting *)_levels[name]);
 		runArcade((ArcadeShooting *)_levels[name]);
 	} else if (_levels[name]->type == CodeLevel) {
 		debugC(1, kHypnoDebugScene, "Executing hardcoded level %s", name.c_str());
diff --git a/engines/hypno/hypno.h b/engines/hypno/hypno.h
index a8adce8463a..7a8d175f665 100644
--- a/engines/hypno/hypno.h
+++ b/engines/hypno/hypno.h
@@ -96,6 +96,7 @@ public:
 	bool checkLevelWon();
 	void runLevel(Common::String &name);
 	void runScene(Scene *scene);
+	virtual void runBeforeArcade(ArcadeShooting *arc);
 	void runArcade(ArcadeShooting *arc);
 	// For some menus and hardcoded puzzles
 	virtual void runCode(Code *code);
@@ -291,11 +292,9 @@ public:
 	Common::String findNextLevel(const Common::String &level) override;
 	Common::String findNextLevel(const Transition *trans) override;
 
-	//virtual Common::Error loadGameStream(Common::SeekableReadStream *stream) = 0;
-	//virtual Common::Error saveGameStream(Common::WriteStream *stream, bool isAutosave = false) = 0;
-
-
+	void runBeforeArcade(ArcadeShooting *arc) override;
 private:
+	uint32 _zone;
 	void runMainMenu(Code *code);
 };
 
diff --git a/engines/hypno/wet/arcade.cpp b/engines/hypno/wet/arcade.cpp
index 73c8ffe6547..ebb09d7dcde 100644
--- a/engines/hypno/wet/arcade.cpp
+++ b/engines/hypno/wet/arcade.cpp
@@ -27,6 +27,57 @@
 
 namespace Hypno {
 
+void WetEngine::runBeforeArcade(ArcadeShooting *arc) {
+	Common::Event event;
+	uint32 c = 252; // green
+	byte *palette;
+	Graphics::Surface *frame = decodeFrame("c_misc/zones.smk", (arc->id / 10 - 1) * 2, &palette);
+	loadPalette(palette, 0, 256);
+	byte p[3] = {0xff, 0x00, 0x00}; // Always red?
+	loadPalette((byte *) &p, 240 - arc->id % 10, 1);
+	drawImage(*frame, 0, 0, false);
+	bool showedBriefing = false;
+	bool endedBriefing = false;
+	MVideo *video;
+	while (!shouldQuit() && !endedBriefing) {
+
+		while (g_system->getEventManager()->pollEvent(event)) {
+			// Events
+			switch (event.type) {
+
+			case Common::EVENT_QUIT:
+			case Common::EVENT_RETURN_TO_LAUNCHER:
+				break;
+
+			case Common::EVENT_KEYDOWN:
+				if (showedBriefing) {
+					endedBriefing = true;
+					break;
+				}
+				if (!arc->briefingVideo.empty()) {
+					video = new MVideo(arc->briefingVideo, Common::Point(44, 22), false, false, false);
+					runIntro(*video);
+					delete video;
+				}
+				showedBriefing = true;
+				break;
+
+			default:
+				break;
+			}
+		}
+
+		drawScreen();
+		g_system->delayMillis(10);
+	}
+
+	if (!arc->beforeVideo.empty()) {
+		video = new MVideo(arc->beforeVideo, Common::Point(0, 0), false, true, false);
+		runIntro(*video);
+		delete video;
+	}
+}
+
 bool WetEngine::clickedSecondaryShoot(const Common::Point &mousePos) {
 	return clickedPrimaryShoot(mousePos);
 }
diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index 9b09f64a205..cc7bfb6754b 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -34,7 +34,15 @@ static const chapterEntry rawChapterTable[] = {
 	{23, {70, 160}, {180, 160}, {220, 185}}, 	// c23
 	{31, {70, 160}, {180, 160}, {220, 185}}, 	// c31
 	{32, {70, 160}, {180, 160}, {220, 185}}, 	// c32
+	{41, {70, 160}, {180, 160}, {220, 185}}, 	// c41
+	{42, {70, 160}, {180, 160}, {220, 185}}, 	// c42
+	{43, {70, 160}, {180, 160}, {220, 185}}, 	// c43
+	{44, {70, 160}, {180, 160}, {220, 185}}, 	// c44
+	{51, {60, 167}, {190, 167}, {135, 187}}, 	// c51
 	{52, {60, 167}, {190, 167}, {135, 187}}, 	// c52
+	{50, {60, 167}, {190, 167}, {135, 187}}, 	// c50
+	{61, {44, 172}, {218, 172}, {0, 0}}, 		// c61
+	{60, {44, 172}, {218, 172}, {0, 0}}, 		// c60
 	{0,  {0,  0},   {0,   0},   {0,   0}}    	// NULL
 };
 
@@ -70,7 +78,9 @@ void WetEngine::loadAssets() {
 
 
 void WetEngine::loadAssetsDemoDisc() {
-	LibFile *missions = loadLib("", "wetlands/c_misc/missions.lib", true);
+
+	bool encrypted = _language == Common::HE_ISR ? false : true;
+	LibFile *missions = loadLib("", "wetlands/c_misc/missions.lib", encrypted);
 	Common::ArchiveMemberList files;
 	if (missions->listMembers(files) == 0)
 		error("Failed to load any files from missions.lib");
@@ -139,10 +149,19 @@ void WetEngine::loadAssetsDemoDisc() {
 	movies->frameNumber = 0;
 	_levels["<movies>"] = movies;
 
-	loadArcadeLevel("c31.mi_", "c52", "wetlands");
-	_levels["c31.mi_"]->levelIfLose = "c52";
-	loadArcadeLevel("c52.mi_", "<gameover>", "wetlands");
-	_levels["c52.mi_"]->levelIfLose = "<gameover>";
+	if (_language == Common::EN_USA) {
+		loadArcadeLevel("c31.mi_", "c52", "wetlands");
+		_levels["c31.mi_"]->levelIfLose = "c52";
+		loadArcadeLevel("c52.mi_", "<gameover>", "wetlands");
+		_levels["c52.mi_"]->levelIfLose = "<gameover>";
+	} else if (_language == Common::HE_ISR) {
+		loadArcadeLevel("c31.mis", "c52.mis", "wetlands");
+		_levels["c31.mis"]->levelIfLose = "c52.mis";
+		loadArcadeLevel("c52.mis", "<gameover>", "wetlands");
+		_levels["c52.mis"]->levelIfLose = "<gameover>";
+	} else {
+		error("Unsupported language");
+	}
 
 	Transition *over = new Transition("<quit>");
 	over->intros.push_back("movie/gameover.smk");
@@ -256,10 +275,57 @@ void WetEngine::loadAssetsFullGame() {
 	loadArcadeLevel("c311.mi_", "c32", "");
 	loadArcadeLevel("c312.mi_", "c32", "");
 
-	loadArcadeLevel("c320.mi_", "???", "");
-	loadArcadeLevel("c321.mi_", "???", "");
-	loadArcadeLevel("c322.mi_", "???", "");
+	loadArcadeLevel("c320.mi_", "c41", "");
+	loadArcadeLevel("c321.mi_", "c41", "");
+	loadArcadeLevel("c322.mi_", "c41", "");
+
+	//loadArcadeLevel("c330.mi_", "???", "");
+	//loadArcadeLevel("c331.mi_", "???", "");
+	//loadArcadeLevel("c332.mi_", "???", "");
+
+	//loadArcadeLevel("c300.mi_", "???", "");
+	//loadArcadeLevel("c301.mi_", "???", "");
+	//loadArcadeLevel("c302.mi_", "???", "");
+
+	loadArcadeLevel("c410.mi_", "c42", "");
+	loadArcadeLevel("c411.mi_", "c42", "");
+	loadArcadeLevel("c412.mi_", "c42", "");
+
+	loadArcadeLevel("c420.mi_", "c43", "");
+	loadArcadeLevel("c421.mi_", "c43", "");
+	loadArcadeLevel("c422.mi_", "c43", "");
+
+	loadArcadeLevel("c430.mi_", "c44", "");
+	loadArcadeLevel("c431.mi_", "c44", "");
+	loadArcadeLevel("c432.mi_", "c44", "");
+
+	loadArcadeLevel("c440.mi_", "c51", "");
+	loadArcadeLevel("c441.mi_", "c51", "");
+	loadArcadeLevel("c442.mi_", "c51", "");
+
+	//loadArcadeLevel("c400.mi_", "???", "");
+	//loadArcadeLevel("c401.mi_", "???", "");
+	//loadArcadeLevel("c402.mi_", "???", "");
+
+	loadArcadeLevel("c510.mi_", "c52", "");
+	loadArcadeLevel("c511.mi_", "c52", "");
+	loadArcadeLevel("c512.mi_", "c52", "");
+
+	loadArcadeLevel("c520.mi_", "c61", "");
+	loadArcadeLevel("c521.mi_", "c61", "");
+	loadArcadeLevel("c522.mi_", "c61", "");
+
+	//loadArcadeLevel("c500.mi_", "???", "");
+	//loadArcadeLevel("c501.mi_", "???", "");
+	//loadArcadeLevel("c502.mi_", "???", "");
+
+	loadArcadeLevel("c610.mi_", "<quit>", "");
+	loadArcadeLevel("c611.mi_", "<quit>", "");
+	loadArcadeLevel("c612.mi_", "<quit>", "");
 
+	//loadArcadeLevel("c600.mi_", "???", "");
+	//loadArcadeLevel("c601.mi_", "???", "");
+	//loadArcadeLevel("c602.mi_", "???", "");
 
 	loadLib("", "c_misc/fonts.lib", true);
 	loadLib("sound/", "c_misc/sound.lib", true);




More information about the Scummvm-git-logs mailing list