[Scummvm-git-logs] scummvm master -> d22d5090f8ead437798215328fad646524c0c7e9
neuromancer
noreply at scummvm.org
Fri Jun 17 07:28:59 UTC 2022
This automated email contains information about 7 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
ffb8e5a7e2 HYPNO: added missing video during levels c5x in boyz
0cf636343c HYPNO: added support for playing stereo music in boyz
0b8df5e280 HYPNO: fixed typo in video path in boyz
d6ae2c9189 HYPNO: start in flashback mode, if available, in boyz
3cfac79e97 HYPNO: use _musicStereo flag when restoring music playback in boyz
c54b24fc39 HYPNO: use _musicStereo flag when restoring music playback in boyz
d22d5090f8 HYPNO: enable stereo sound for audio transitions in boyz
Commit: ffb8e5a7e285779adcc68ca2cea8ec50338c48fb
https://github.com/scummvm/scummvm/commit/ffb8e5a7e285779adcc68ca2cea8ec50338c48fb
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-06-17T09:26:13+02:00
Commit Message:
HYPNO: added missing video during levels c5x in boyz
Changed paths:
engines/hypno/boyz/hard.cpp
diff --git a/engines/hypno/boyz/hard.cpp b/engines/hypno/boyz/hard.cpp
index 1b18f9a5f03..37bb2ff335b 100644
--- a/engines/hypno/boyz/hard.cpp
+++ b/engines/hypno/boyz/hard.cpp
@@ -317,6 +317,9 @@ void BoyzEngine::runCheckC5(Code *code) {
if (_sceneState["GS_SEQ_51"] &&
_sceneState["GS_SEQ_52"] &&\
_sceneState["GS_SEQ_53"]) {
+ MVideo video("c5/c5intrbs.smk", Common::Point(0, 0), false, true, false);
+ disableCursor();
+ runIntro(video);
nextLevel = "c54.mi_";
}
Commit: 0cf636343cc916620f3b4c7ab2cbc5c604de1b1c
https://github.com/scummvm/scummvm/commit/0cf636343cc916620f3b4c7ab2cbc5c604de1b1c
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-06-17T09:26:13+02:00
Commit Message:
HYPNO: added support for playing stereo music in boyz
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/tokens_arc.h
diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index 904e21af5f9..a0c0785f485 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -530,7 +530,8 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
if (_music.empty() && !arc->music.empty()) {
_music = _soundPath + arc->music;
_musicRate = arc->musicRate;
- playSound(_music, 0, _musicRate); // music loop forever
+ _musicStereo = arc->musicStereo;
+ playSound(_music, 0, _musicRate, _musicStereo); // music loop forever
}
if (needsUpdate) {
diff --git a/engines/hypno/grammar.h b/engines/hypno/grammar.h
index b128eecf270..b0d3c7b85b6 100644
--- a/engines/hypno/grammar.h
+++ b/engines/hypno/grammar.h
@@ -376,6 +376,7 @@ public:
type = CodeLevel;
musicRate = 22050;
playMusicDuringIntro = false;
+ musicStereo = false;
}
virtual ~Level() {} // needed to make Level polymorphic
LevelType type;
@@ -386,6 +387,7 @@ public:
bool playMusicDuringIntro;
Filename music;
uint32 musicRate;
+ bool musicStereo;
};
class Scene : public Level {
diff --git a/engines/hypno/grammar_arc.cpp b/engines/hypno/grammar_arc.cpp
index 089612101e1..770a2f694e5 100644
--- a/engines/hypno/grammar_arc.cpp
+++ b/engines/hypno/grammar_arc.cpp
@@ -102,38 +102,48 @@ using namespace Hypno;
void parseSN(const char *sn, const char *path, const char *enc, const char *flag) {
uint32 sampleRate = 11025;
+ bool stereo = false;
if (Common::String("22K") == enc || Common::String("22k") == enc)
sampleRate = 22050;
else if (HYPNO_ARC_default_sound_rate > 0)
sampleRate = HYPNO_ARC_default_sound_rate;
+ if (Common::String("STEREO") == flag)
+ stereo = true;
if (Common::String("S0") == sn) {
g_parsedArc->music = path;
g_parsedArc->musicRate = sampleRate;
+ g_parsedArc->musicStereo = stereo;
} else if (Common::String("S1") == sn) {
g_parsedArc->shootSound = path;
g_parsedArc->shootSoundRate = sampleRate;
+ assert(!stereo);
} else if (Common::String("S2") == sn) {
g_parsedArc->hitSound = path;
g_parsedArc->hitSoundRate = sampleRate;
+ assert(!stereo);
} else if (Common::String("S4") == sn) {
g_parsedArc->enemySound = path;
g_parsedArc->enemySoundRate = sampleRate;
+ assert(!stereo);
} else if (Common::String("S5") == sn) {
g_parsedArc->additionalSound = path;
g_parsedArc->additionalSoundRate = sampleRate;
+ assert(!stereo);
} else if (Common::String("S7") == sn) {
g_parsedArc->noAmmoSound = path;
g_parsedArc->noAmmoSoundRate = sampleRate;
+ assert(!stereo);
} else if (Common::String("S8") == sn) {
g_parsedArc->additionalSound = path;
g_parsedArc->additionalSoundRate = sampleRate;
+ assert(!stereo);
}
debugC(1, kHypnoDebugParser, "SN %s", path);
}
-#line 137 "engines/hypno/grammar_arc.cpp"
+#line 147 "engines/hypno/grammar_arc.cpp"
# ifndef YY_CAST
# ifdef __cplusplus
@@ -621,18 +631,18 @@ static const yytype_int8 yytranslate[] =
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_int16 yyrline[] =
{
- 0, 110, 110, 110, 111, 114, 115, 116, 119, 123,
- 127, 131, 132, 133, 137, 142, 146, 150, 155, 165,
- 174, 179, 185, 190, 199, 204, 208, 212, 216, 219,
- 223, 226, 227, 255, 258, 261, 267, 272, 277, 283,
- 288, 293, 298, 303, 308, 315, 316, 319, 320, 323,
- 324, 325, 328, 338, 343, 348, 353, 356, 359, 364,
- 369, 374, 378, 382, 386, 390, 394, 398, 402, 406,
- 410, 414, 418, 422, 426, 430, 434, 438, 442, 446,
- 450, 454, 458, 462, 465, 469, 474, 479, 482, 487,
- 492, 496, 502, 506, 509, 510, 511, 514, 518, 521,
- 526, 529, 530, 534, 541, 545, 560, 564, 565, 571,
- 575, 579, 582, 585, 587
+ 0, 120, 120, 120, 121, 124, 125, 126, 129, 133,
+ 137, 141, 142, 143, 147, 152, 156, 160, 165, 175,
+ 184, 189, 195, 200, 209, 214, 218, 222, 226, 229,
+ 233, 236, 237, 265, 268, 271, 277, 282, 287, 293,
+ 298, 303, 308, 313, 318, 325, 326, 329, 330, 333,
+ 334, 335, 338, 348, 353, 358, 363, 366, 369, 374,
+ 379, 384, 388, 392, 396, 400, 404, 408, 412, 416,
+ 420, 424, 428, 432, 436, 440, 444, 448, 452, 456,
+ 460, 464, 468, 472, 475, 479, 484, 489, 492, 497,
+ 502, 506, 512, 516, 519, 520, 521, 524, 528, 531,
+ 536, 539, 540, 544, 551, 555, 570, 574, 575, 581,
+ 585, 589, 592, 595, 597
};
#endif
@@ -1327,99 +1337,99 @@ yyreduce:
switch (yyn)
{
case 2: /* $@1: %empty */
-#line 110 "engines/hypno/grammar_arc.y"
+#line 120 "engines/hypno/grammar_arc.y"
{ g_parsedArc->mode = (yyvsp[0].s); }
-#line 1333 "engines/hypno/grammar_arc.cpp"
+#line 1343 "engines/hypno/grammar_arc.cpp"
break;
case 8: /* hline: CTOK NUM */
-#line 119 "engines/hypno/grammar_arc.y"
+#line 129 "engines/hypno/grammar_arc.y"
{
g_parsedArc->id = (yyvsp[0].i);
HYPNO_ARC_default_sound_rate = 0;
debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i)); }
-#line 1342 "engines/hypno/grammar_arc.cpp"
+#line 1352 "engines/hypno/grammar_arc.cpp"
break;
case 9: /* hline: FTOK NUM */
-#line 123 "engines/hypno/grammar_arc.y"
+#line 133 "engines/hypno/grammar_arc.y"
{
HYPNO_ARC_default_sound_rate = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "F %d", (yyvsp[0].i));
}
-#line 1351 "engines/hypno/grammar_arc.cpp"
+#line 1361 "engines/hypno/grammar_arc.cpp"
break;
case 10: /* hline: DTOK NUM */
-#line 127 "engines/hypno/grammar_arc.y"
+#line 137 "engines/hypno/grammar_arc.y"
{
g_parsedArc->frameDelay = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
}
-#line 1360 "engines/hypno/grammar_arc.cpp"
+#line 1370 "engines/hypno/grammar_arc.cpp"
break;
case 11: /* hline: PTOK NUM NUM */
-#line 131 "engines/hypno/grammar_arc.y"
+#line 141 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "P %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1366 "engines/hypno/grammar_arc.cpp"
+#line 1376 "engines/hypno/grammar_arc.cpp"
break;
case 12: /* hline: ATOK NUM NUM */
-#line 132 "engines/hypno/grammar_arc.y"
+#line 142 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "A %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1372 "engines/hypno/grammar_arc.cpp"
+#line 1382 "engines/hypno/grammar_arc.cpp"
break;
case 13: /* hline: MTOK FILENAME */
-#line 133 "engines/hypno/grammar_arc.y"
+#line 143 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "M %s", (yyvsp[0].s));
g_parsedArc->maskVideo = (yyvsp[0].s);
}
-#line 1381 "engines/hypno/grammar_arc.cpp"
+#line 1391 "engines/hypno/grammar_arc.cpp"
break;
case 14: /* hline: UTOK NUM NUM NUM NUM */
-#line 137 "engines/hypno/grammar_arc.y"
+#line 147 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "U %d %d %d %d", (yyvsp[-3].i), (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
ScriptInfo si((yyvsp[-3].i), (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
g_parsedArc->script.push_back(si);
}
-#line 1391 "engines/hypno/grammar_arc.cpp"
+#line 1401 "engines/hypno/grammar_arc.cpp"
break;
case 15: /* hline: VTOK NUM NUM */
-#line 142 "engines/hypno/grammar_arc.y"
+#line 152 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "V %d %d", (yyvsp[-1].i), (yyvsp[0].i));
g_parsedArc->mouseBox = Common::Rect(0, 0, (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1400 "engines/hypno/grammar_arc.cpp"
+#line 1410 "engines/hypno/grammar_arc.cpp"
break;
case 16: /* hline: VTOK RESTOK */
-#line 146 "engines/hypno/grammar_arc.y"
+#line 156 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "V 320,200");
g_parsedArc->mouseBox = Common::Rect(0, 0, 320, 200);
}
-#line 1409 "engines/hypno/grammar_arc.cpp"
+#line 1419 "engines/hypno/grammar_arc.cpp"
break;
case 17: /* hline: OTOK NUM NUM */
-#line 150 "engines/hypno/grammar_arc.y"
+#line 160 "engines/hypno/grammar_arc.y"
{
g_parsedArc->objKillsRequired[0] = (yyvsp[-1].i);
g_parsedArc->objMissesAllowed[0] = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "O %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1419 "engines/hypno/grammar_arc.cpp"
+#line 1429 "engines/hypno/grammar_arc.cpp"
break;
case 18: /* hline: ONTOK NUM NUM */
-#line 155 "engines/hypno/grammar_arc.y"
+#line 165 "engines/hypno/grammar_arc.y"
{
if (Common::String("O0") == (yyvsp[-2].s)) {
g_parsedArc->objKillsRequired[0] = (yyvsp[-1].i);
@@ -1430,11 +1440,11 @@ yyreduce:
} else
error("Invalid objective: '%s'", (yyvsp[-2].s));
debugC(1, kHypnoDebugParser, "ON %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1434 "engines/hypno/grammar_arc.cpp"
+#line 1444 "engines/hypno/grammar_arc.cpp"
break;
case 19: /* hline: ONTOK NUM */
-#line 165 "engines/hypno/grammar_arc.y"
+#line 175 "engines/hypno/grammar_arc.y"
{
if (Common::String("O0") == (yyvsp[-1].s)) {
g_parsedArc->objKillsRequired[0] = (yyvsp[0].i);
@@ -1444,42 +1454,42 @@ yyreduce:
error("Invalid objective: '%s'", (yyvsp[-1].s));
debugC(1, kHypnoDebugParser, "ON %d", (yyvsp[0].i));
}
-#line 1448 "engines/hypno/grammar_arc.cpp"
+#line 1458 "engines/hypno/grammar_arc.cpp"
break;
case 20: /* hline: TPTOK NONETOK NUM FILENAME */
-#line 174 "engines/hypno/grammar_arc.y"
+#line 184 "engines/hypno/grammar_arc.y"
{
ArcadeTransition at("NONE", (yyvsp[0].s), "", 0, (yyvsp[-1].i));
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "Tp %s %d %s", "NONE", (yyvsp[-1].i), (yyvsp[0].s));
}
-#line 1458 "engines/hypno/grammar_arc.cpp"
+#line 1468 "engines/hypno/grammar_arc.cpp"
break;
case 21: /* hline: TSTOK FILENAME NUM NUM */
-#line 179 "engines/hypno/grammar_arc.y"
+#line 189 "engines/hypno/grammar_arc.y"
{
ArcadeTransition at((yyvsp[-2].s), "", "", 0, (yyvsp[-1].i));
at.selection = true;
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "Ts %s %d %d", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1469 "engines/hypno/grammar_arc.cpp"
+#line 1479 "engines/hypno/grammar_arc.cpp"
break;
case 22: /* hline: TPTOK FILENAME NUM FILENAME */
-#line 185 "engines/hypno/grammar_arc.y"
+#line 195 "engines/hypno/grammar_arc.y"
{
ArcadeTransition at((yyvsp[-2].s), (yyvsp[0].s), "", 0, (yyvsp[-1].i));
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "Tp %s %d %s", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].s));
}
-#line 1479 "engines/hypno/grammar_arc.cpp"
+#line 1489 "engines/hypno/grammar_arc.cpp"
break;
case 23: /* hline: TATOK NUM FILENAME flag enc */
-#line 190 "engines/hypno/grammar_arc.y"
+#line 200 "engines/hypno/grammar_arc.y"
{
uint32 sampleRate = 11025;
if (Common::String("22K") == (yyvsp[0].s) || Common::String("22k") == (yyvsp[0].s))
@@ -1489,79 +1499,79 @@ yyreduce:
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "Ta %d %s", (yyvsp[-3].i), (yyvsp[-2].s));
}
-#line 1493 "engines/hypno/grammar_arc.cpp"
+#line 1503 "engines/hypno/grammar_arc.cpp"
break;
case 24: /* hline: TTOK FILENAME NUM */
-#line 199 "engines/hypno/grammar_arc.y"
+#line 209 "engines/hypno/grammar_arc.y"
{
ArcadeTransition at((yyvsp[-1].s), "", "", 0, (yyvsp[0].i));
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "T %s %d", (yyvsp[-1].s), (yyvsp[0].i));
}
-#line 1503 "engines/hypno/grammar_arc.cpp"
+#line 1513 "engines/hypno/grammar_arc.cpp"
break;
case 25: /* hline: TTOK NONETOK NUM */
-#line 204 "engines/hypno/grammar_arc.y"
+#line 214 "engines/hypno/grammar_arc.y"
{
ArcadeTransition at("NONE", "", "", 0, (yyvsp[0].i));
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "T NONE %d", (yyvsp[0].i)); }
-#line 1512 "engines/hypno/grammar_arc.cpp"
+#line 1522 "engines/hypno/grammar_arc.cpp"
break;
case 26: /* hline: NTOK FILENAME */
-#line 208 "engines/hypno/grammar_arc.y"
+#line 218 "engines/hypno/grammar_arc.y"
{
g_parsedArc->backgroundVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "N %s", (yyvsp[0].s));
}
-#line 1521 "engines/hypno/grammar_arc.cpp"
+#line 1531 "engines/hypno/grammar_arc.cpp"
break;
case 27: /* hline: NSTOK FILENAME */
-#line 212 "engines/hypno/grammar_arc.y"
+#line 222 "engines/hypno/grammar_arc.y"
{
g_parsedArc->backgroundVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "N* %s", (yyvsp[0].s));
}
-#line 1530 "engines/hypno/grammar_arc.cpp"
+#line 1540 "engines/hypno/grammar_arc.cpp"
break;
case 28: /* hline: RTOK FILENAME */
-#line 216 "engines/hypno/grammar_arc.y"
+#line 226 "engines/hypno/grammar_arc.y"
{
g_parsedArc->backgroundPalette = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "R %s", (yyvsp[0].s)); }
-#line 1538 "engines/hypno/grammar_arc.cpp"
+#line 1548 "engines/hypno/grammar_arc.cpp"
break;
case 29: /* hline: ITOK FILENAME */
-#line 219 "engines/hypno/grammar_arc.y"
+#line 229 "engines/hypno/grammar_arc.y"
{
g_parsedArc->player = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1547 "engines/hypno/grammar_arc.cpp"
+#line 1557 "engines/hypno/grammar_arc.cpp"
break;
case 30: /* hline: I1TOK FILENAME */
-#line 223 "engines/hypno/grammar_arc.y"
+#line 233 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "I1 %s", (yyvsp[0].s));
}
-#line 1555 "engines/hypno/grammar_arc.cpp"
+#line 1565 "engines/hypno/grammar_arc.cpp"
break;
case 31: /* hline: QTOK NUM NUM */
-#line 226 "engines/hypno/grammar_arc.y"
+#line 236 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "Q %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1561 "engines/hypno/grammar_arc.cpp"
+#line 1571 "engines/hypno/grammar_arc.cpp"
break;
case 32: /* hline: BNTOK FILENAME */
-#line 227 "engines/hypno/grammar_arc.y"
+#line 237 "engines/hypno/grammar_arc.y"
{
if (Common::String("B0") == (yyvsp[-1].s))
g_parsedArc->beforeVideo = (yyvsp[0].s);
@@ -1590,153 +1600,153 @@ yyreduce:
debugC(1, kHypnoDebugParser, "BN %s", (yyvsp[0].s));
}
-#line 1594 "engines/hypno/grammar_arc.cpp"
+#line 1604 "engines/hypno/grammar_arc.cpp"
break;
case 33: /* hline: SNTOK FILENAME enc flag */
-#line 255 "engines/hypno/grammar_arc.y"
+#line 265 "engines/hypno/grammar_arc.y"
{
parseSN((yyvsp[-3].s), (yyvsp[-2].s), (yyvsp[-1].s), (yyvsp[0].s));
}
-#line 1602 "engines/hypno/grammar_arc.cpp"
+#line 1612 "engines/hypno/grammar_arc.cpp"
break;
case 34: /* hline: SNTOK FILENAME flag enc */
-#line 258 "engines/hypno/grammar_arc.y"
+#line 268 "engines/hypno/grammar_arc.y"
{
parseSN((yyvsp[-3].s), (yyvsp[-2].s), (yyvsp[0].s), (yyvsp[-1].s));
}
-#line 1610 "engines/hypno/grammar_arc.cpp"
+#line 1620 "engines/hypno/grammar_arc.cpp"
break;
case 35: /* hline: HETOK BYTE NUM NUM */
-#line 261 "engines/hypno/grammar_arc.y"
+#line 271 "engines/hypno/grammar_arc.y"
{
Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
segment.end = true;
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "HE %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1621 "engines/hypno/grammar_arc.cpp"
+#line 1631 "engines/hypno/grammar_arc.cpp"
break;
case 36: /* hline: HLTOK BYTE NUM NUM */
-#line 267 "engines/hypno/grammar_arc.y"
+#line 277 "engines/hypno/grammar_arc.y"
{
Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "HL %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1631 "engines/hypno/grammar_arc.cpp"
+#line 1641 "engines/hypno/grammar_arc.cpp"
break;
case 37: /* hline: HUTOK BYTE NUM NUM */
-#line 272 "engines/hypno/grammar_arc.y"
+#line 282 "engines/hypno/grammar_arc.y"
{
Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "HU %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1641 "engines/hypno/grammar_arc.cpp"
+#line 1651 "engines/hypno/grammar_arc.cpp"
break;
case 38: /* hline: HTOK NAME NUM NUM */
-#line 277 "engines/hypno/grammar_arc.y"
+#line 287 "engines/hypno/grammar_arc.y"
{
assert(Common::String((yyvsp[-2].s)).size() == 1);
Segment segment((yyvsp[-2].s)[0], (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H %s %d %d", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1652 "engines/hypno/grammar_arc.cpp"
+#line 1662 "engines/hypno/grammar_arc.cpp"
break;
case 39: /* hline: HTOK RTOK NUM NUM */
-#line 283 "engines/hypno/grammar_arc.y"
+#line 293 "engines/hypno/grammar_arc.y"
{ // Workaround for BYTE == R
Segment segment('R', (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H R %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1662 "engines/hypno/grammar_arc.cpp"
+#line 1672 "engines/hypno/grammar_arc.cpp"
break;
case 40: /* hline: HTOK ATOK NUM NUM */
-#line 288 "engines/hypno/grammar_arc.y"
+#line 298 "engines/hypno/grammar_arc.y"
{ // Workaround for BYTE == A
Segment segment('A', (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H A %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1672 "engines/hypno/grammar_arc.cpp"
+#line 1682 "engines/hypno/grammar_arc.cpp"
break;
case 41: /* hline: HTOK PTOK NUM NUM */
-#line 293 "engines/hypno/grammar_arc.y"
+#line 303 "engines/hypno/grammar_arc.y"
{ // Workaround for BYTE == P
Segment segment('P', (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H P %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1682 "engines/hypno/grammar_arc.cpp"
+#line 1692 "engines/hypno/grammar_arc.cpp"
break;
case 42: /* hline: HTOK LTOK NUM NUM */
-#line 298 "engines/hypno/grammar_arc.y"
+#line 308 "engines/hypno/grammar_arc.y"
{ // Workaround for BYTE == P
Segment segment('L', (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H P %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1692 "engines/hypno/grammar_arc.cpp"
+#line 1702 "engines/hypno/grammar_arc.cpp"
break;
case 43: /* hline: H12TOK BYTE NUM NUM */
-#line 303 "engines/hypno/grammar_arc.y"
+#line 313 "engines/hypno/grammar_arc.y"
{
Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "HN %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1702 "engines/hypno/grammar_arc.cpp"
+#line 1712 "engines/hypno/grammar_arc.cpp"
break;
case 44: /* hline: HTOK BYTE NUM NUM */
-#line 308 "engines/hypno/grammar_arc.y"
+#line 318 "engines/hypno/grammar_arc.y"
{
Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1712 "engines/hypno/grammar_arc.cpp"
+#line 1722 "engines/hypno/grammar_arc.cpp"
break;
case 45: /* enc: ENCTOK */
-#line 315 "engines/hypno/grammar_arc.y"
+#line 325 "engines/hypno/grammar_arc.y"
{ (yyval.s) = (yyvsp[0].s); }
-#line 1718 "engines/hypno/grammar_arc.cpp"
+#line 1728 "engines/hypno/grammar_arc.cpp"
break;
case 46: /* enc: %empty */
-#line 316 "engines/hypno/grammar_arc.y"
+#line 326 "engines/hypno/grammar_arc.y"
{ (yyval.s) = scumm_strdup(""); }
-#line 1724 "engines/hypno/grammar_arc.cpp"
+#line 1734 "engines/hypno/grammar_arc.cpp"
break;
case 47: /* flag: NAME */
-#line 319 "engines/hypno/grammar_arc.y"
+#line 329 "engines/hypno/grammar_arc.y"
{ (yyval.s) = (yyvsp[0].s); }
-#line 1730 "engines/hypno/grammar_arc.cpp"
+#line 1740 "engines/hypno/grammar_arc.cpp"
break;
case 48: /* flag: %empty */
-#line 320 "engines/hypno/grammar_arc.y"
+#line 330 "engines/hypno/grammar_arc.y"
{ (yyval.s) = scumm_strdup(""); }
-#line 1736 "engines/hypno/grammar_arc.cpp"
+#line 1746 "engines/hypno/grammar_arc.cpp"
break;
case 52: /* bline: FNTOK FILENAME */
-#line 328 "engines/hypno/grammar_arc.y"
+#line 338 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
if (Common::String("F0") == (yyvsp[-1].s))
@@ -1747,457 +1757,457 @@ yyreduce:
shoot->additionalVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1751 "engines/hypno/grammar_arc.cpp"
+#line 1761 "engines/hypno/grammar_arc.cpp"
break;
case 53: /* bline: AVTOK NUM */
-#line 338 "engines/hypno/grammar_arc.y"
+#line 348 "engines/hypno/grammar_arc.y"
{
assert((yyvsp[0].i) == 0);
shoot->nonHostile = true;
debugC(1, kHypnoDebugParser, "AV %d", (yyvsp[0].i));
}
-#line 1761 "engines/hypno/grammar_arc.cpp"
+#line 1771 "engines/hypno/grammar_arc.cpp"
break;
case 54: /* bline: ALTOK NUM */
-#line 343 "engines/hypno/grammar_arc.y"
+#line 353 "engines/hypno/grammar_arc.y"
{
assert(g_parsedArc->shoots.size() > 0);
shoot->checkIfDestroyed = g_parsedArc->shoots.back().name;
debugC(1, kHypnoDebugParser, "AL %d", (yyvsp[0].i));
}
-#line 1771 "engines/hypno/grammar_arc.cpp"
+#line 1781 "engines/hypno/grammar_arc.cpp"
break;
case 55: /* bline: ABTOK NUM */
-#line 348 "engines/hypno/grammar_arc.y"
+#line 358 "engines/hypno/grammar_arc.y"
{
assert((yyvsp[0].i) == 1);
shoot->playInteractionAudio = true;
debugC(1, kHypnoDebugParser, "AB %d", (yyvsp[0].i));
}
-#line 1781 "engines/hypno/grammar_arc.cpp"
+#line 1791 "engines/hypno/grammar_arc.cpp"
break;
case 56: /* bline: DTOK LTOK */
-#line 353 "engines/hypno/grammar_arc.y"
+#line 363 "engines/hypno/grammar_arc.y"
{
shoot->direction = 'L';
debugC(1, kHypnoDebugParser, "D L"); }
-#line 1789 "engines/hypno/grammar_arc.cpp"
+#line 1799 "engines/hypno/grammar_arc.cpp"
break;
case 57: /* bline: DTOK RTOK */
-#line 356 "engines/hypno/grammar_arc.y"
+#line 366 "engines/hypno/grammar_arc.y"
{
shoot->direction = 'R';
debugC(1, kHypnoDebugParser, "D R"); }
-#line 1797 "engines/hypno/grammar_arc.cpp"
+#line 1807 "engines/hypno/grammar_arc.cpp"
break;
case 58: /* bline: J0TOK NUM */
-#line 359 "engines/hypno/grammar_arc.y"
+#line 369 "engines/hypno/grammar_arc.y"
{
assert((yyvsp[0].i) > 0);
shoot->warningVideoIdx = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "J0 %d", (yyvsp[0].i));
}
-#line 1807 "engines/hypno/grammar_arc.cpp"
+#line 1817 "engines/hypno/grammar_arc.cpp"
break;
case 59: /* bline: FNTOK NONETOK */
-#line 364 "engines/hypno/grammar_arc.y"
+#line 374 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = "NONE";
debugC(1, kHypnoDebugParser, "FN NONE");
}
-#line 1817 "engines/hypno/grammar_arc.cpp"
+#line 1827 "engines/hypno/grammar_arc.cpp"
break;
case 60: /* bline: FTOK FILENAME */
-#line 369 "engines/hypno/grammar_arc.y"
+#line 379 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1827 "engines/hypno/grammar_arc.cpp"
+#line 1837 "engines/hypno/grammar_arc.cpp"
break;
case 61: /* bline: ITOK NAME */
-#line 374 "engines/hypno/grammar_arc.y"
+#line 384 "engines/hypno/grammar_arc.y"
{
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1836 "engines/hypno/grammar_arc.cpp"
+#line 1846 "engines/hypno/grammar_arc.cpp"
break;
case 62: /* bline: ITOK BNTOK */
-#line 378 "engines/hypno/grammar_arc.y"
+#line 388 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == B1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1845 "engines/hypno/grammar_arc.cpp"
+#line 1855 "engines/hypno/grammar_arc.cpp"
break;
case 63: /* bline: ITOK ATOK */
-#line 382 "engines/hypno/grammar_arc.y"
+#line 392 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == A
shoot->name = "A";
debugC(1, kHypnoDebugParser, "I A");
}
-#line 1854 "engines/hypno/grammar_arc.cpp"
+#line 1864 "engines/hypno/grammar_arc.cpp"
break;
case 64: /* bline: ITOK CTOK */
-#line 386 "engines/hypno/grammar_arc.y"
+#line 396 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == C
shoot->name = "C";
debugC(1, kHypnoDebugParser, "I C");
}
-#line 1863 "engines/hypno/grammar_arc.cpp"
+#line 1873 "engines/hypno/grammar_arc.cpp"
break;
case 65: /* bline: ITOK DTOK */
-#line 390 "engines/hypno/grammar_arc.y"
+#line 400 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == D
shoot->name = "D";
debugC(1, kHypnoDebugParser, "I D");
}
-#line 1872 "engines/hypno/grammar_arc.cpp"
+#line 1882 "engines/hypno/grammar_arc.cpp"
break;
case 66: /* bline: ITOK FTOK */
-#line 394 "engines/hypno/grammar_arc.y"
+#line 404 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == F
shoot->name = "F";
debugC(1, kHypnoDebugParser, "I F");
}
-#line 1881 "engines/hypno/grammar_arc.cpp"
+#line 1891 "engines/hypno/grammar_arc.cpp"
break;
case 67: /* bline: ITOK GTOK */
-#line 398 "engines/hypno/grammar_arc.y"
+#line 408 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == G
shoot->name = "G";
debugC(1, kHypnoDebugParser, "I G");
}
-#line 1890 "engines/hypno/grammar_arc.cpp"
+#line 1900 "engines/hypno/grammar_arc.cpp"
break;
case 68: /* bline: ITOK HTOK */
-#line 402 "engines/hypno/grammar_arc.y"
+#line 412 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == H
shoot->name = "H";
debugC(1, kHypnoDebugParser, "I H");
}
-#line 1899 "engines/hypno/grammar_arc.cpp"
+#line 1909 "engines/hypno/grammar_arc.cpp"
break;
case 69: /* bline: ITOK H12TOK */
-#line 406 "engines/hypno/grammar_arc.y"
+#line 416 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == H1/H2
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1908 "engines/hypno/grammar_arc.cpp"
+#line 1918 "engines/hypno/grammar_arc.cpp"
break;
case 70: /* bline: ITOK ITOK */
-#line 410 "engines/hypno/grammar_arc.y"
+#line 420 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == I
shoot->name = "I";
debugC(1, kHypnoDebugParser, "I I");
}
-#line 1917 "engines/hypno/grammar_arc.cpp"
+#line 1927 "engines/hypno/grammar_arc.cpp"
break;
case 71: /* bline: ITOK JTOK */
-#line 414 "engines/hypno/grammar_arc.y"
+#line 424 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == J
shoot->name = "J";
debugC(1, kHypnoDebugParser, "I J");
}
-#line 1926 "engines/hypno/grammar_arc.cpp"
+#line 1936 "engines/hypno/grammar_arc.cpp"
break;
case 72: /* bline: ITOK KTOK */
-#line 418 "engines/hypno/grammar_arc.y"
+#line 428 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == K
shoot->name = "K";
debugC(1, kHypnoDebugParser, "I K");
}
-#line 1935 "engines/hypno/grammar_arc.cpp"
+#line 1945 "engines/hypno/grammar_arc.cpp"
break;
case 73: /* bline: ITOK NTOK */
-#line 422 "engines/hypno/grammar_arc.y"
+#line 432 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == N
shoot->name = "N";
debugC(1, kHypnoDebugParser, "I N");
}
-#line 1944 "engines/hypno/grammar_arc.cpp"
+#line 1954 "engines/hypno/grammar_arc.cpp"
break;
case 74: /* bline: ITOK OTOK */
-#line 426 "engines/hypno/grammar_arc.y"
+#line 436 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == O
shoot->name = "O";
debugC(1, kHypnoDebugParser, "I O");
}
-#line 1953 "engines/hypno/grammar_arc.cpp"
+#line 1963 "engines/hypno/grammar_arc.cpp"
break;
case 75: /* bline: ITOK PTOK */
-#line 430 "engines/hypno/grammar_arc.y"
+#line 440 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == P
shoot->name = "P";
debugC(1, kHypnoDebugParser, "I P");
}
-#line 1962 "engines/hypno/grammar_arc.cpp"
+#line 1972 "engines/hypno/grammar_arc.cpp"
break;
case 76: /* bline: ITOK QTOK */
-#line 434 "engines/hypno/grammar_arc.y"
+#line 444 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == Q
shoot->name = "Q";
debugC(1, kHypnoDebugParser, "I Q");
}
-#line 1971 "engines/hypno/grammar_arc.cpp"
+#line 1981 "engines/hypno/grammar_arc.cpp"
break;
case 77: /* bline: ITOK RTOK */
-#line 438 "engines/hypno/grammar_arc.y"
+#line 448 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == R
shoot->name = "R";
debugC(1, kHypnoDebugParser, "I R");
}
-#line 1980 "engines/hypno/grammar_arc.cpp"
+#line 1990 "engines/hypno/grammar_arc.cpp"
break;
case 78: /* bline: ITOK SNTOK */
-#line 442 "engines/hypno/grammar_arc.y"
+#line 452 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == S1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1989 "engines/hypno/grammar_arc.cpp"
+#line 1999 "engines/hypno/grammar_arc.cpp"
break;
case 79: /* bline: ITOK TTOK */
-#line 446 "engines/hypno/grammar_arc.y"
+#line 456 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == T
shoot->name = "T";
debugC(1, kHypnoDebugParser, "I T");
}
-#line 1998 "engines/hypno/grammar_arc.cpp"
+#line 2008 "engines/hypno/grammar_arc.cpp"
break;
case 80: /* bline: ITOK LTOK */
-#line 450 "engines/hypno/grammar_arc.y"
+#line 460 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == L
shoot->name = "L";
debugC(1, kHypnoDebugParser, "I L");
}
-#line 2007 "engines/hypno/grammar_arc.cpp"
+#line 2017 "engines/hypno/grammar_arc.cpp"
break;
case 81: /* bline: ITOK MTOK */
-#line 454 "engines/hypno/grammar_arc.y"
+#line 464 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == M
shoot->name = "M";
debugC(1, kHypnoDebugParser, "I M");
}
-#line 2016 "engines/hypno/grammar_arc.cpp"
+#line 2026 "engines/hypno/grammar_arc.cpp"
break;
case 82: /* bline: ITOK UTOK */
-#line 458 "engines/hypno/grammar_arc.y"
+#line 468 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == U
shoot->name = "U";
debugC(1, kHypnoDebugParser, "I U");
}
-#line 2025 "engines/hypno/grammar_arc.cpp"
+#line 2035 "engines/hypno/grammar_arc.cpp"
break;
case 83: /* bline: JTOK NUM */
-#line 462 "engines/hypno/grammar_arc.y"
+#line 472 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "J %d", (yyvsp[0].i));
}
-#line 2033 "engines/hypno/grammar_arc.cpp"
+#line 2043 "engines/hypno/grammar_arc.cpp"
break;
case 84: /* bline: A0TOK NUM NUM */
-#line 465 "engines/hypno/grammar_arc.y"
+#line 475 "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 2042 "engines/hypno/grammar_arc.cpp"
+#line 2052 "engines/hypno/grammar_arc.cpp"
break;
case 85: /* bline: RTOK NUM NUM */
-#line 469 "engines/hypno/grammar_arc.y"
+#line 479 "engines/hypno/grammar_arc.y"
{
shoot->objKillsCount = (yyvsp[-1].i);
shoot->objMissesCount = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "R %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2052 "engines/hypno/grammar_arc.cpp"
+#line 2062 "engines/hypno/grammar_arc.cpp"
break;
case 86: /* bline: R0TOK NUM NUM */
-#line 474 "engines/hypno/grammar_arc.y"
+#line 484 "engines/hypno/grammar_arc.y"
{
shoot->objKillsCount = (yyvsp[-1].i);
shoot->objMissesCount = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "R0 %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2062 "engines/hypno/grammar_arc.cpp"
+#line 2072 "engines/hypno/grammar_arc.cpp"
break;
case 87: /* bline: R1TOK NUM NUM */
-#line 479 "engines/hypno/grammar_arc.y"
+#line 489 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "R1 %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2070 "engines/hypno/grammar_arc.cpp"
+#line 2080 "engines/hypno/grammar_arc.cpp"
break;
case 88: /* bline: BNTOK NUM NUM */
-#line 482 "engines/hypno/grammar_arc.y"
+#line 492 "engines/hypno/grammar_arc.y"
{
FrameInfo fi((yyvsp[0].i), (yyvsp[-1].i));
shoot->bodyFrames.push_back(fi);
debugC(1, kHypnoDebugParser, "BN %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2080 "engines/hypno/grammar_arc.cpp"
+#line 2090 "engines/hypno/grammar_arc.cpp"
break;
case 89: /* bline: KNTOK NUM NUM */
-#line 487 "engines/hypno/grammar_arc.y"
+#line 497 "engines/hypno/grammar_arc.y"
{
FrameInfo fi((yyvsp[0].i), (yyvsp[-1].i));
shoot->explosionFrames.push_back(fi);
debugC(1, kHypnoDebugParser, "KN %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2090 "engines/hypno/grammar_arc.cpp"
+#line 2100 "engines/hypno/grammar_arc.cpp"
break;
case 90: /* bline: P0TOK NUM NUM */
-#line 492 "engines/hypno/grammar_arc.y"
+#line 502 "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 2099 "engines/hypno/grammar_arc.cpp"
+#line 2109 "engines/hypno/grammar_arc.cpp"
break;
case 91: /* bline: OTOK NUM NUM */
-#line 496 "engines/hypno/grammar_arc.y"
+#line 506 "engines/hypno/grammar_arc.y"
{
if ((yyvsp[-1].i) == 0 && (yyvsp[0].i) == 0)
error("Invalid O command (0, 0)");
shoot->deathPosition = Common::Point((yyvsp[-1].i), (yyvsp[0].i));
debugC(1, kHypnoDebugParser, "O %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2110 "engines/hypno/grammar_arc.cpp"
+#line 2120 "engines/hypno/grammar_arc.cpp"
break;
case 92: /* bline: CTOK NUM */
-#line 502 "engines/hypno/grammar_arc.y"
+#line 512 "engines/hypno/grammar_arc.y"
{
shoot->timesToShoot = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i));
}
-#line 2119 "engines/hypno/grammar_arc.cpp"
+#line 2129 "engines/hypno/grammar_arc.cpp"
break;
case 93: /* bline: HTOK NUM */
-#line 506 "engines/hypno/grammar_arc.y"
+#line 516 "engines/hypno/grammar_arc.y"
{
shoot->attackFrames.push_back((yyvsp[0].i));
debugC(1, kHypnoDebugParser, "H %d", (yyvsp[0].i)); }
-#line 2127 "engines/hypno/grammar_arc.cpp"
+#line 2137 "engines/hypno/grammar_arc.cpp"
break;
case 94: /* bline: VTOK NUM */
-#line 509 "engines/hypno/grammar_arc.y"
+#line 519 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V %d", (yyvsp[0].i)); }
-#line 2133 "engines/hypno/grammar_arc.cpp"
+#line 2143 "engines/hypno/grammar_arc.cpp"
break;
case 95: /* bline: VTOK */
-#line 510 "engines/hypno/grammar_arc.y"
+#line 520 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V"); }
-#line 2139 "engines/hypno/grammar_arc.cpp"
+#line 2149 "engines/hypno/grammar_arc.cpp"
break;
case 96: /* bline: WTOK NUM */
-#line 511 "engines/hypno/grammar_arc.y"
+#line 521 "engines/hypno/grammar_arc.y"
{
shoot->attackWeight = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "W %d", (yyvsp[0].i)); }
-#line 2147 "engines/hypno/grammar_arc.cpp"
+#line 2157 "engines/hypno/grammar_arc.cpp"
break;
case 97: /* bline: DTOK NUM */
-#line 514 "engines/hypno/grammar_arc.y"
+#line 524 "engines/hypno/grammar_arc.y"
{
shoot->pointsToShoot = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
}
-#line 2156 "engines/hypno/grammar_arc.cpp"
+#line 2166 "engines/hypno/grammar_arc.cpp"
break;
case 98: /* bline: LTOK NUM NUM */
-#line 518 "engines/hypno/grammar_arc.y"
+#line 528 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "L %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2164 "engines/hypno/grammar_arc.cpp"
+#line 2174 "engines/hypno/grammar_arc.cpp"
break;
case 99: /* bline: LTOK NUM */
-#line 521 "engines/hypno/grammar_arc.y"
+#line 531 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "L %d", (yyvsp[0].i));
FrameInfo fi((yyvsp[0].i)-1, 0);
shoot->bodyFrames.push_back(fi);
}
-#line 2174 "engines/hypno/grammar_arc.cpp"
+#line 2184 "engines/hypno/grammar_arc.cpp"
break;
case 100: /* bline: MTOK NUM */
-#line 526 "engines/hypno/grammar_arc.y"
+#line 536 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "M %d", (yyvsp[0].i));
shoot->missedAnimation = (yyvsp[0].i);
}
-#line 2182 "engines/hypno/grammar_arc.cpp"
+#line 2192 "engines/hypno/grammar_arc.cpp"
break;
case 101: /* bline: KTOK */
-#line 529 "engines/hypno/grammar_arc.y"
+#line 539 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "K"); }
-#line 2188 "engines/hypno/grammar_arc.cpp"
+#line 2198 "engines/hypno/grammar_arc.cpp"
break;
case 102: /* bline: KTOK NUM */
-#line 530 "engines/hypno/grammar_arc.y"
+#line 540 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "K %d", (yyvsp[0].i));
FrameInfo fi((yyvsp[0].i), 1);
shoot->explosionFrames.push_back(fi);
}
-#line 2197 "engines/hypno/grammar_arc.cpp"
+#line 2207 "engines/hypno/grammar_arc.cpp"
break;
case 103: /* bline: KTOK NUM NUM NUM */
-#line 534 "engines/hypno/grammar_arc.y"
+#line 544 "engines/hypno/grammar_arc.y"
{
assert((yyvsp[-1].i) > (yyvsp[-2].i));
FrameInfo fi((yyvsp[-2].i), (yyvsp[-1].i) - (yyvsp[-2].i));
@@ -2205,20 +2215,20 @@ yyreduce:
shoot->explosionFrames.push_back(fi);
debugC(1, kHypnoDebugParser, "K %d %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2209 "engines/hypno/grammar_arc.cpp"
+#line 2219 "engines/hypno/grammar_arc.cpp"
break;
case 104: /* bline: KTOK NUM NUM */
-#line 541 "engines/hypno/grammar_arc.y"
+#line 551 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "K %d %d", (yyvsp[-1].i), (yyvsp[0].i));
FrameInfo fi((yyvsp[-1].i), 1);
shoot->explosionFrames.push_back(fi);
}
-#line 2218 "engines/hypno/grammar_arc.cpp"
+#line 2228 "engines/hypno/grammar_arc.cpp"
break;
case 105: /* bline: SNTOK FILENAME enc */
-#line 545 "engines/hypno/grammar_arc.y"
+#line 555 "engines/hypno/grammar_arc.y"
{
if (Common::String("S0") == (yyvsp[-2].s)) {
shoot->enemySound = (yyvsp[-1].s);
@@ -2234,88 +2244,88 @@ yyreduce:
shoot->animalSound = (yyvsp[-1].s);
debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s)); }
-#line 2238 "engines/hypno/grammar_arc.cpp"
+#line 2248 "engines/hypno/grammar_arc.cpp"
break;
case 106: /* bline: SNTOK */
-#line 560 "engines/hypno/grammar_arc.y"
+#line 570 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "SN");
}
-#line 2246 "engines/hypno/grammar_arc.cpp"
+#line 2256 "engines/hypno/grammar_arc.cpp"
break;
case 107: /* bline: GTOK */
-#line 564 "engines/hypno/grammar_arc.y"
+#line 574 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "G"); }
-#line 2252 "engines/hypno/grammar_arc.cpp"
+#line 2262 "engines/hypno/grammar_arc.cpp"
break;
case 108: /* bline: TTOK NUM NUM NUM */
-#line 565 "engines/hypno/grammar_arc.y"
+#line 575 "engines/hypno/grammar_arc.y"
{
shoot->interactionFrame = (yyvsp[-2].i);
assert((yyvsp[-1].i) == 0);
shoot->waitForClickAfterInteraction = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "T %d %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2263 "engines/hypno/grammar_arc.cpp"
+#line 2273 "engines/hypno/grammar_arc.cpp"
break;
case 109: /* bline: TTOK NUM */
-#line 571 "engines/hypno/grammar_arc.y"
+#line 581 "engines/hypno/grammar_arc.y"
{
shoot->interactionFrame = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "T %d", (yyvsp[0].i));
}
-#line 2272 "engines/hypno/grammar_arc.cpp"
+#line 2282 "engines/hypno/grammar_arc.cpp"
break;
case 110: /* bline: TTOK */
-#line 575 "engines/hypno/grammar_arc.y"
+#line 585 "engines/hypno/grammar_arc.y"
{
shoot->isAnimal = true;
debugC(1, kHypnoDebugParser, "T");
}
-#line 2281 "engines/hypno/grammar_arc.cpp"
+#line 2291 "engines/hypno/grammar_arc.cpp"
break;
case 111: /* bline: MTOK */
-#line 579 "engines/hypno/grammar_arc.y"
+#line 589 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "M");
}
-#line 2289 "engines/hypno/grammar_arc.cpp"
+#line 2299 "engines/hypno/grammar_arc.cpp"
break;
case 112: /* bline: NTOK */
-#line 582 "engines/hypno/grammar_arc.y"
+#line 592 "engines/hypno/grammar_arc.y"
{
shoot->noEnemySound = true;
debugC(1, kHypnoDebugParser, "N"); }
-#line 2297 "engines/hypno/grammar_arc.cpp"
+#line 2307 "engines/hypno/grammar_arc.cpp"
break;
case 113: /* bline: NRTOK */
-#line 585 "engines/hypno/grammar_arc.y"
+#line 595 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "NR"); }
-#line 2304 "engines/hypno/grammar_arc.cpp"
+#line 2314 "engines/hypno/grammar_arc.cpp"
break;
case 114: /* bline: ZTOK */
-#line 587 "engines/hypno/grammar_arc.y"
+#line 597 "engines/hypno/grammar_arc.y"
{
g_parsedArc->shoots.push_back(*shoot);
//delete shoot;
//shoot = nullptr;
debugC(1, kHypnoDebugParser, "Z");
}
-#line 2315 "engines/hypno/grammar_arc.cpp"
+#line 2325 "engines/hypno/grammar_arc.cpp"
break;
-#line 2319 "engines/hypno/grammar_arc.cpp"
+#line 2329 "engines/hypno/grammar_arc.cpp"
default: break;
}
diff --git a/engines/hypno/grammar_arc.y b/engines/hypno/grammar_arc.y
index bbd7e374117..e48f40ebf5c 100644
--- a/engines/hypno/grammar_arc.y
+++ b/engines/hypno/grammar_arc.y
@@ -50,32 +50,42 @@ using namespace Hypno;
void parseSN(const char *sn, const char *path, const char *enc, const char *flag) {
uint32 sampleRate = 11025;
+ bool stereo = false;
if (Common::String("22K") == enc || Common::String("22k") == enc)
sampleRate = 22050;
else if (HYPNO_ARC_default_sound_rate > 0)
sampleRate = HYPNO_ARC_default_sound_rate;
+ if (Common::String("STEREO") == flag)
+ stereo = true;
if (Common::String("S0") == sn) {
g_parsedArc->music = path;
g_parsedArc->musicRate = sampleRate;
+ g_parsedArc->musicStereo = stereo;
} else if (Common::String("S1") == sn) {
g_parsedArc->shootSound = path;
g_parsedArc->shootSoundRate = sampleRate;
+ assert(!stereo);
} else if (Common::String("S2") == sn) {
g_parsedArc->hitSound = path;
g_parsedArc->hitSoundRate = sampleRate;
+ assert(!stereo);
} else if (Common::String("S4") == sn) {
g_parsedArc->enemySound = path;
g_parsedArc->enemySoundRate = sampleRate;
+ assert(!stereo);
} else if (Common::String("S5") == sn) {
g_parsedArc->additionalSound = path;
g_parsedArc->additionalSoundRate = sampleRate;
+ assert(!stereo);
} else if (Common::String("S7") == sn) {
g_parsedArc->noAmmoSound = path;
g_parsedArc->noAmmoSoundRate = sampleRate;
+ assert(!stereo);
} else if (Common::String("S8") == sn) {
g_parsedArc->additionalSound = path;
g_parsedArc->additionalSoundRate = sampleRate;
+ assert(!stereo);
}
debugC(1, kHypnoDebugParser, "SN %s", path);
}
diff --git a/engines/hypno/hypno.cpp b/engines/hypno/hypno.cpp
index f58d337afb9..cb672307ee7 100644
--- a/engines/hypno/hypno.cpp
+++ b/engines/hypno/hypno.cpp
@@ -32,6 +32,7 @@
#include "common/savefile.h"
#include "common/str.h"
#include "common/system.h"
+#include "common/substream.h"
#include "common/timer.h"
#include "engines/advancedDetector.h"
#include "engines/util.h"
@@ -54,8 +55,8 @@ HypnoEngine::HypnoEngine(OSystem *syst, const ADGameDescription *gd)
_playerFrameIdx(0), _playerFrameSep(0), _refreshConversation(false),
_countdown(0), _timerStarted(false), _score(0), _bonus(0), _lives(0),
_defaultCursor(""), _defaultCursorIdx(0), _skipDefeatVideo(false),
- _background(nullptr), _masks(nullptr), _musicRate(0), _skipNextVideo(false),
- _additionalVideo(nullptr), _ammo(0), _maxAmmo(0),
+ _background(nullptr), _masks(nullptr), _musicRate(0), _musicStereo(false),
+ _additionalVideo(nullptr), _ammo(0), _maxAmmo(0), _skipNextVideo(false),
_doNotStopSounds(false), _screenW(0), _screenH(0) { // Every games initializes its own resolution
_rnd = new Common::RandomSource("hypno");
_checkpoint = "";
@@ -540,14 +541,24 @@ void HypnoEngine::skipVideo(MVideo &video) {
// Sound handling
-void HypnoEngine::playSound(const Common::String &filename, uint32 loops, uint32 sampleRate) {
+void HypnoEngine::playSound(const Common::String &filename, uint32 loops, uint32 sampleRate, bool stereo) {
debugC(1, kHypnoDebugMedia, "%s(%s, %d, %d)", __FUNCTION__, filename.c_str(), loops, sampleRate);
Common::String name = convertPath(filename);
Audio::LoopingAudioStream *stream = nullptr;
Common::File *file = new Common::File();
if (file->open(name)) {
- stream = new Audio::LoopingAudioStream(Audio::makeRawStream(file, sampleRate, Audio::FLAG_UNSIGNED, DisposeAfterUse::YES), loops);
+ uint32 flags = Audio::FLAG_UNSIGNED;
+
+ Common::SeekableSubReadStream *sub;
+ if (stereo) {
+ sub = new Common::SeekableSubReadStream(file, 0, file->size() - (file->size() % 2), DisposeAfterUse::YES);
+ flags = flags | Audio::FLAG_STEREO;
+ } else {
+ sub = new Common::SeekableSubReadStream(file, 0, file->size(), DisposeAfterUse::YES);
+ }
+
+ stream = new Audio::LoopingAudioStream(Audio::makeRawStream(sub, sampleRate, flags, DisposeAfterUse::YES), loops);
_mixer->playStream(Audio::Mixer::kSFXSoundType, &_soundHandle, stream, -1, Audio::Mixer::kMaxChannelVolume);
} else {
if (!_prefixDir.empty())
diff --git a/engines/hypno/hypno.h b/engines/hypno/hypno.h
index 3d82e0918c2..f86b245d19a 100644
--- a/engines/hypno/hypno.h
+++ b/engines/hypno/hypno.h
@@ -237,8 +237,9 @@ public:
Filename _soundPath;
Filename _music;
int _musicRate;
+ bool _musicStereo;
bool _doNotStopSounds;
- void playSound(const Filename &filename, uint32 loops, uint32 sampleRate = 22050);
+ void playSound(const Filename &filename, uint32 loops, uint32 sampleRate = 22050, bool stereo = false);
void stopSound();
// Arcade
diff --git a/engines/hypno/tokens_arc.h b/engines/hypno/tokens_arc.h
index 2fefefeebd4..4e4c8a7d625 100644
--- a/engines/hypno/tokens_arc.h
+++ b/engines/hypno/tokens_arc.h
@@ -127,7 +127,7 @@ extern int HYPNO_ARC_debug;
#if ! defined HYPNO_ARC_STYPE && ! defined HYPNO_ARC_STYPE_IS_DECLARED
union HYPNO_ARC_STYPE
{
-#line 85 "engines/hypno/grammar_arc.y"
+#line 95 "engines/hypno/grammar_arc.y"
char *s; /* string value */
int i; /* integer value */
Commit: 0b8df5e28059dcbd24772e11dc48653e59cf7b01
https://github.com/scummvm/scummvm/commit/0b8df5e28059dcbd24772e11dc48653e59cf7b01
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-06-17T09:26:13+02:00
Commit Message:
HYPNO: fixed typo in video path in boyz
Changed paths:
engines/hypno/boyz/arcade.cpp
diff --git a/engines/hypno/boyz/arcade.cpp b/engines/hypno/boyz/arcade.cpp
index 4199d51b414..e641f2c96be 100644
--- a/engines/hypno/boyz/arcade.cpp
+++ b/engines/hypno/boyz/arcade.cpp
@@ -738,7 +738,7 @@ void BoyzEngine::missedTarget(Shoot *s, ArcadeShooting *arc) {
else if (territory <= 4)
path = "misc/alrm_mbs.smk";
else
- path = "misc/alrm_c5.smk";
+ path = "misc/alrm_c5s.smk";
disableCursor();
MVideo alarmVideo(path, Common::Point(0, 0), false, true, false);
Commit: d6ae2c918922eb253024fe3cf31326578cdde591
https://github.com/scummvm/scummvm/commit/d6ae2c918922eb253024fe3cf31326578cdde591
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-06-17T09:26:13+02:00
Commit Message:
HYPNO: start in flashback mode, if available, in boyz
Changed paths:
engines/hypno/boyz/boyz.cpp
diff --git a/engines/hypno/boyz/boyz.cpp b/engines/hypno/boyz/boyz.cpp
index 49e46f630db..a67a15ab91a 100644
--- a/engines/hypno/boyz/boyz.cpp
+++ b/engines/hypno/boyz/boyz.cpp
@@ -1102,6 +1102,8 @@ Common::Error BoyzEngine::loadGameStream(Common::SeekableReadStream *stream) {
_nextLevel = "<select_t1>";
_flashbackMode = true;
unlockAllLevels();
+ } else if (_flashbackMode) {
+ _nextLevel = "<select_t1>";
} else if (_ids[_lastLevel] == 3591)
_nextLevel = "<select_c3>";
else if (_ids[_lastLevel] == 3592)
Commit: 3cfac79e97cb4d9cae4648169a774ff42218a6b3
https://github.com/scummvm/scummvm/commit/3cfac79e97cb4d9cae4648169a774ff42218a6b3
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-06-17T09:26:13+02:00
Commit Message:
HYPNO: use _musicStereo flag when restoring music playback in boyz
Changed paths:
engines/hypno/boyz/arcade.cpp
diff --git a/engines/hypno/boyz/arcade.cpp b/engines/hypno/boyz/arcade.cpp
index e641f2c96be..8473b10bd5c 100644
--- a/engines/hypno/boyz/arcade.cpp
+++ b/engines/hypno/boyz/arcade.cpp
@@ -357,7 +357,7 @@ bool BoyzEngine::checkTransition(ArcadeTransitions &transitions, ArcadeShooting
loadPalette(_currentPalette);
_background->decoder->pauseVideo(false);
if (!_music.empty())
- playSound(_music, 0, arc->musicRate); // restore music
+ playSound(_music, 0, _musicRate, _musicStereo); // restore music
drawPlayer();
updateScreen(*_background);
drawScreen();
@@ -600,7 +600,7 @@ bool BoyzEngine::shoot(const Common::Point &mousePos, ArcadeShooting *arc, bool
updateScreen(*_background);
drawScreen();
if (!_music.empty())
- playSound(_music, 0, arc->musicRate); // restore music
+ playSound(_music, 0, _musicRate, _musicStereo); // restore music
}
} else if (_shoots[i].interactionFrame > 0) {
incInfoReceived();
@@ -635,7 +635,7 @@ bool BoyzEngine::shoot(const Common::Point &mousePos, ArcadeShooting *arc, bool
updateScreen(*_background);
drawScreen();
if (!_music.empty())
- playSound(_music, 0, arc->musicRate); // restore music
+ playSound(_music, 0, _musicRate, _musicStereo); // restore music
hitPlayer();
}
Commit: c54b24fc391e1ddb92251e2a16bc9391fc499dd3
https://github.com/scummvm/scummvm/commit/c54b24fc391e1ddb92251e2a16bc9391fc499dd3
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-06-17T09:26:13+02:00
Commit Message:
HYPNO: use _musicStereo flag when restoring music playback in boyz
Changed paths:
engines/hypno/arcade.cpp
diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index a0c0785f485..3fbb77f89fe 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -692,7 +692,7 @@ bool HypnoEngine::shoot(const Common::Point &mousePos, ArcadeShooting *arc, bool
updateScreen(*_background);
drawScreen();
if (!_music.empty())
- playSound(_music, 0, _musicRate); // restore music
+ playSound(_music, 0, _musicRate, _musicStereo); // restore music
} else if (_objIdx == 1 && !arc->hitBoss2Video.empty()) {
_background->decoder->pauseVideo(true);
MVideo video(arc->hitBoss2Video, Common::Point(0, 0), false, true, false);
@@ -704,7 +704,7 @@ bool HypnoEngine::shoot(const Common::Point &mousePos, ArcadeShooting *arc, bool
drawScreen();
drawCursorArcade(mousePos);
if (!_music.empty())
- playSound(_music, 0, _musicRate); // restore music
+ playSound(_music, 0, _musicRate, _musicStereo); // restore music
}
byte p[3] = {0x00, 0x00, 0x00}; // Always black?
assert(_shoots[i].paletteSize == 1 || _shoots[i].paletteSize == 0);
Commit: d22d5090f8ead437798215328fad646524c0c7e9
https://github.com/scummvm/scummvm/commit/d22d5090f8ead437798215328fad646524c0c7e9
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-06-17T09:26:13+02:00
Commit Message:
HYPNO: enable stereo sound for audio transitions in boyz
Changed paths:
engines/hypno/boyz/arcade.cpp
engines/hypno/grammar.h
engines/hypno/grammar_arc.cpp
engines/hypno/grammar_arc.y
diff --git a/engines/hypno/boyz/arcade.cpp b/engines/hypno/boyz/arcade.cpp
index 8473b10bd5c..b20da3c3aa1 100644
--- a/engines/hypno/boyz/arcade.cpp
+++ b/engines/hypno/boyz/arcade.cpp
@@ -363,7 +363,7 @@ bool BoyzEngine::checkTransition(ArcadeTransitions &transitions, ArcadeShooting
drawScreen();
drawCursorArcade(g_system->getEventManager()->getMousePos());
} else if (!at.sound.empty()) {
- playSound(at.sound, 1, at.soundRate);
+ playSound(at.sound, 1, at.soundRate, at.soundStereo);
} else if (at.jumpToTime > 0) {
_background->decoder->forceSeekToFrame(at.jumpToTime);
_masks->decoder->forceSeekToFrame(at.jumpToTime);
diff --git a/engines/hypno/grammar.h b/engines/hypno/grammar.h
index b0d3c7b85b6..00c931ddafd 100644
--- a/engines/hypno/grammar.h
+++ b/engines/hypno/grammar.h
@@ -573,6 +573,7 @@ public:
palette = palette_;
sound = sound_;
soundRate = soundRate_;
+ soundStereo = false;
loseLevel = false;
selection = false;
jumpToTime = 0;
@@ -583,6 +584,7 @@ public:
Filename palette;
Filename sound;
uint32 soundRate;
+ bool soundStereo;
bool loseLevel;
bool selection;
uint32 jumpToTime;
diff --git a/engines/hypno/grammar_arc.cpp b/engines/hypno/grammar_arc.cpp
index 770a2f694e5..cc5d4f62ffe 100644
--- a/engines/hypno/grammar_arc.cpp
+++ b/engines/hypno/grammar_arc.cpp
@@ -633,16 +633,16 @@ static const yytype_int16 yyrline[] =
{
0, 120, 120, 120, 121, 124, 125, 126, 129, 133,
137, 141, 142, 143, 147, 152, 156, 160, 165, 175,
- 184, 189, 195, 200, 209, 214, 218, 222, 226, 229,
- 233, 236, 237, 265, 268, 271, 277, 282, 287, 293,
- 298, 303, 308, 313, 318, 325, 326, 329, 330, 333,
- 334, 335, 338, 348, 353, 358, 363, 366, 369, 374,
- 379, 384, 388, 392, 396, 400, 404, 408, 412, 416,
- 420, 424, 428, 432, 436, 440, 444, 448, 452, 456,
- 460, 464, 468, 472, 475, 479, 484, 489, 492, 497,
- 502, 506, 512, 516, 519, 520, 521, 524, 528, 531,
- 536, 539, 540, 544, 551, 555, 570, 574, 575, 581,
- 585, 589, 592, 595, 597
+ 184, 189, 195, 200, 213, 218, 222, 226, 230, 233,
+ 237, 240, 241, 269, 272, 275, 281, 286, 291, 297,
+ 302, 307, 312, 317, 322, 329, 330, 333, 334, 337,
+ 338, 339, 342, 352, 357, 362, 367, 370, 373, 378,
+ 383, 388, 392, 396, 400, 404, 408, 412, 416, 420,
+ 424, 428, 432, 436, 440, 444, 448, 452, 456, 460,
+ 464, 468, 472, 476, 479, 483, 488, 493, 496, 501,
+ 506, 510, 516, 520, 523, 524, 525, 528, 532, 535,
+ 540, 543, 544, 548, 555, 559, 574, 578, 579, 585,
+ 589, 593, 596, 599, 601
};
#endif
@@ -1492,86 +1492,90 @@ yyreduce:
#line 200 "engines/hypno/grammar_arc.y"
{
uint32 sampleRate = 11025;
+ bool stereo = false;
if (Common::String("22K") == (yyvsp[0].s) || Common::String("22k") == (yyvsp[0].s))
sampleRate = 22050;
+ if (Common::String("STEREO") == (yyvsp[-1].s))
+ stereo = true;
ArcadeTransition at("", "", (yyvsp[-2].s), sampleRate, (yyvsp[-3].i));
+ at.soundStereo = stereo;
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "Ta %d %s", (yyvsp[-3].i), (yyvsp[-2].s));
}
-#line 1503 "engines/hypno/grammar_arc.cpp"
+#line 1507 "engines/hypno/grammar_arc.cpp"
break;
case 24: /* hline: TTOK FILENAME NUM */
-#line 209 "engines/hypno/grammar_arc.y"
+#line 213 "engines/hypno/grammar_arc.y"
{
ArcadeTransition at((yyvsp[-1].s), "", "", 0, (yyvsp[0].i));
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "T %s %d", (yyvsp[-1].s), (yyvsp[0].i));
}
-#line 1513 "engines/hypno/grammar_arc.cpp"
+#line 1517 "engines/hypno/grammar_arc.cpp"
break;
case 25: /* hline: TTOK NONETOK NUM */
-#line 214 "engines/hypno/grammar_arc.y"
+#line 218 "engines/hypno/grammar_arc.y"
{
ArcadeTransition at("NONE", "", "", 0, (yyvsp[0].i));
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "T NONE %d", (yyvsp[0].i)); }
-#line 1522 "engines/hypno/grammar_arc.cpp"
+#line 1526 "engines/hypno/grammar_arc.cpp"
break;
case 26: /* hline: NTOK FILENAME */
-#line 218 "engines/hypno/grammar_arc.y"
+#line 222 "engines/hypno/grammar_arc.y"
{
g_parsedArc->backgroundVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "N %s", (yyvsp[0].s));
}
-#line 1531 "engines/hypno/grammar_arc.cpp"
+#line 1535 "engines/hypno/grammar_arc.cpp"
break;
case 27: /* hline: NSTOK FILENAME */
-#line 222 "engines/hypno/grammar_arc.y"
+#line 226 "engines/hypno/grammar_arc.y"
{
g_parsedArc->backgroundVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "N* %s", (yyvsp[0].s));
}
-#line 1540 "engines/hypno/grammar_arc.cpp"
+#line 1544 "engines/hypno/grammar_arc.cpp"
break;
case 28: /* hline: RTOK FILENAME */
-#line 226 "engines/hypno/grammar_arc.y"
+#line 230 "engines/hypno/grammar_arc.y"
{
g_parsedArc->backgroundPalette = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "R %s", (yyvsp[0].s)); }
-#line 1548 "engines/hypno/grammar_arc.cpp"
+#line 1552 "engines/hypno/grammar_arc.cpp"
break;
case 29: /* hline: ITOK FILENAME */
-#line 229 "engines/hypno/grammar_arc.y"
+#line 233 "engines/hypno/grammar_arc.y"
{
g_parsedArc->player = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1557 "engines/hypno/grammar_arc.cpp"
+#line 1561 "engines/hypno/grammar_arc.cpp"
break;
case 30: /* hline: I1TOK FILENAME */
-#line 233 "engines/hypno/grammar_arc.y"
+#line 237 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "I1 %s", (yyvsp[0].s));
}
-#line 1565 "engines/hypno/grammar_arc.cpp"
+#line 1569 "engines/hypno/grammar_arc.cpp"
break;
case 31: /* hline: QTOK NUM NUM */
-#line 236 "engines/hypno/grammar_arc.y"
+#line 240 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "Q %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1571 "engines/hypno/grammar_arc.cpp"
+#line 1575 "engines/hypno/grammar_arc.cpp"
break;
case 32: /* hline: BNTOK FILENAME */
-#line 237 "engines/hypno/grammar_arc.y"
+#line 241 "engines/hypno/grammar_arc.y"
{
if (Common::String("B0") == (yyvsp[-1].s))
g_parsedArc->beforeVideo = (yyvsp[0].s);
@@ -1600,153 +1604,153 @@ yyreduce:
debugC(1, kHypnoDebugParser, "BN %s", (yyvsp[0].s));
}
-#line 1604 "engines/hypno/grammar_arc.cpp"
+#line 1608 "engines/hypno/grammar_arc.cpp"
break;
case 33: /* hline: SNTOK FILENAME enc flag */
-#line 265 "engines/hypno/grammar_arc.y"
+#line 269 "engines/hypno/grammar_arc.y"
{
parseSN((yyvsp[-3].s), (yyvsp[-2].s), (yyvsp[-1].s), (yyvsp[0].s));
}
-#line 1612 "engines/hypno/grammar_arc.cpp"
+#line 1616 "engines/hypno/grammar_arc.cpp"
break;
case 34: /* hline: SNTOK FILENAME flag enc */
-#line 268 "engines/hypno/grammar_arc.y"
+#line 272 "engines/hypno/grammar_arc.y"
{
parseSN((yyvsp[-3].s), (yyvsp[-2].s), (yyvsp[0].s), (yyvsp[-1].s));
}
-#line 1620 "engines/hypno/grammar_arc.cpp"
+#line 1624 "engines/hypno/grammar_arc.cpp"
break;
case 35: /* hline: HETOK BYTE NUM NUM */
-#line 271 "engines/hypno/grammar_arc.y"
+#line 275 "engines/hypno/grammar_arc.y"
{
Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
segment.end = true;
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "HE %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1631 "engines/hypno/grammar_arc.cpp"
+#line 1635 "engines/hypno/grammar_arc.cpp"
break;
case 36: /* hline: HLTOK BYTE NUM NUM */
-#line 277 "engines/hypno/grammar_arc.y"
+#line 281 "engines/hypno/grammar_arc.y"
{
Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "HL %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1641 "engines/hypno/grammar_arc.cpp"
+#line 1645 "engines/hypno/grammar_arc.cpp"
break;
case 37: /* hline: HUTOK BYTE NUM NUM */
-#line 282 "engines/hypno/grammar_arc.y"
+#line 286 "engines/hypno/grammar_arc.y"
{
Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "HU %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1651 "engines/hypno/grammar_arc.cpp"
+#line 1655 "engines/hypno/grammar_arc.cpp"
break;
case 38: /* hline: HTOK NAME NUM NUM */
-#line 287 "engines/hypno/grammar_arc.y"
+#line 291 "engines/hypno/grammar_arc.y"
{
assert(Common::String((yyvsp[-2].s)).size() == 1);
Segment segment((yyvsp[-2].s)[0], (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H %s %d %d", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1662 "engines/hypno/grammar_arc.cpp"
+#line 1666 "engines/hypno/grammar_arc.cpp"
break;
case 39: /* hline: HTOK RTOK NUM NUM */
-#line 293 "engines/hypno/grammar_arc.y"
+#line 297 "engines/hypno/grammar_arc.y"
{ // Workaround for BYTE == R
Segment segment('R', (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H R %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1672 "engines/hypno/grammar_arc.cpp"
+#line 1676 "engines/hypno/grammar_arc.cpp"
break;
case 40: /* hline: HTOK ATOK NUM NUM */
-#line 298 "engines/hypno/grammar_arc.y"
+#line 302 "engines/hypno/grammar_arc.y"
{ // Workaround for BYTE == A
Segment segment('A', (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H A %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1682 "engines/hypno/grammar_arc.cpp"
+#line 1686 "engines/hypno/grammar_arc.cpp"
break;
case 41: /* hline: HTOK PTOK NUM NUM */
-#line 303 "engines/hypno/grammar_arc.y"
+#line 307 "engines/hypno/grammar_arc.y"
{ // Workaround for BYTE == P
Segment segment('P', (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H P %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1692 "engines/hypno/grammar_arc.cpp"
+#line 1696 "engines/hypno/grammar_arc.cpp"
break;
case 42: /* hline: HTOK LTOK NUM NUM */
-#line 308 "engines/hypno/grammar_arc.y"
+#line 312 "engines/hypno/grammar_arc.y"
{ // Workaround for BYTE == P
Segment segment('L', (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H P %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1702 "engines/hypno/grammar_arc.cpp"
+#line 1706 "engines/hypno/grammar_arc.cpp"
break;
case 43: /* hline: H12TOK BYTE NUM NUM */
-#line 313 "engines/hypno/grammar_arc.y"
+#line 317 "engines/hypno/grammar_arc.y"
{
Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "HN %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1712 "engines/hypno/grammar_arc.cpp"
+#line 1716 "engines/hypno/grammar_arc.cpp"
break;
case 44: /* hline: HTOK BYTE NUM NUM */
-#line 318 "engines/hypno/grammar_arc.y"
+#line 322 "engines/hypno/grammar_arc.y"
{
Segment segment((yyvsp[-2].i), (yyvsp[0].i), (yyvsp[-1].i));
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1722 "engines/hypno/grammar_arc.cpp"
+#line 1726 "engines/hypno/grammar_arc.cpp"
break;
case 45: /* enc: ENCTOK */
-#line 325 "engines/hypno/grammar_arc.y"
+#line 329 "engines/hypno/grammar_arc.y"
{ (yyval.s) = (yyvsp[0].s); }
-#line 1728 "engines/hypno/grammar_arc.cpp"
+#line 1732 "engines/hypno/grammar_arc.cpp"
break;
case 46: /* enc: %empty */
-#line 326 "engines/hypno/grammar_arc.y"
+#line 330 "engines/hypno/grammar_arc.y"
{ (yyval.s) = scumm_strdup(""); }
-#line 1734 "engines/hypno/grammar_arc.cpp"
+#line 1738 "engines/hypno/grammar_arc.cpp"
break;
case 47: /* flag: NAME */
-#line 329 "engines/hypno/grammar_arc.y"
+#line 333 "engines/hypno/grammar_arc.y"
{ (yyval.s) = (yyvsp[0].s); }
-#line 1740 "engines/hypno/grammar_arc.cpp"
+#line 1744 "engines/hypno/grammar_arc.cpp"
break;
case 48: /* flag: %empty */
-#line 330 "engines/hypno/grammar_arc.y"
+#line 334 "engines/hypno/grammar_arc.y"
{ (yyval.s) = scumm_strdup(""); }
-#line 1746 "engines/hypno/grammar_arc.cpp"
+#line 1750 "engines/hypno/grammar_arc.cpp"
break;
case 52: /* bline: FNTOK FILENAME */
-#line 338 "engines/hypno/grammar_arc.y"
+#line 342 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
if (Common::String("F0") == (yyvsp[-1].s))
@@ -1757,457 +1761,457 @@ yyreduce:
shoot->additionalVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1761 "engines/hypno/grammar_arc.cpp"
+#line 1765 "engines/hypno/grammar_arc.cpp"
break;
case 53: /* bline: AVTOK NUM */
-#line 348 "engines/hypno/grammar_arc.y"
+#line 352 "engines/hypno/grammar_arc.y"
{
assert((yyvsp[0].i) == 0);
shoot->nonHostile = true;
debugC(1, kHypnoDebugParser, "AV %d", (yyvsp[0].i));
}
-#line 1771 "engines/hypno/grammar_arc.cpp"
+#line 1775 "engines/hypno/grammar_arc.cpp"
break;
case 54: /* bline: ALTOK NUM */
-#line 353 "engines/hypno/grammar_arc.y"
+#line 357 "engines/hypno/grammar_arc.y"
{
assert(g_parsedArc->shoots.size() > 0);
shoot->checkIfDestroyed = g_parsedArc->shoots.back().name;
debugC(1, kHypnoDebugParser, "AL %d", (yyvsp[0].i));
}
-#line 1781 "engines/hypno/grammar_arc.cpp"
+#line 1785 "engines/hypno/grammar_arc.cpp"
break;
case 55: /* bline: ABTOK NUM */
-#line 358 "engines/hypno/grammar_arc.y"
+#line 362 "engines/hypno/grammar_arc.y"
{
assert((yyvsp[0].i) == 1);
shoot->playInteractionAudio = true;
debugC(1, kHypnoDebugParser, "AB %d", (yyvsp[0].i));
}
-#line 1791 "engines/hypno/grammar_arc.cpp"
+#line 1795 "engines/hypno/grammar_arc.cpp"
break;
case 56: /* bline: DTOK LTOK */
-#line 363 "engines/hypno/grammar_arc.y"
+#line 367 "engines/hypno/grammar_arc.y"
{
shoot->direction = 'L';
debugC(1, kHypnoDebugParser, "D L"); }
-#line 1799 "engines/hypno/grammar_arc.cpp"
+#line 1803 "engines/hypno/grammar_arc.cpp"
break;
case 57: /* bline: DTOK RTOK */
-#line 366 "engines/hypno/grammar_arc.y"
+#line 370 "engines/hypno/grammar_arc.y"
{
shoot->direction = 'R';
debugC(1, kHypnoDebugParser, "D R"); }
-#line 1807 "engines/hypno/grammar_arc.cpp"
+#line 1811 "engines/hypno/grammar_arc.cpp"
break;
case 58: /* bline: J0TOK NUM */
-#line 369 "engines/hypno/grammar_arc.y"
+#line 373 "engines/hypno/grammar_arc.y"
{
assert((yyvsp[0].i) > 0);
shoot->warningVideoIdx = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "J0 %d", (yyvsp[0].i));
}
-#line 1817 "engines/hypno/grammar_arc.cpp"
+#line 1821 "engines/hypno/grammar_arc.cpp"
break;
case 59: /* bline: FNTOK NONETOK */
-#line 374 "engines/hypno/grammar_arc.y"
+#line 378 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = "NONE";
debugC(1, kHypnoDebugParser, "FN NONE");
}
-#line 1827 "engines/hypno/grammar_arc.cpp"
+#line 1831 "engines/hypno/grammar_arc.cpp"
break;
case 60: /* bline: FTOK FILENAME */
-#line 379 "engines/hypno/grammar_arc.y"
+#line 383 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1837 "engines/hypno/grammar_arc.cpp"
+#line 1841 "engines/hypno/grammar_arc.cpp"
break;
case 61: /* bline: ITOK NAME */
-#line 384 "engines/hypno/grammar_arc.y"
+#line 388 "engines/hypno/grammar_arc.y"
{
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1846 "engines/hypno/grammar_arc.cpp"
+#line 1850 "engines/hypno/grammar_arc.cpp"
break;
case 62: /* bline: ITOK BNTOK */
-#line 388 "engines/hypno/grammar_arc.y"
+#line 392 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == B1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1855 "engines/hypno/grammar_arc.cpp"
+#line 1859 "engines/hypno/grammar_arc.cpp"
break;
case 63: /* bline: ITOK ATOK */
-#line 392 "engines/hypno/grammar_arc.y"
+#line 396 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == A
shoot->name = "A";
debugC(1, kHypnoDebugParser, "I A");
}
-#line 1864 "engines/hypno/grammar_arc.cpp"
+#line 1868 "engines/hypno/grammar_arc.cpp"
break;
case 64: /* bline: ITOK CTOK */
-#line 396 "engines/hypno/grammar_arc.y"
+#line 400 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == C
shoot->name = "C";
debugC(1, kHypnoDebugParser, "I C");
}
-#line 1873 "engines/hypno/grammar_arc.cpp"
+#line 1877 "engines/hypno/grammar_arc.cpp"
break;
case 65: /* bline: ITOK DTOK */
-#line 400 "engines/hypno/grammar_arc.y"
+#line 404 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == D
shoot->name = "D";
debugC(1, kHypnoDebugParser, "I D");
}
-#line 1882 "engines/hypno/grammar_arc.cpp"
+#line 1886 "engines/hypno/grammar_arc.cpp"
break;
case 66: /* bline: ITOK FTOK */
-#line 404 "engines/hypno/grammar_arc.y"
+#line 408 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == F
shoot->name = "F";
debugC(1, kHypnoDebugParser, "I F");
}
-#line 1891 "engines/hypno/grammar_arc.cpp"
+#line 1895 "engines/hypno/grammar_arc.cpp"
break;
case 67: /* bline: ITOK GTOK */
-#line 408 "engines/hypno/grammar_arc.y"
+#line 412 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == G
shoot->name = "G";
debugC(1, kHypnoDebugParser, "I G");
}
-#line 1900 "engines/hypno/grammar_arc.cpp"
+#line 1904 "engines/hypno/grammar_arc.cpp"
break;
case 68: /* bline: ITOK HTOK */
-#line 412 "engines/hypno/grammar_arc.y"
+#line 416 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == H
shoot->name = "H";
debugC(1, kHypnoDebugParser, "I H");
}
-#line 1909 "engines/hypno/grammar_arc.cpp"
+#line 1913 "engines/hypno/grammar_arc.cpp"
break;
case 69: /* bline: ITOK H12TOK */
-#line 416 "engines/hypno/grammar_arc.y"
+#line 420 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == H1/H2
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1918 "engines/hypno/grammar_arc.cpp"
+#line 1922 "engines/hypno/grammar_arc.cpp"
break;
case 70: /* bline: ITOK ITOK */
-#line 420 "engines/hypno/grammar_arc.y"
+#line 424 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == I
shoot->name = "I";
debugC(1, kHypnoDebugParser, "I I");
}
-#line 1927 "engines/hypno/grammar_arc.cpp"
+#line 1931 "engines/hypno/grammar_arc.cpp"
break;
case 71: /* bline: ITOK JTOK */
-#line 424 "engines/hypno/grammar_arc.y"
+#line 428 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == J
shoot->name = "J";
debugC(1, kHypnoDebugParser, "I J");
}
-#line 1936 "engines/hypno/grammar_arc.cpp"
+#line 1940 "engines/hypno/grammar_arc.cpp"
break;
case 72: /* bline: ITOK KTOK */
-#line 428 "engines/hypno/grammar_arc.y"
+#line 432 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == K
shoot->name = "K";
debugC(1, kHypnoDebugParser, "I K");
}
-#line 1945 "engines/hypno/grammar_arc.cpp"
+#line 1949 "engines/hypno/grammar_arc.cpp"
break;
case 73: /* bline: ITOK NTOK */
-#line 432 "engines/hypno/grammar_arc.y"
+#line 436 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == N
shoot->name = "N";
debugC(1, kHypnoDebugParser, "I N");
}
-#line 1954 "engines/hypno/grammar_arc.cpp"
+#line 1958 "engines/hypno/grammar_arc.cpp"
break;
case 74: /* bline: ITOK OTOK */
-#line 436 "engines/hypno/grammar_arc.y"
+#line 440 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == O
shoot->name = "O";
debugC(1, kHypnoDebugParser, "I O");
}
-#line 1963 "engines/hypno/grammar_arc.cpp"
+#line 1967 "engines/hypno/grammar_arc.cpp"
break;
case 75: /* bline: ITOK PTOK */
-#line 440 "engines/hypno/grammar_arc.y"
+#line 444 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == P
shoot->name = "P";
debugC(1, kHypnoDebugParser, "I P");
}
-#line 1972 "engines/hypno/grammar_arc.cpp"
+#line 1976 "engines/hypno/grammar_arc.cpp"
break;
case 76: /* bline: ITOK QTOK */
-#line 444 "engines/hypno/grammar_arc.y"
+#line 448 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == Q
shoot->name = "Q";
debugC(1, kHypnoDebugParser, "I Q");
}
-#line 1981 "engines/hypno/grammar_arc.cpp"
+#line 1985 "engines/hypno/grammar_arc.cpp"
break;
case 77: /* bline: ITOK RTOK */
-#line 448 "engines/hypno/grammar_arc.y"
+#line 452 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == R
shoot->name = "R";
debugC(1, kHypnoDebugParser, "I R");
}
-#line 1990 "engines/hypno/grammar_arc.cpp"
+#line 1994 "engines/hypno/grammar_arc.cpp"
break;
case 78: /* bline: ITOK SNTOK */
-#line 452 "engines/hypno/grammar_arc.y"
+#line 456 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == S1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1999 "engines/hypno/grammar_arc.cpp"
+#line 2003 "engines/hypno/grammar_arc.cpp"
break;
case 79: /* bline: ITOK TTOK */
-#line 456 "engines/hypno/grammar_arc.y"
+#line 460 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == T
shoot->name = "T";
debugC(1, kHypnoDebugParser, "I T");
}
-#line 2008 "engines/hypno/grammar_arc.cpp"
+#line 2012 "engines/hypno/grammar_arc.cpp"
break;
case 80: /* bline: ITOK LTOK */
-#line 460 "engines/hypno/grammar_arc.y"
+#line 464 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == L
shoot->name = "L";
debugC(1, kHypnoDebugParser, "I L");
}
-#line 2017 "engines/hypno/grammar_arc.cpp"
+#line 2021 "engines/hypno/grammar_arc.cpp"
break;
case 81: /* bline: ITOK MTOK */
-#line 464 "engines/hypno/grammar_arc.y"
+#line 468 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == M
shoot->name = "M";
debugC(1, kHypnoDebugParser, "I M");
}
-#line 2026 "engines/hypno/grammar_arc.cpp"
+#line 2030 "engines/hypno/grammar_arc.cpp"
break;
case 82: /* bline: ITOK UTOK */
-#line 468 "engines/hypno/grammar_arc.y"
+#line 472 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == U
shoot->name = "U";
debugC(1, kHypnoDebugParser, "I U");
}
-#line 2035 "engines/hypno/grammar_arc.cpp"
+#line 2039 "engines/hypno/grammar_arc.cpp"
break;
case 83: /* bline: JTOK NUM */
-#line 472 "engines/hypno/grammar_arc.y"
+#line 476 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "J %d", (yyvsp[0].i));
}
-#line 2043 "engines/hypno/grammar_arc.cpp"
+#line 2047 "engines/hypno/grammar_arc.cpp"
break;
case 84: /* bline: A0TOK NUM NUM */
-#line 475 "engines/hypno/grammar_arc.y"
+#line 479 "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 2052 "engines/hypno/grammar_arc.cpp"
+#line 2056 "engines/hypno/grammar_arc.cpp"
break;
case 85: /* bline: RTOK NUM NUM */
-#line 479 "engines/hypno/grammar_arc.y"
+#line 483 "engines/hypno/grammar_arc.y"
{
shoot->objKillsCount = (yyvsp[-1].i);
shoot->objMissesCount = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "R %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2062 "engines/hypno/grammar_arc.cpp"
+#line 2066 "engines/hypno/grammar_arc.cpp"
break;
case 86: /* bline: R0TOK NUM NUM */
-#line 484 "engines/hypno/grammar_arc.y"
+#line 488 "engines/hypno/grammar_arc.y"
{
shoot->objKillsCount = (yyvsp[-1].i);
shoot->objMissesCount = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "R0 %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2072 "engines/hypno/grammar_arc.cpp"
+#line 2076 "engines/hypno/grammar_arc.cpp"
break;
case 87: /* bline: R1TOK NUM NUM */
-#line 489 "engines/hypno/grammar_arc.y"
+#line 493 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "R1 %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2080 "engines/hypno/grammar_arc.cpp"
+#line 2084 "engines/hypno/grammar_arc.cpp"
break;
case 88: /* bline: BNTOK NUM NUM */
-#line 492 "engines/hypno/grammar_arc.y"
+#line 496 "engines/hypno/grammar_arc.y"
{
FrameInfo fi((yyvsp[0].i), (yyvsp[-1].i));
shoot->bodyFrames.push_back(fi);
debugC(1, kHypnoDebugParser, "BN %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2090 "engines/hypno/grammar_arc.cpp"
+#line 2094 "engines/hypno/grammar_arc.cpp"
break;
case 89: /* bline: KNTOK NUM NUM */
-#line 497 "engines/hypno/grammar_arc.y"
+#line 501 "engines/hypno/grammar_arc.y"
{
FrameInfo fi((yyvsp[0].i), (yyvsp[-1].i));
shoot->explosionFrames.push_back(fi);
debugC(1, kHypnoDebugParser, "KN %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2100 "engines/hypno/grammar_arc.cpp"
+#line 2104 "engines/hypno/grammar_arc.cpp"
break;
case 90: /* bline: P0TOK NUM NUM */
-#line 502 "engines/hypno/grammar_arc.y"
+#line 506 "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 2109 "engines/hypno/grammar_arc.cpp"
+#line 2113 "engines/hypno/grammar_arc.cpp"
break;
case 91: /* bline: OTOK NUM NUM */
-#line 506 "engines/hypno/grammar_arc.y"
+#line 510 "engines/hypno/grammar_arc.y"
{
if ((yyvsp[-1].i) == 0 && (yyvsp[0].i) == 0)
error("Invalid O command (0, 0)");
shoot->deathPosition = Common::Point((yyvsp[-1].i), (yyvsp[0].i));
debugC(1, kHypnoDebugParser, "O %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2120 "engines/hypno/grammar_arc.cpp"
+#line 2124 "engines/hypno/grammar_arc.cpp"
break;
case 92: /* bline: CTOK NUM */
-#line 512 "engines/hypno/grammar_arc.y"
+#line 516 "engines/hypno/grammar_arc.y"
{
shoot->timesToShoot = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i));
}
-#line 2129 "engines/hypno/grammar_arc.cpp"
+#line 2133 "engines/hypno/grammar_arc.cpp"
break;
case 93: /* bline: HTOK NUM */
-#line 516 "engines/hypno/grammar_arc.y"
+#line 520 "engines/hypno/grammar_arc.y"
{
shoot->attackFrames.push_back((yyvsp[0].i));
debugC(1, kHypnoDebugParser, "H %d", (yyvsp[0].i)); }
-#line 2137 "engines/hypno/grammar_arc.cpp"
+#line 2141 "engines/hypno/grammar_arc.cpp"
break;
case 94: /* bline: VTOK NUM */
-#line 519 "engines/hypno/grammar_arc.y"
+#line 523 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V %d", (yyvsp[0].i)); }
-#line 2143 "engines/hypno/grammar_arc.cpp"
+#line 2147 "engines/hypno/grammar_arc.cpp"
break;
case 95: /* bline: VTOK */
-#line 520 "engines/hypno/grammar_arc.y"
+#line 524 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V"); }
-#line 2149 "engines/hypno/grammar_arc.cpp"
+#line 2153 "engines/hypno/grammar_arc.cpp"
break;
case 96: /* bline: WTOK NUM */
-#line 521 "engines/hypno/grammar_arc.y"
+#line 525 "engines/hypno/grammar_arc.y"
{
shoot->attackWeight = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "W %d", (yyvsp[0].i)); }
-#line 2157 "engines/hypno/grammar_arc.cpp"
+#line 2161 "engines/hypno/grammar_arc.cpp"
break;
case 97: /* bline: DTOK NUM */
-#line 524 "engines/hypno/grammar_arc.y"
+#line 528 "engines/hypno/grammar_arc.y"
{
shoot->pointsToShoot = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
}
-#line 2166 "engines/hypno/grammar_arc.cpp"
+#line 2170 "engines/hypno/grammar_arc.cpp"
break;
case 98: /* bline: LTOK NUM NUM */
-#line 528 "engines/hypno/grammar_arc.y"
+#line 532 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "L %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2174 "engines/hypno/grammar_arc.cpp"
+#line 2178 "engines/hypno/grammar_arc.cpp"
break;
case 99: /* bline: LTOK NUM */
-#line 531 "engines/hypno/grammar_arc.y"
+#line 535 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "L %d", (yyvsp[0].i));
FrameInfo fi((yyvsp[0].i)-1, 0);
shoot->bodyFrames.push_back(fi);
}
-#line 2184 "engines/hypno/grammar_arc.cpp"
+#line 2188 "engines/hypno/grammar_arc.cpp"
break;
case 100: /* bline: MTOK NUM */
-#line 536 "engines/hypno/grammar_arc.y"
+#line 540 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "M %d", (yyvsp[0].i));
shoot->missedAnimation = (yyvsp[0].i);
}
-#line 2192 "engines/hypno/grammar_arc.cpp"
+#line 2196 "engines/hypno/grammar_arc.cpp"
break;
case 101: /* bline: KTOK */
-#line 539 "engines/hypno/grammar_arc.y"
+#line 543 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "K"); }
-#line 2198 "engines/hypno/grammar_arc.cpp"
+#line 2202 "engines/hypno/grammar_arc.cpp"
break;
case 102: /* bline: KTOK NUM */
-#line 540 "engines/hypno/grammar_arc.y"
+#line 544 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "K %d", (yyvsp[0].i));
FrameInfo fi((yyvsp[0].i), 1);
shoot->explosionFrames.push_back(fi);
}
-#line 2207 "engines/hypno/grammar_arc.cpp"
+#line 2211 "engines/hypno/grammar_arc.cpp"
break;
case 103: /* bline: KTOK NUM NUM NUM */
-#line 544 "engines/hypno/grammar_arc.y"
+#line 548 "engines/hypno/grammar_arc.y"
{
assert((yyvsp[-1].i) > (yyvsp[-2].i));
FrameInfo fi((yyvsp[-2].i), (yyvsp[-1].i) - (yyvsp[-2].i));
@@ -2215,20 +2219,20 @@ yyreduce:
shoot->explosionFrames.push_back(fi);
debugC(1, kHypnoDebugParser, "K %d %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2219 "engines/hypno/grammar_arc.cpp"
+#line 2223 "engines/hypno/grammar_arc.cpp"
break;
case 104: /* bline: KTOK NUM NUM */
-#line 551 "engines/hypno/grammar_arc.y"
+#line 555 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "K %d %d", (yyvsp[-1].i), (yyvsp[0].i));
FrameInfo fi((yyvsp[-1].i), 1);
shoot->explosionFrames.push_back(fi);
}
-#line 2228 "engines/hypno/grammar_arc.cpp"
+#line 2232 "engines/hypno/grammar_arc.cpp"
break;
case 105: /* bline: SNTOK FILENAME enc */
-#line 555 "engines/hypno/grammar_arc.y"
+#line 559 "engines/hypno/grammar_arc.y"
{
if (Common::String("S0") == (yyvsp[-2].s)) {
shoot->enemySound = (yyvsp[-1].s);
@@ -2244,88 +2248,88 @@ yyreduce:
shoot->animalSound = (yyvsp[-1].s);
debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s)); }
-#line 2248 "engines/hypno/grammar_arc.cpp"
+#line 2252 "engines/hypno/grammar_arc.cpp"
break;
case 106: /* bline: SNTOK */
-#line 570 "engines/hypno/grammar_arc.y"
+#line 574 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "SN");
}
-#line 2256 "engines/hypno/grammar_arc.cpp"
+#line 2260 "engines/hypno/grammar_arc.cpp"
break;
case 107: /* bline: GTOK */
-#line 574 "engines/hypno/grammar_arc.y"
+#line 578 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "G"); }
-#line 2262 "engines/hypno/grammar_arc.cpp"
+#line 2266 "engines/hypno/grammar_arc.cpp"
break;
case 108: /* bline: TTOK NUM NUM NUM */
-#line 575 "engines/hypno/grammar_arc.y"
+#line 579 "engines/hypno/grammar_arc.y"
{
shoot->interactionFrame = (yyvsp[-2].i);
assert((yyvsp[-1].i) == 0);
shoot->waitForClickAfterInteraction = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "T %d %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2273 "engines/hypno/grammar_arc.cpp"
+#line 2277 "engines/hypno/grammar_arc.cpp"
break;
case 109: /* bline: TTOK NUM */
-#line 581 "engines/hypno/grammar_arc.y"
+#line 585 "engines/hypno/grammar_arc.y"
{
shoot->interactionFrame = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "T %d", (yyvsp[0].i));
}
-#line 2282 "engines/hypno/grammar_arc.cpp"
+#line 2286 "engines/hypno/grammar_arc.cpp"
break;
case 110: /* bline: TTOK */
-#line 585 "engines/hypno/grammar_arc.y"
+#line 589 "engines/hypno/grammar_arc.y"
{
shoot->isAnimal = true;
debugC(1, kHypnoDebugParser, "T");
}
-#line 2291 "engines/hypno/grammar_arc.cpp"
+#line 2295 "engines/hypno/grammar_arc.cpp"
break;
case 111: /* bline: MTOK */
-#line 589 "engines/hypno/grammar_arc.y"
+#line 593 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "M");
}
-#line 2299 "engines/hypno/grammar_arc.cpp"
+#line 2303 "engines/hypno/grammar_arc.cpp"
break;
case 112: /* bline: NTOK */
-#line 592 "engines/hypno/grammar_arc.y"
+#line 596 "engines/hypno/grammar_arc.y"
{
shoot->noEnemySound = true;
debugC(1, kHypnoDebugParser, "N"); }
-#line 2307 "engines/hypno/grammar_arc.cpp"
+#line 2311 "engines/hypno/grammar_arc.cpp"
break;
case 113: /* bline: NRTOK */
-#line 595 "engines/hypno/grammar_arc.y"
+#line 599 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "NR"); }
-#line 2314 "engines/hypno/grammar_arc.cpp"
+#line 2318 "engines/hypno/grammar_arc.cpp"
break;
case 114: /* bline: ZTOK */
-#line 597 "engines/hypno/grammar_arc.y"
+#line 601 "engines/hypno/grammar_arc.y"
{
g_parsedArc->shoots.push_back(*shoot);
//delete shoot;
//shoot = nullptr;
debugC(1, kHypnoDebugParser, "Z");
}
-#line 2325 "engines/hypno/grammar_arc.cpp"
+#line 2329 "engines/hypno/grammar_arc.cpp"
break;
-#line 2329 "engines/hypno/grammar_arc.cpp"
+#line 2333 "engines/hypno/grammar_arc.cpp"
default: break;
}
diff --git a/engines/hypno/grammar_arc.y b/engines/hypno/grammar_arc.y
index e48f40ebf5c..a2cd5c86599 100644
--- a/engines/hypno/grammar_arc.y
+++ b/engines/hypno/grammar_arc.y
@@ -199,10 +199,14 @@ hline: CTOK NUM {
}
| TATOK NUM FILENAME flag enc {
uint32 sampleRate = 11025;
+ bool stereo = false;
if (Common::String("22K") == $5 || Common::String("22k") == $5)
sampleRate = 22050;
+ if (Common::String("STEREO") == $4)
+ stereo = true;
ArcadeTransition at("", "", $3, sampleRate, $2);
+ at.soundStereo = stereo;
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "Ta %d %s", $2, $3);
}
More information about the Scummvm-git-logs
mailing list