[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