[Scummvm-git-logs] scummvm master -> 2ba67dbc14e58c02f5dc2b69f8d9070fa843e75b
neuromancer
noreply at scummvm.org
Wed Jul 24 07:51:28 UTC 2024
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:
e533598656 FREESCAPE: added rock travel cheat for castle
ffb23e8314 HYPNO: initial support for wetlands early demo and font handling refactoring
2ba67dbc14 HYPNO: improve support for non-zero anchors in arcade sequences
Commit: e533598656b3d820823434308e92f5e16bfd9f0e
https://github.com/scummvm/scummvm/commit/e533598656b3d820823434308e92f5e16bfd9f0e
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-07-24T09:49:39+02:00
Commit Message:
FREESCAPE: added rock travel cheat for castle
Changed paths:
engines/freescape/detection.cpp
engines/freescape/detection.h
engines/freescape/freescape.cpp
engines/freescape/games/castle/castle.cpp
engines/freescape/games/castle/castle.h
engines/freescape/metaengine.cpp
diff --git a/engines/freescape/detection.cpp b/engines/freescape/detection.cpp
index d4b4a41a08a..e4c84c60952 100644
--- a/engines/freescape/detection.cpp
+++ b/engines/freescape/detection.cpp
@@ -684,7 +684,7 @@ static const ADGameDescription gameDescriptions[] = {
Common::EN_ANY,
Common::kPlatformZX,
ADGF_UNSTABLE,
- GUIO2(GUIO_NOMIDI, GUIO_RENDERZX)
+ GUIO3(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDERZX)
},
{
"castlemaster",
@@ -698,7 +698,7 @@ static const ADGameDescription gameDescriptions[] = {
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSTABLE | ADGF_DEMO,
- GUIO3(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA)
+ GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
{
"castlemaster",
@@ -711,7 +711,7 @@ static const ADGameDescription gameDescriptions[] = {
Common::EN_ANY,
Common::kPlatformAmiga,
ADGF_UNSTABLE | ADGF_DEMO,
- GUIO2(GUIO_NOMIDI, GUIO_RENDERAMIGA)
+ GUIO3(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDERAMIGA)
},
// Stampede Amiga, Issue 1, July 1990
{
@@ -725,7 +725,7 @@ static const ADGameDescription gameDescriptions[] = {
Common::EN_ANY,
Common::kPlatformAmiga,
ADGF_UNSTABLE | ADGF_DEMO,
- GUIO2(GUIO_NOMIDI, GUIO_RENDERAMIGA)
+ GUIO3(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDERAMIGA)
},
{
"castlemaster",
@@ -741,7 +741,7 @@ static const ADGameDescription gameDescriptions[] = {
Common::UNK_LANG,
Common::kPlatformDOS,
ADGF_UNSTABLE,
- GUIO3(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA)
+ GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
{
"castlemaster",
@@ -757,7 +757,7 @@ static const ADGameDescription gameDescriptions[] = {
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSTABLE,
- GUIO3(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA)
+ GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
{
"castlemaster",
@@ -773,7 +773,7 @@ static const ADGameDescription gameDescriptions[] = {
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSTABLE,
- GUIO3(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA)
+ GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
{
"castlemaster",
@@ -789,7 +789,7 @@ static const ADGameDescription gameDescriptions[] = {
Common::ES_ESP,
Common::kPlatformDOS,
ADGF_UNSTABLE,
- GUIO3(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA)
+ GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
// 3D Construction Kit games
diff --git a/engines/freescape/detection.h b/engines/freescape/detection.h
index 5262bcd7a50..a0c5940715f 100644
--- a/engines/freescape/detection.h
+++ b/engines/freescape/detection.h
@@ -34,4 +34,9 @@
// Driller options
#define GAMEOPTION_AUTOMATIC_DRILLING GUIO_GAMEOPTIONS8
+// Castle Master options
+
+#define GAMEOPTION_TRAVEL_ROCK GUIO_GAMEOPTIONS8
+
+
#endif
diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index 9eddfd80383..1c92c727f9a 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -731,7 +731,9 @@ Common::Error FreescapeEngine::run() {
if (_shootingFrames == 0) {
if (_delayedShootObject) {
- bool rockTravel = isCastle() && getGameBit(k8bitGameBitTravelRock);
+ bool rockTravel = isSpectrum() && isCastle() && getGameBit(k8bitGameBitTravelRock);
+ // If rock travel is enabled for other platforms than ZX and CPC,
+ // then this variable should be false since the game scripts will take care
executeObjectConditions(_delayedShootObject, true, rockTravel, false);
executeLocalGlobalConditions(true, false, false); // Only execute "on shot" room/global conditions
_delayedShootObject = nullptr;
diff --git a/engines/freescape/games/castle/castle.cpp b/engines/freescape/games/castle/castle.cpp
index b80ff766b24..3688c9fdf4c 100644
--- a/engines/freescape/games/castle/castle.cpp
+++ b/engines/freescape/games/castle/castle.cpp
@@ -21,6 +21,7 @@
#include "common/file.h"
#include "common/memstream.h"
+#include "common/config-manager.h"
#include "freescape/freescape.h"
#include "freescape/games/castle/castle.h"
@@ -29,6 +30,10 @@
namespace Freescape {
CastleEngine::CastleEngine(OSystem *syst, const ADGameDescription *gd) : FreescapeEngine(syst, gd) {
+
+ if (!Common::parseBool(ConfMan.get("rock_travel"), _useRockTravel))
+ error("Failed to parse bool from rock_travel option");
+
if (isSpectrum())
initZX();
@@ -124,6 +129,9 @@ void CastleEngine::initGameState() {
_gameStateVars[k8bitVariableEnergy] = 1;
_countdown = INT_MAX;
_numberKeys = 0;
+
+ if (_useRockTravel) // Enable cheat
+ setGameBit(k8bitGameBitTravelRock);
}
void CastleEngine::endGame() {
@@ -723,6 +731,9 @@ Common::Error CastleEngine::saveGameStreamExtended(Common::WriteStream *stream,
Common::Error CastleEngine::loadGameStreamExtended(Common::SeekableReadStream *stream) {
_numberKeys = stream->readUint32LE();
+
+ if (_useRockTravel) // Enable cheat
+ setGameBit(k8bitGameBitTravelRock);
return Common::kNoError;
}
diff --git a/engines/freescape/games/castle/castle.h b/engines/freescape/games/castle/castle.h
index 83a7cc7af99..4f43ad62333 100644
--- a/engines/freescape/games/castle/castle.h
+++ b/engines/freescape/games/castle/castle.h
@@ -66,6 +66,7 @@ public:
Graphics::Surface *_keysFrame;
int _numberKeys;
+ bool _useRockTravel;
private:
Common::SeekableReadStream *decryptFile(const Common::Path &filename);
diff --git a/engines/freescape/metaengine.cpp b/engines/freescape/metaengine.cpp
index 32f8c64a0a9..a65f83e29f8 100644
--- a/engines/freescape/metaengine.cpp
+++ b/engines/freescape/metaengine.cpp
@@ -122,6 +122,17 @@ static const ADExtraGuiOptionsMap optionsList[] = {
0
}
},
+ {
+ GAMEOPTION_TRAVEL_ROCK,
+ {
+ _s("Enable rock travel"),
+ _s("Enable traveling using a rock shoot at start"),
+ "rock_travel",
+ false,
+ 0,
+ 0
+ }
+ },
AD_EXTRA_GUI_OPTIONS_TERMINATOR
};
Commit: ffb23e8314db8150c0186322dec977c178b1c05d
https://github.com/scummvm/scummvm/commit/ffb23e8314db8150c0186322dec977c178b1c05d
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-07-24T09:49:39+02:00
Commit Message:
HYPNO: initial support for wetlands early demo and font handling refactoring
Changed paths:
engines/hypno/boyz/boyz.cpp
engines/hypno/detection.cpp
engines/hypno/hypno.cpp
engines/hypno/hypno.h
engines/hypno/spider/spider.cpp
engines/hypno/wet/arcade.cpp
engines/hypno/wet/wet.cpp
diff --git a/engines/hypno/boyz/boyz.cpp b/engines/hypno/boyz/boyz.cpp
index 04927122ba4..6b7b7c2a16f 100644
--- a/engines/hypno/boyz/boyz.cpp
+++ b/engines/hypno/boyz/boyz.cpp
@@ -943,32 +943,6 @@ void BoyzEngine::loadAssets() {
_nextLevel = "<start>";
}
-void BoyzEngine::loadFonts() {
- Common::File file;
-
- if (!file.open("block05.fgx"))
- error("Cannot open font");
-
- byte *font = (byte *)malloc(file.size());
- file.read(font, file.size());
-
- _font05.set_size(file.size()*8);
- _font05.set_bits((byte *)font);
-
- file.close();
- free(font);
- if (!file.open("scifi08.fgx"))
- error("Cannot open font");
-
- font = (byte *)malloc(file.size());
- file.read(font, file.size());
-
- _font08.set_size(file.size()*8);
- _font08.set_bits((byte *)font);
-
- free(font);
-}
-
void BoyzEngine::drawString(const Common::String &font, const Common::String &str, int x, int y, int w, uint32 color) {
int offset = 0;
if (font == "block05.fgx") {
diff --git a/engines/hypno/detection.cpp b/engines/hypno/detection.cpp
index 9b0aeb5340a..21b661e58b3 100644
--- a/engines/hypno/detection.cpp
+++ b/engines/hypno/detection.cpp
@@ -110,6 +110,16 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_UNSTABLE,
GUIO1(GUIO_NOMIDI)
},
+ {
+ "wetlands", // Wetlands Demo PC Spiel (October 1995)
+ "EarlyDemo",
+ AD_ENTRY2s("wetlands.exe", "edc5b0c0caf3d5b01d344cb555d9a085", 641411,
+ "c61.mis", "11e384b3abe0f42995bb61566d877e45", 18497),
+ Common::EN_USA,
+ Common::kPlatformDOS,
+ ADGF_DEMO,
+ GUIO1(GUIO_NOMIDI)
+ },
{
"wetlands", // Wetlands Demo Disc (November 1995)
"Demo",
diff --git a/engines/hypno/hypno.cpp b/engines/hypno/hypno.cpp
index 0a323e6ec03..e56150edb42 100644
--- a/engines/hypno/hypno.cpp
+++ b/engines/hypno/hypno.cpp
@@ -298,8 +298,34 @@ void HypnoEngine::loadGame(const Common::String &nextLevel, int score, int puzzl
error("Function \"%s\" not implemented", __FUNCTION__);
}
-void HypnoEngine::loadFonts() {
- error("Function \"%s\" not implemented", __FUNCTION__);
+void HypnoEngine::loadFonts(const Common::String prefix) {
+ Common::File file;
+ Common::Path path = Common::Path(prefix).append("block05.fgx");
+
+ if (!file.open(path))
+ error("Cannot open font %s", path.toString().c_str());
+
+ byte *font = (byte *)malloc(file.size());
+ file.read(font, file.size());
+
+ _font05.set_size(file.size()*8);
+ _font05.set_bits((byte *)font);
+
+ file.close();
+ free(font);
+ path = Common::Path(prefix).append("scifi08.fgx");
+
+ if (!file.open(path))
+ error("Cannot open font %s", path.toString().c_str());
+
+ font = (byte *)malloc(file.size());
+ file.read(font, file.size());
+
+ _font08.set_size(file.size()*8);
+ _font08.set_bits((byte *)font);
+
+ file.close();
+ free(font);
}
void HypnoEngine::drawString(const Filename &name, const Common::String &str, int x, int y, int w, uint32 c) {
diff --git a/engines/hypno/hypno.h b/engines/hypno/hypno.h
index ef441c895b1..120f896b7ae 100644
--- a/engines/hypno/hypno.h
+++ b/engines/hypno/hypno.h
@@ -337,7 +337,9 @@ public:
uint32 _objMissesAllowed[2];
// Fonts
- virtual void loadFonts();
+ Common::BitArray _font05;
+ Common::BitArray _font08;
+ virtual void loadFonts(const Common::String prefix = "");
virtual void drawString(const Filename &name, const Common::String &str, int x, int y, int w, uint32 c);
// Conversation
@@ -383,13 +385,14 @@ public:
void loadAssets() override;
void loadAssetsDemoDisc();
+ void loadAssetsEarlyDemo();
void loadAssetsGen4();
void loadAssetsPCW();
void loadAssetsPCG();
void loadAssetsFullGame();
void loadAssetsNI();
- void loadFonts() override;
+ void loadFonts(const Common::String prefix = "") override;
void drawString(const Filename &name, const Common::String &str, int x, int y, int w, uint32 c) override;
void changeCursor(const Common::String &cursor) override;
@@ -452,8 +455,6 @@ private:
bool _c33UseMouse;
void generateStaticEffect();
- Common::BitArray _font05;
- Common::BitArray _font08;
Common::BitArray _fontg9a;
Common::Array<uint32> _c40SegmentPath;
Common::Array<uint32> _c40SegmentNext;
@@ -491,7 +492,7 @@ public:
Common::String findNextLevel(const Common::String &level) override;
Common::String findNextLevel(const Transition *trans) override;
- void loadFonts() override;
+ void loadFonts(const Common::String prefix = "") override;
void drawString(const Filename &name, const Common::String &str, int x, int y, int w, uint32 c) override;
void showConversation() override;
@@ -584,7 +585,6 @@ public:
void initSegment(ArcadeShooting *arc) override;
bool checkTransition(ArcadeTransitions &transitions, ArcadeShooting *arc) override;
- void loadFonts() override;
void drawString(const Filename &name, const Common::String &str, int x, int y, int w, uint32 c) override;
// Saves
diff --git a/engines/hypno/spider/spider.cpp b/engines/hypno/spider/spider.cpp
index 965e7181daa..98961e910d8 100644
--- a/engines/hypno/spider/spider.cpp
+++ b/engines/hypno/spider/spider.cpp
@@ -1155,31 +1155,8 @@ Common::String SpiderEngine::findNextLevel(const Transition *trans) {
return trans->nextLevel;
}
-void SpiderEngine::loadFonts() {
- Common::File file;
-
- if (!file.open("block05.fgx"))
- error("Cannot open font");
-
- byte *font = (byte *)malloc(file.size());
- file.read(font, file.size());
-
- _font05.set_size(file.size()*8);
- _font05.set_bits((byte *)font);
-
- file.close();
- free(font);
- if (!file.open("scifi08.fgx"))
- error("Cannot open font");
-
- font = (byte *)malloc(file.size());
- file.read(font, file.size());
-
- _font08.set_size(file.size()*8);
- _font08.set_bits((byte *)font);
-
- free(font);
-
+void SpiderEngine::loadFonts(const Common::String prefix) {
+ HypnoEngine::loadFonts(prefix);
// Additional fonts
_font = FontMan.getFontByUsage(Graphics::FontManager::kConsoleFont);
}
diff --git a/engines/hypno/wet/arcade.cpp b/engines/hypno/wet/arcade.cpp
index afecae94a82..16c6bd3596c 100644
--- a/engines/hypno/wet/arcade.cpp
+++ b/engines/hypno/wet/arcade.cpp
@@ -640,6 +640,24 @@ void WetEngine::runBeforeArcade(ArcadeShooting *arc) {
_playerFrames = decodeFrames(arc->player);
}
+ if (_variant == "EarlyDemo" && (arc->id == 31 || arc->id == 41)) {
+ int cutX = 36;
+ for (int i = 0; i < int(_playerFrames.size()); i++) {
+ Graphics::Surface *frame = _playerFrames[i];
+ Graphics::Surface *newFrame = new Graphics::Surface();
+ newFrame->create(320, 200, frame->format);
+ newFrame->fillRect(Common::Rect(0, 0, 320, 200), frame->format.ARGBToColor(0, 0, 0, 0));
+ newFrame->copyRectToSurfaceWithKey(*frame, 0, 0, Common::Rect(0, 0, 320, cutX), 0);
+ newFrame->copyRectToSurfaceWithKey(*frame, 0, 200 - (frame->h - cutX - 1), Common::Rect(0, cutX, 320, frame->h - 1), 0);
+
+ frame->free();
+ delete frame;
+ _playerFrames[i] = newFrame;
+ }
+
+ }
+
+
if (arc->mode == "Y4" || arc->mode == "Y5") { // These images are flipped, for some reason
for (Frames::iterator it = _playerFrames.begin(); it != _playerFrames.end(); ++it) {
for (int i = 0 ; i < (*it)->w ; i++)
@@ -1053,7 +1071,7 @@ void WetEngine::drawPlayer() {
int offset = 0;
// Ugly, but seems to be necessary
- if (_levelId == 31)
+ if (_levelId == 31 && _variant != "EarlyDemo")
offset = 2;
else if (_levelId == 52)
offset = 2;
diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index e833c376b9b..ba87ef6c8b0 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -59,6 +59,12 @@ static const chapterEntry rawChapterTable[] = {
{0, {0, 0}, {0, 0}, {0, 0}, {0, 0}, 0, kHypnoColorRed} // NULL
};
+static const chapterEntry rawChapterTableEarlyDemo[] = {
+ {31, {49, 12}, {205, 12}, {0, 0}, {127, 172}, 0, kHypnoColorRed}, // c31
+ {41, {49, 12}, {205, 12}, {0, 0}, {127, 172}, 0, kHypnoColorRed}, // c41
+ {0, {0, 0}, {0, 0}, {0, 0}, {0, 0}, 0, kHypnoColorRed} // NULL
+};
+
WetEngine::WetEngine(OSystem *syst, const ADGameDescription *gd) : HypnoEngine(syst, gd) {
_screenW = 320;
_screenH = 200;
@@ -98,6 +104,8 @@ void WetEngine::loadAssets() {
if (_variant == "Demo" || _variant == "DemoHebrew" || _variant == "M&MCD")
loadAssetsDemoDisc();
+ else if (_variant == "EarlyDemo")
+ loadAssetsEarlyDemo();
else if (_variant == "Gen4")
loadAssetsGen4();
else if (_variant == "PCWDemo")
@@ -245,6 +253,39 @@ void WetEngine::loadAssetsDemoDisc() {
_nextLevel = "<start>";
}
+
+void WetEngine::loadAssetsEarlyDemo() {
+
+ Transition *intro;
+ intro = new Transition("c_misc/c31.mis");
+
+ intro->prefix = "c_misc/";
+ intro->intros.push_back("nw_logo.smk");
+ intro->intros.push_back("h.s");
+ intro->intros.push_back("w.s");
+ intro->frameImage = "c.s";
+ intro->frameNumber = 0;
+ _levels["<start>"] = intro;
+
+ loadArcadeLevel("c_misc/c31.mis", "c_misc/c41.mis", "c_misc/c41.mis", "");
+ loadArcadeLevel("c_misc/c41.mis", "c_misc/c61.mis", "c_misc/c61.mis", "");
+ loadArcadeLevel("c_misc/c61.mis", "<quit>", "<quit>", "");
+
+ Transition *over = new Transition("<quit>");
+ over->intros.push_back("g.s");
+ _levels["<game_over>"] = over;
+
+ loadFonts("c_misc/");
+
+ const chapterEntry *entry = rawChapterTableEarlyDemo;
+ while (entry->id) {
+ _chapterTable[entry->id] = entry;
+ entry++;
+ }
+
+ _nextLevel = "<start>";
+}
+
void WetEngine::loadAssetsGen4() {
bool encrypted = false;
@@ -576,37 +617,15 @@ void WetEngine::showCredits() {
}
}
-void WetEngine::loadFonts() {
- Common::File file;
-
- if (!file.open("block05.fgx"))
- error("Cannot open font");
-
- byte *font = (byte *)malloc(file.size());
- file.read(font, file.size());
-
- _font05.set_size(file.size()*8);
- _font05.set_bits((byte *)font);
-
- file.close();
- free(font);
- if (!file.open("scifi08.fgx"))
- error("Cannot open font");
-
- font = (byte *)malloc(file.size());
- file.read(font, file.size());
-
- _font08.set_size(file.size()*8);
- _font08.set_bits((byte *)font);
-
- file.close();
- free(font);
-
+void WetEngine::loadFonts(const Common::String prefix) {
+ HypnoEngine::loadFonts(prefix);
if (_language == Common::KO_KOR) {
+ Common::File file;
+
if (!file.open("C_MISC/G9A.SYF"))
error("Cannot open Korean font");
- font = (byte *)malloc(file.size());
+ byte *font = (byte *)malloc(file.size());
file.read(font, file.size());
_fontg9a.set_size(file.size()*8);
Commit: 2ba67dbc14e58c02f5dc2b69f8d9070fa843e75b
https://github.com/scummvm/scummvm/commit/2ba67dbc14e58c02f5dc2b69f8d9070fa843e75b
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-07-24T09:49:39+02:00
Commit Message:
HYPNO: improve support for non-zero anchors in arcade sequences
Changed paths:
engines/hypno/arcade.cpp
engines/hypno/grammar.h
engines/hypno/grammar_arc.cpp
engines/hypno/grammar_arc.y
engines/hypno/grammar_mis.cpp
engines/hypno/lexer_arc.cpp
engines/hypno/lexer_mis.cpp
diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index e29b354a0db..0089b71cd62 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -230,7 +230,11 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
error("Invalid or missing mouse box");
Common::Point offset;
- _background = new MVideo(arc->backgroundVideo, offset, false, false, false);
+ Common::Point anchor = arc->anchor;
+ anchor.x = 0; // This is almost always zero, except when the screen starts at the middle
+ // We don't really need it
+ anchor.y = MAX(0, anchor.y - arc->mouseBox.bottom);
+ _background = new MVideo(arc->backgroundVideo, anchor, false, false, false);
drawCursorArcade(mousePos);
playVideo(*_background);
@@ -336,7 +340,7 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
offset.x = offset.x - 1;
needsUpdate = true;
}
- _background->position = offset;
+ _background->position.x = offset.x;
break;
default:
diff --git a/engines/hypno/grammar.h b/engines/hypno/grammar.h
index ea265e5407b..b6672a4578d 100644
--- a/engines/hypno/grammar.h
+++ b/engines/hypno/grammar.h
@@ -644,6 +644,7 @@ public:
objMissesAllowed[0] = 0;
objMissesAllowed[1] = 0;
mouseBox = Common::Rect(0, 0, 320, 200);
+ anchor = Common::Point(0, 0);
targetSoundRate = 0;
shootSoundRate = 0;
enemySoundRate = 0;
@@ -655,6 +656,7 @@ public:
uint32 frameDelay;
Common::String mode;
Common::Rect mouseBox;
+ Common::Point anchor;
ArcadeTransitions transitions;
Segments segments;
diff --git a/engines/hypno/grammar_arc.cpp b/engines/hypno/grammar_arc.cpp
index cc5d4f62ffe..b66af7d024c 100644
--- a/engines/hypno/grammar_arc.cpp
+++ b/engines/hypno/grammar_arc.cpp
@@ -632,17 +632,17 @@ static const yytype_int8 yytranslate[] =
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, 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
+ 137, 141, 142, 145, 149, 154, 158, 162, 167, 177,
+ 186, 191, 197, 202, 215, 220, 224, 228, 232, 235,
+ 239, 242, 243, 271, 274, 277, 283, 288, 293, 299,
+ 304, 309, 314, 319, 324, 331, 332, 335, 336, 339,
+ 340, 341, 344, 354, 359, 364, 369, 372, 375, 380,
+ 385, 390, 394, 398, 402, 406, 410, 414, 418, 422,
+ 426, 430, 434, 438, 442, 446, 450, 454, 458, 462,
+ 466, 470, 474, 478, 481, 485, 490, 495, 498, 503,
+ 508, 512, 518, 522, 525, 526, 527, 530, 534, 537,
+ 542, 545, 546, 550, 557, 561, 576, 580, 581, 587,
+ 591, 595, 598, 601, 603
};
#endif
@@ -1377,59 +1377,61 @@ yyreduce:
case 12: /* hline: ATOK NUM NUM */
#line 142 "engines/hypno/grammar_arc.y"
- { debugC(1, kHypnoDebugParser, "A %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1382 "engines/hypno/grammar_arc.cpp"
+ { g_parsedArc->anchor = Common::Point((yyvsp[-1].i), (yyvsp[0].i));
+ debugC(1, kHypnoDebugParser, "A %d %d", (yyvsp[-1].i), (yyvsp[0].i));
+ }
+#line 1384 "engines/hypno/grammar_arc.cpp"
break;
case 13: /* hline: MTOK FILENAME */
-#line 143 "engines/hypno/grammar_arc.y"
+#line 145 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "M %s", (yyvsp[0].s));
g_parsedArc->maskVideo = (yyvsp[0].s);
}
-#line 1391 "engines/hypno/grammar_arc.cpp"
+#line 1393 "engines/hypno/grammar_arc.cpp"
break;
case 14: /* hline: UTOK NUM NUM NUM NUM */
-#line 147 "engines/hypno/grammar_arc.y"
+#line 149 "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 1401 "engines/hypno/grammar_arc.cpp"
+#line 1403 "engines/hypno/grammar_arc.cpp"
break;
case 15: /* hline: VTOK NUM NUM */
-#line 152 "engines/hypno/grammar_arc.y"
+#line 154 "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 1410 "engines/hypno/grammar_arc.cpp"
+#line 1412 "engines/hypno/grammar_arc.cpp"
break;
case 16: /* hline: VTOK RESTOK */
-#line 156 "engines/hypno/grammar_arc.y"
+#line 158 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "V 320,200");
g_parsedArc->mouseBox = Common::Rect(0, 0, 320, 200);
}
-#line 1419 "engines/hypno/grammar_arc.cpp"
+#line 1421 "engines/hypno/grammar_arc.cpp"
break;
case 17: /* hline: OTOK NUM NUM */
-#line 160 "engines/hypno/grammar_arc.y"
+#line 162 "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 1429 "engines/hypno/grammar_arc.cpp"
+#line 1431 "engines/hypno/grammar_arc.cpp"
break;
case 18: /* hline: ONTOK NUM NUM */
-#line 165 "engines/hypno/grammar_arc.y"
+#line 167 "engines/hypno/grammar_arc.y"
{
if (Common::String("O0") == (yyvsp[-2].s)) {
g_parsedArc->objKillsRequired[0] = (yyvsp[-1].i);
@@ -1440,11 +1442,11 @@ yyreduce:
} else
error("Invalid objective: '%s'", (yyvsp[-2].s));
debugC(1, kHypnoDebugParser, "ON %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1444 "engines/hypno/grammar_arc.cpp"
+#line 1446 "engines/hypno/grammar_arc.cpp"
break;
case 19: /* hline: ONTOK NUM */
-#line 175 "engines/hypno/grammar_arc.y"
+#line 177 "engines/hypno/grammar_arc.y"
{
if (Common::String("O0") == (yyvsp[-1].s)) {
g_parsedArc->objKillsRequired[0] = (yyvsp[0].i);
@@ -1454,42 +1456,42 @@ yyreduce:
error("Invalid objective: '%s'", (yyvsp[-1].s));
debugC(1, kHypnoDebugParser, "ON %d", (yyvsp[0].i));
}
-#line 1458 "engines/hypno/grammar_arc.cpp"
+#line 1460 "engines/hypno/grammar_arc.cpp"
break;
case 20: /* hline: TPTOK NONETOK NUM FILENAME */
-#line 184 "engines/hypno/grammar_arc.y"
+#line 186 "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 1468 "engines/hypno/grammar_arc.cpp"
+#line 1470 "engines/hypno/grammar_arc.cpp"
break;
case 21: /* hline: TSTOK FILENAME NUM NUM */
-#line 189 "engines/hypno/grammar_arc.y"
+#line 191 "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 1479 "engines/hypno/grammar_arc.cpp"
+#line 1481 "engines/hypno/grammar_arc.cpp"
break;
case 22: /* hline: TPTOK FILENAME NUM FILENAME */
-#line 195 "engines/hypno/grammar_arc.y"
+#line 197 "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 1489 "engines/hypno/grammar_arc.cpp"
+#line 1491 "engines/hypno/grammar_arc.cpp"
break;
case 23: /* hline: TATOK NUM FILENAME flag enc */
-#line 200 "engines/hypno/grammar_arc.y"
+#line 202 "engines/hypno/grammar_arc.y"
{
uint32 sampleRate = 11025;
bool stereo = false;
@@ -1503,79 +1505,79 @@ yyreduce:
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "Ta %d %s", (yyvsp[-3].i), (yyvsp[-2].s));
}
-#line 1507 "engines/hypno/grammar_arc.cpp"
+#line 1509 "engines/hypno/grammar_arc.cpp"
break;
case 24: /* hline: TTOK FILENAME NUM */
-#line 213 "engines/hypno/grammar_arc.y"
+#line 215 "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 1517 "engines/hypno/grammar_arc.cpp"
+#line 1519 "engines/hypno/grammar_arc.cpp"
break;
case 25: /* hline: TTOK NONETOK NUM */
-#line 218 "engines/hypno/grammar_arc.y"
+#line 220 "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 1526 "engines/hypno/grammar_arc.cpp"
+#line 1528 "engines/hypno/grammar_arc.cpp"
break;
case 26: /* hline: NTOK FILENAME */
-#line 222 "engines/hypno/grammar_arc.y"
+#line 224 "engines/hypno/grammar_arc.y"
{
g_parsedArc->backgroundVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "N %s", (yyvsp[0].s));
}
-#line 1535 "engines/hypno/grammar_arc.cpp"
+#line 1537 "engines/hypno/grammar_arc.cpp"
break;
case 27: /* hline: NSTOK FILENAME */
-#line 226 "engines/hypno/grammar_arc.y"
+#line 228 "engines/hypno/grammar_arc.y"
{
g_parsedArc->backgroundVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "N* %s", (yyvsp[0].s));
}
-#line 1544 "engines/hypno/grammar_arc.cpp"
+#line 1546 "engines/hypno/grammar_arc.cpp"
break;
case 28: /* hline: RTOK FILENAME */
-#line 230 "engines/hypno/grammar_arc.y"
+#line 232 "engines/hypno/grammar_arc.y"
{
g_parsedArc->backgroundPalette = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "R %s", (yyvsp[0].s)); }
-#line 1552 "engines/hypno/grammar_arc.cpp"
+#line 1554 "engines/hypno/grammar_arc.cpp"
break;
case 29: /* hline: ITOK FILENAME */
-#line 233 "engines/hypno/grammar_arc.y"
+#line 235 "engines/hypno/grammar_arc.y"
{
g_parsedArc->player = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1561 "engines/hypno/grammar_arc.cpp"
+#line 1563 "engines/hypno/grammar_arc.cpp"
break;
case 30: /* hline: I1TOK FILENAME */
-#line 237 "engines/hypno/grammar_arc.y"
+#line 239 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "I1 %s", (yyvsp[0].s));
}
-#line 1569 "engines/hypno/grammar_arc.cpp"
+#line 1571 "engines/hypno/grammar_arc.cpp"
break;
case 31: /* hline: QTOK NUM NUM */
-#line 240 "engines/hypno/grammar_arc.y"
+#line 242 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "Q %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1575 "engines/hypno/grammar_arc.cpp"
+#line 1577 "engines/hypno/grammar_arc.cpp"
break;
case 32: /* hline: BNTOK FILENAME */
-#line 241 "engines/hypno/grammar_arc.y"
+#line 243 "engines/hypno/grammar_arc.y"
{
if (Common::String("B0") == (yyvsp[-1].s))
g_parsedArc->beforeVideo = (yyvsp[0].s);
@@ -1604,153 +1606,153 @@ yyreduce:
debugC(1, kHypnoDebugParser, "BN %s", (yyvsp[0].s));
}
-#line 1608 "engines/hypno/grammar_arc.cpp"
+#line 1610 "engines/hypno/grammar_arc.cpp"
break;
case 33: /* hline: SNTOK FILENAME enc flag */
-#line 269 "engines/hypno/grammar_arc.y"
+#line 271 "engines/hypno/grammar_arc.y"
{
parseSN((yyvsp[-3].s), (yyvsp[-2].s), (yyvsp[-1].s), (yyvsp[0].s));
}
-#line 1616 "engines/hypno/grammar_arc.cpp"
+#line 1618 "engines/hypno/grammar_arc.cpp"
break;
case 34: /* hline: SNTOK FILENAME flag enc */
-#line 272 "engines/hypno/grammar_arc.y"
+#line 274 "engines/hypno/grammar_arc.y"
{
parseSN((yyvsp[-3].s), (yyvsp[-2].s), (yyvsp[0].s), (yyvsp[-1].s));
}
-#line 1624 "engines/hypno/grammar_arc.cpp"
+#line 1626 "engines/hypno/grammar_arc.cpp"
break;
case 35: /* hline: HETOK BYTE NUM NUM */
-#line 275 "engines/hypno/grammar_arc.y"
+#line 277 "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 1635 "engines/hypno/grammar_arc.cpp"
+#line 1637 "engines/hypno/grammar_arc.cpp"
break;
case 36: /* hline: HLTOK BYTE NUM NUM */
-#line 281 "engines/hypno/grammar_arc.y"
+#line 283 "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 1645 "engines/hypno/grammar_arc.cpp"
+#line 1647 "engines/hypno/grammar_arc.cpp"
break;
case 37: /* hline: HUTOK BYTE NUM NUM */
-#line 286 "engines/hypno/grammar_arc.y"
+#line 288 "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 1655 "engines/hypno/grammar_arc.cpp"
+#line 1657 "engines/hypno/grammar_arc.cpp"
break;
case 38: /* hline: HTOK NAME NUM NUM */
-#line 291 "engines/hypno/grammar_arc.y"
+#line 293 "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 1666 "engines/hypno/grammar_arc.cpp"
+#line 1668 "engines/hypno/grammar_arc.cpp"
break;
case 39: /* hline: HTOK RTOK NUM NUM */
-#line 297 "engines/hypno/grammar_arc.y"
+#line 299 "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 1676 "engines/hypno/grammar_arc.cpp"
+#line 1678 "engines/hypno/grammar_arc.cpp"
break;
case 40: /* hline: HTOK ATOK NUM NUM */
-#line 302 "engines/hypno/grammar_arc.y"
+#line 304 "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 1686 "engines/hypno/grammar_arc.cpp"
+#line 1688 "engines/hypno/grammar_arc.cpp"
break;
case 41: /* hline: HTOK PTOK NUM NUM */
-#line 307 "engines/hypno/grammar_arc.y"
+#line 309 "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 1696 "engines/hypno/grammar_arc.cpp"
+#line 1698 "engines/hypno/grammar_arc.cpp"
break;
case 42: /* hline: HTOK LTOK NUM NUM */
-#line 312 "engines/hypno/grammar_arc.y"
+#line 314 "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 1706 "engines/hypno/grammar_arc.cpp"
+#line 1708 "engines/hypno/grammar_arc.cpp"
break;
case 43: /* hline: H12TOK BYTE NUM NUM */
-#line 317 "engines/hypno/grammar_arc.y"
+#line 319 "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 1716 "engines/hypno/grammar_arc.cpp"
+#line 1718 "engines/hypno/grammar_arc.cpp"
break;
case 44: /* hline: HTOK BYTE NUM NUM */
-#line 322 "engines/hypno/grammar_arc.y"
+#line 324 "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 1726 "engines/hypno/grammar_arc.cpp"
+#line 1728 "engines/hypno/grammar_arc.cpp"
break;
case 45: /* enc: ENCTOK */
-#line 329 "engines/hypno/grammar_arc.y"
+#line 331 "engines/hypno/grammar_arc.y"
{ (yyval.s) = (yyvsp[0].s); }
-#line 1732 "engines/hypno/grammar_arc.cpp"
+#line 1734 "engines/hypno/grammar_arc.cpp"
break;
case 46: /* enc: %empty */
-#line 330 "engines/hypno/grammar_arc.y"
+#line 332 "engines/hypno/grammar_arc.y"
{ (yyval.s) = scumm_strdup(""); }
-#line 1738 "engines/hypno/grammar_arc.cpp"
+#line 1740 "engines/hypno/grammar_arc.cpp"
break;
case 47: /* flag: NAME */
-#line 333 "engines/hypno/grammar_arc.y"
+#line 335 "engines/hypno/grammar_arc.y"
{ (yyval.s) = (yyvsp[0].s); }
-#line 1744 "engines/hypno/grammar_arc.cpp"
+#line 1746 "engines/hypno/grammar_arc.cpp"
break;
case 48: /* flag: %empty */
-#line 334 "engines/hypno/grammar_arc.y"
+#line 336 "engines/hypno/grammar_arc.y"
{ (yyval.s) = scumm_strdup(""); }
-#line 1750 "engines/hypno/grammar_arc.cpp"
+#line 1752 "engines/hypno/grammar_arc.cpp"
break;
case 52: /* bline: FNTOK FILENAME */
-#line 342 "engines/hypno/grammar_arc.y"
+#line 344 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
if (Common::String("F0") == (yyvsp[-1].s))
@@ -1761,457 +1763,457 @@ yyreduce:
shoot->additionalVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1765 "engines/hypno/grammar_arc.cpp"
+#line 1767 "engines/hypno/grammar_arc.cpp"
break;
case 53: /* bline: AVTOK NUM */
-#line 352 "engines/hypno/grammar_arc.y"
+#line 354 "engines/hypno/grammar_arc.y"
{
assert((yyvsp[0].i) == 0);
shoot->nonHostile = true;
debugC(1, kHypnoDebugParser, "AV %d", (yyvsp[0].i));
}
-#line 1775 "engines/hypno/grammar_arc.cpp"
+#line 1777 "engines/hypno/grammar_arc.cpp"
break;
case 54: /* bline: ALTOK NUM */
-#line 357 "engines/hypno/grammar_arc.y"
+#line 359 "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 1785 "engines/hypno/grammar_arc.cpp"
+#line 1787 "engines/hypno/grammar_arc.cpp"
break;
case 55: /* bline: ABTOK NUM */
-#line 362 "engines/hypno/grammar_arc.y"
+#line 364 "engines/hypno/grammar_arc.y"
{
assert((yyvsp[0].i) == 1);
shoot->playInteractionAudio = true;
debugC(1, kHypnoDebugParser, "AB %d", (yyvsp[0].i));
}
-#line 1795 "engines/hypno/grammar_arc.cpp"
+#line 1797 "engines/hypno/grammar_arc.cpp"
break;
case 56: /* bline: DTOK LTOK */
-#line 367 "engines/hypno/grammar_arc.y"
+#line 369 "engines/hypno/grammar_arc.y"
{
shoot->direction = 'L';
debugC(1, kHypnoDebugParser, "D L"); }
-#line 1803 "engines/hypno/grammar_arc.cpp"
+#line 1805 "engines/hypno/grammar_arc.cpp"
break;
case 57: /* bline: DTOK RTOK */
-#line 370 "engines/hypno/grammar_arc.y"
+#line 372 "engines/hypno/grammar_arc.y"
{
shoot->direction = 'R';
debugC(1, kHypnoDebugParser, "D R"); }
-#line 1811 "engines/hypno/grammar_arc.cpp"
+#line 1813 "engines/hypno/grammar_arc.cpp"
break;
case 58: /* bline: J0TOK NUM */
-#line 373 "engines/hypno/grammar_arc.y"
+#line 375 "engines/hypno/grammar_arc.y"
{
assert((yyvsp[0].i) > 0);
shoot->warningVideoIdx = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "J0 %d", (yyvsp[0].i));
}
-#line 1821 "engines/hypno/grammar_arc.cpp"
+#line 1823 "engines/hypno/grammar_arc.cpp"
break;
case 59: /* bline: FNTOK NONETOK */
-#line 378 "engines/hypno/grammar_arc.y"
+#line 380 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = "NONE";
debugC(1, kHypnoDebugParser, "FN NONE");
}
-#line 1831 "engines/hypno/grammar_arc.cpp"
+#line 1833 "engines/hypno/grammar_arc.cpp"
break;
case 60: /* bline: FTOK FILENAME */
-#line 383 "engines/hypno/grammar_arc.y"
+#line 385 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1841 "engines/hypno/grammar_arc.cpp"
+#line 1843 "engines/hypno/grammar_arc.cpp"
break;
case 61: /* bline: ITOK NAME */
-#line 388 "engines/hypno/grammar_arc.y"
+#line 390 "engines/hypno/grammar_arc.y"
{
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1850 "engines/hypno/grammar_arc.cpp"
+#line 1852 "engines/hypno/grammar_arc.cpp"
break;
case 62: /* bline: ITOK BNTOK */
-#line 392 "engines/hypno/grammar_arc.y"
+#line 394 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == B1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1859 "engines/hypno/grammar_arc.cpp"
+#line 1861 "engines/hypno/grammar_arc.cpp"
break;
case 63: /* bline: ITOK ATOK */
-#line 396 "engines/hypno/grammar_arc.y"
+#line 398 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == A
shoot->name = "A";
debugC(1, kHypnoDebugParser, "I A");
}
-#line 1868 "engines/hypno/grammar_arc.cpp"
+#line 1870 "engines/hypno/grammar_arc.cpp"
break;
case 64: /* bline: ITOK CTOK */
-#line 400 "engines/hypno/grammar_arc.y"
+#line 402 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == C
shoot->name = "C";
debugC(1, kHypnoDebugParser, "I C");
}
-#line 1877 "engines/hypno/grammar_arc.cpp"
+#line 1879 "engines/hypno/grammar_arc.cpp"
break;
case 65: /* bline: ITOK DTOK */
-#line 404 "engines/hypno/grammar_arc.y"
+#line 406 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == D
shoot->name = "D";
debugC(1, kHypnoDebugParser, "I D");
}
-#line 1886 "engines/hypno/grammar_arc.cpp"
+#line 1888 "engines/hypno/grammar_arc.cpp"
break;
case 66: /* bline: ITOK FTOK */
-#line 408 "engines/hypno/grammar_arc.y"
+#line 410 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == F
shoot->name = "F";
debugC(1, kHypnoDebugParser, "I F");
}
-#line 1895 "engines/hypno/grammar_arc.cpp"
+#line 1897 "engines/hypno/grammar_arc.cpp"
break;
case 67: /* bline: ITOK GTOK */
-#line 412 "engines/hypno/grammar_arc.y"
+#line 414 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == G
shoot->name = "G";
debugC(1, kHypnoDebugParser, "I G");
}
-#line 1904 "engines/hypno/grammar_arc.cpp"
+#line 1906 "engines/hypno/grammar_arc.cpp"
break;
case 68: /* bline: ITOK HTOK */
-#line 416 "engines/hypno/grammar_arc.y"
+#line 418 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == H
shoot->name = "H";
debugC(1, kHypnoDebugParser, "I H");
}
-#line 1913 "engines/hypno/grammar_arc.cpp"
+#line 1915 "engines/hypno/grammar_arc.cpp"
break;
case 69: /* bline: ITOK H12TOK */
-#line 420 "engines/hypno/grammar_arc.y"
+#line 422 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == H1/H2
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1922 "engines/hypno/grammar_arc.cpp"
+#line 1924 "engines/hypno/grammar_arc.cpp"
break;
case 70: /* bline: ITOK ITOK */
-#line 424 "engines/hypno/grammar_arc.y"
+#line 426 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == I
shoot->name = "I";
debugC(1, kHypnoDebugParser, "I I");
}
-#line 1931 "engines/hypno/grammar_arc.cpp"
+#line 1933 "engines/hypno/grammar_arc.cpp"
break;
case 71: /* bline: ITOK JTOK */
-#line 428 "engines/hypno/grammar_arc.y"
+#line 430 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == J
shoot->name = "J";
debugC(1, kHypnoDebugParser, "I J");
}
-#line 1940 "engines/hypno/grammar_arc.cpp"
+#line 1942 "engines/hypno/grammar_arc.cpp"
break;
case 72: /* bline: ITOK KTOK */
-#line 432 "engines/hypno/grammar_arc.y"
+#line 434 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == K
shoot->name = "K";
debugC(1, kHypnoDebugParser, "I K");
}
-#line 1949 "engines/hypno/grammar_arc.cpp"
+#line 1951 "engines/hypno/grammar_arc.cpp"
break;
case 73: /* bline: ITOK NTOK */
-#line 436 "engines/hypno/grammar_arc.y"
+#line 438 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == N
shoot->name = "N";
debugC(1, kHypnoDebugParser, "I N");
}
-#line 1958 "engines/hypno/grammar_arc.cpp"
+#line 1960 "engines/hypno/grammar_arc.cpp"
break;
case 74: /* bline: ITOK OTOK */
-#line 440 "engines/hypno/grammar_arc.y"
+#line 442 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == O
shoot->name = "O";
debugC(1, kHypnoDebugParser, "I O");
}
-#line 1967 "engines/hypno/grammar_arc.cpp"
+#line 1969 "engines/hypno/grammar_arc.cpp"
break;
case 75: /* bline: ITOK PTOK */
-#line 444 "engines/hypno/grammar_arc.y"
+#line 446 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == P
shoot->name = "P";
debugC(1, kHypnoDebugParser, "I P");
}
-#line 1976 "engines/hypno/grammar_arc.cpp"
+#line 1978 "engines/hypno/grammar_arc.cpp"
break;
case 76: /* bline: ITOK QTOK */
-#line 448 "engines/hypno/grammar_arc.y"
+#line 450 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == Q
shoot->name = "Q";
debugC(1, kHypnoDebugParser, "I Q");
}
-#line 1985 "engines/hypno/grammar_arc.cpp"
+#line 1987 "engines/hypno/grammar_arc.cpp"
break;
case 77: /* bline: ITOK RTOK */
-#line 452 "engines/hypno/grammar_arc.y"
+#line 454 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == R
shoot->name = "R";
debugC(1, kHypnoDebugParser, "I R");
}
-#line 1994 "engines/hypno/grammar_arc.cpp"
+#line 1996 "engines/hypno/grammar_arc.cpp"
break;
case 78: /* bline: ITOK SNTOK */
-#line 456 "engines/hypno/grammar_arc.y"
+#line 458 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == S1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 2003 "engines/hypno/grammar_arc.cpp"
+#line 2005 "engines/hypno/grammar_arc.cpp"
break;
case 79: /* bline: ITOK TTOK */
-#line 460 "engines/hypno/grammar_arc.y"
+#line 462 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == T
shoot->name = "T";
debugC(1, kHypnoDebugParser, "I T");
}
-#line 2012 "engines/hypno/grammar_arc.cpp"
+#line 2014 "engines/hypno/grammar_arc.cpp"
break;
case 80: /* bline: ITOK LTOK */
-#line 464 "engines/hypno/grammar_arc.y"
+#line 466 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == L
shoot->name = "L";
debugC(1, kHypnoDebugParser, "I L");
}
-#line 2021 "engines/hypno/grammar_arc.cpp"
+#line 2023 "engines/hypno/grammar_arc.cpp"
break;
case 81: /* bline: ITOK MTOK */
-#line 468 "engines/hypno/grammar_arc.y"
+#line 470 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == M
shoot->name = "M";
debugC(1, kHypnoDebugParser, "I M");
}
-#line 2030 "engines/hypno/grammar_arc.cpp"
+#line 2032 "engines/hypno/grammar_arc.cpp"
break;
case 82: /* bline: ITOK UTOK */
-#line 472 "engines/hypno/grammar_arc.y"
+#line 474 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == U
shoot->name = "U";
debugC(1, kHypnoDebugParser, "I U");
}
-#line 2039 "engines/hypno/grammar_arc.cpp"
+#line 2041 "engines/hypno/grammar_arc.cpp"
break;
case 83: /* bline: JTOK NUM */
-#line 476 "engines/hypno/grammar_arc.y"
+#line 478 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "J %d", (yyvsp[0].i));
}
-#line 2047 "engines/hypno/grammar_arc.cpp"
+#line 2049 "engines/hypno/grammar_arc.cpp"
break;
case 84: /* bline: A0TOK NUM NUM */
-#line 479 "engines/hypno/grammar_arc.y"
+#line 481 "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 2056 "engines/hypno/grammar_arc.cpp"
+#line 2058 "engines/hypno/grammar_arc.cpp"
break;
case 85: /* bline: RTOK NUM NUM */
-#line 483 "engines/hypno/grammar_arc.y"
+#line 485 "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 2066 "engines/hypno/grammar_arc.cpp"
+#line 2068 "engines/hypno/grammar_arc.cpp"
break;
case 86: /* bline: R0TOK NUM NUM */
-#line 488 "engines/hypno/grammar_arc.y"
+#line 490 "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 2076 "engines/hypno/grammar_arc.cpp"
+#line 2078 "engines/hypno/grammar_arc.cpp"
break;
case 87: /* bline: R1TOK NUM NUM */
-#line 493 "engines/hypno/grammar_arc.y"
+#line 495 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "R1 %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2084 "engines/hypno/grammar_arc.cpp"
+#line 2086 "engines/hypno/grammar_arc.cpp"
break;
case 88: /* bline: BNTOK NUM NUM */
-#line 496 "engines/hypno/grammar_arc.y"
+#line 498 "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 2094 "engines/hypno/grammar_arc.cpp"
+#line 2096 "engines/hypno/grammar_arc.cpp"
break;
case 89: /* bline: KNTOK NUM NUM */
-#line 501 "engines/hypno/grammar_arc.y"
+#line 503 "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 2104 "engines/hypno/grammar_arc.cpp"
+#line 2106 "engines/hypno/grammar_arc.cpp"
break;
case 90: /* bline: P0TOK NUM NUM */
-#line 506 "engines/hypno/grammar_arc.y"
+#line 508 "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 2113 "engines/hypno/grammar_arc.cpp"
+#line 2115 "engines/hypno/grammar_arc.cpp"
break;
case 91: /* bline: OTOK NUM NUM */
-#line 510 "engines/hypno/grammar_arc.y"
+#line 512 "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 2124 "engines/hypno/grammar_arc.cpp"
+#line 2126 "engines/hypno/grammar_arc.cpp"
break;
case 92: /* bline: CTOK NUM */
-#line 516 "engines/hypno/grammar_arc.y"
+#line 518 "engines/hypno/grammar_arc.y"
{
shoot->timesToShoot = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i));
}
-#line 2133 "engines/hypno/grammar_arc.cpp"
+#line 2135 "engines/hypno/grammar_arc.cpp"
break;
case 93: /* bline: HTOK NUM */
-#line 520 "engines/hypno/grammar_arc.y"
+#line 522 "engines/hypno/grammar_arc.y"
{
shoot->attackFrames.push_back((yyvsp[0].i));
debugC(1, kHypnoDebugParser, "H %d", (yyvsp[0].i)); }
-#line 2141 "engines/hypno/grammar_arc.cpp"
+#line 2143 "engines/hypno/grammar_arc.cpp"
break;
case 94: /* bline: VTOK NUM */
-#line 523 "engines/hypno/grammar_arc.y"
+#line 525 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V %d", (yyvsp[0].i)); }
-#line 2147 "engines/hypno/grammar_arc.cpp"
+#line 2149 "engines/hypno/grammar_arc.cpp"
break;
case 95: /* bline: VTOK */
-#line 524 "engines/hypno/grammar_arc.y"
+#line 526 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V"); }
-#line 2153 "engines/hypno/grammar_arc.cpp"
+#line 2155 "engines/hypno/grammar_arc.cpp"
break;
case 96: /* bline: WTOK NUM */
-#line 525 "engines/hypno/grammar_arc.y"
+#line 527 "engines/hypno/grammar_arc.y"
{
shoot->attackWeight = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "W %d", (yyvsp[0].i)); }
-#line 2161 "engines/hypno/grammar_arc.cpp"
+#line 2163 "engines/hypno/grammar_arc.cpp"
break;
case 97: /* bline: DTOK NUM */
-#line 528 "engines/hypno/grammar_arc.y"
+#line 530 "engines/hypno/grammar_arc.y"
{
shoot->pointsToShoot = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
}
-#line 2170 "engines/hypno/grammar_arc.cpp"
+#line 2172 "engines/hypno/grammar_arc.cpp"
break;
case 98: /* bline: LTOK NUM NUM */
-#line 532 "engines/hypno/grammar_arc.y"
+#line 534 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "L %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2178 "engines/hypno/grammar_arc.cpp"
+#line 2180 "engines/hypno/grammar_arc.cpp"
break;
case 99: /* bline: LTOK NUM */
-#line 535 "engines/hypno/grammar_arc.y"
+#line 537 "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 2188 "engines/hypno/grammar_arc.cpp"
+#line 2190 "engines/hypno/grammar_arc.cpp"
break;
case 100: /* bline: MTOK NUM */
-#line 540 "engines/hypno/grammar_arc.y"
+#line 542 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "M %d", (yyvsp[0].i));
shoot->missedAnimation = (yyvsp[0].i);
}
-#line 2196 "engines/hypno/grammar_arc.cpp"
+#line 2198 "engines/hypno/grammar_arc.cpp"
break;
case 101: /* bline: KTOK */
-#line 543 "engines/hypno/grammar_arc.y"
+#line 545 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "K"); }
-#line 2202 "engines/hypno/grammar_arc.cpp"
+#line 2204 "engines/hypno/grammar_arc.cpp"
break;
case 102: /* bline: KTOK NUM */
-#line 544 "engines/hypno/grammar_arc.y"
+#line 546 "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 2211 "engines/hypno/grammar_arc.cpp"
+#line 2213 "engines/hypno/grammar_arc.cpp"
break;
case 103: /* bline: KTOK NUM NUM NUM */
-#line 548 "engines/hypno/grammar_arc.y"
+#line 550 "engines/hypno/grammar_arc.y"
{
assert((yyvsp[-1].i) > (yyvsp[-2].i));
FrameInfo fi((yyvsp[-2].i), (yyvsp[-1].i) - (yyvsp[-2].i));
@@ -2219,20 +2221,20 @@ yyreduce:
shoot->explosionFrames.push_back(fi);
debugC(1, kHypnoDebugParser, "K %d %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2223 "engines/hypno/grammar_arc.cpp"
+#line 2225 "engines/hypno/grammar_arc.cpp"
break;
case 104: /* bline: KTOK NUM NUM */
-#line 555 "engines/hypno/grammar_arc.y"
+#line 557 "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 2232 "engines/hypno/grammar_arc.cpp"
+#line 2234 "engines/hypno/grammar_arc.cpp"
break;
case 105: /* bline: SNTOK FILENAME enc */
-#line 559 "engines/hypno/grammar_arc.y"
+#line 561 "engines/hypno/grammar_arc.y"
{
if (Common::String("S0") == (yyvsp[-2].s)) {
shoot->enemySound = (yyvsp[-1].s);
@@ -2248,88 +2250,88 @@ yyreduce:
shoot->animalSound = (yyvsp[-1].s);
debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s)); }
-#line 2252 "engines/hypno/grammar_arc.cpp"
+#line 2254 "engines/hypno/grammar_arc.cpp"
break;
case 106: /* bline: SNTOK */
-#line 574 "engines/hypno/grammar_arc.y"
+#line 576 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "SN");
}
-#line 2260 "engines/hypno/grammar_arc.cpp"
+#line 2262 "engines/hypno/grammar_arc.cpp"
break;
case 107: /* bline: GTOK */
-#line 578 "engines/hypno/grammar_arc.y"
+#line 580 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "G"); }
-#line 2266 "engines/hypno/grammar_arc.cpp"
+#line 2268 "engines/hypno/grammar_arc.cpp"
break;
case 108: /* bline: TTOK NUM NUM NUM */
-#line 579 "engines/hypno/grammar_arc.y"
+#line 581 "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 2277 "engines/hypno/grammar_arc.cpp"
+#line 2279 "engines/hypno/grammar_arc.cpp"
break;
case 109: /* bline: TTOK NUM */
-#line 585 "engines/hypno/grammar_arc.y"
+#line 587 "engines/hypno/grammar_arc.y"
{
shoot->interactionFrame = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "T %d", (yyvsp[0].i));
}
-#line 2286 "engines/hypno/grammar_arc.cpp"
+#line 2288 "engines/hypno/grammar_arc.cpp"
break;
case 110: /* bline: TTOK */
-#line 589 "engines/hypno/grammar_arc.y"
+#line 591 "engines/hypno/grammar_arc.y"
{
shoot->isAnimal = true;
debugC(1, kHypnoDebugParser, "T");
}
-#line 2295 "engines/hypno/grammar_arc.cpp"
+#line 2297 "engines/hypno/grammar_arc.cpp"
break;
case 111: /* bline: MTOK */
-#line 593 "engines/hypno/grammar_arc.y"
+#line 595 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "M");
}
-#line 2303 "engines/hypno/grammar_arc.cpp"
+#line 2305 "engines/hypno/grammar_arc.cpp"
break;
case 112: /* bline: NTOK */
-#line 596 "engines/hypno/grammar_arc.y"
+#line 598 "engines/hypno/grammar_arc.y"
{
shoot->noEnemySound = true;
debugC(1, kHypnoDebugParser, "N"); }
-#line 2311 "engines/hypno/grammar_arc.cpp"
+#line 2313 "engines/hypno/grammar_arc.cpp"
break;
case 113: /* bline: NRTOK */
-#line 599 "engines/hypno/grammar_arc.y"
+#line 601 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "NR"); }
-#line 2318 "engines/hypno/grammar_arc.cpp"
+#line 2320 "engines/hypno/grammar_arc.cpp"
break;
case 114: /* bline: ZTOK */
-#line 601 "engines/hypno/grammar_arc.y"
+#line 603 "engines/hypno/grammar_arc.y"
{
g_parsedArc->shoots.push_back(*shoot);
//delete shoot;
//shoot = nullptr;
debugC(1, kHypnoDebugParser, "Z");
}
-#line 2329 "engines/hypno/grammar_arc.cpp"
+#line 2331 "engines/hypno/grammar_arc.cpp"
break;
-#line 2333 "engines/hypno/grammar_arc.cpp"
+#line 2335 "engines/hypno/grammar_arc.cpp"
default: break;
}
diff --git a/engines/hypno/grammar_arc.y b/engines/hypno/grammar_arc.y
index a2cd5c86599..bc4cc3ad59f 100644
--- a/engines/hypno/grammar_arc.y
+++ b/engines/hypno/grammar_arc.y
@@ -139,7 +139,9 @@ hline: CTOK NUM {
debugC(1, kHypnoDebugParser, "D %d", $2);
}
| PTOK NUM NUM { debugC(1, kHypnoDebugParser, "P %d %d", $2, $3); }
- | ATOK NUM NUM { debugC(1, kHypnoDebugParser, "A %d %d", $2, $3); }
+ | ATOK NUM NUM { g_parsedArc->anchor = Common::Point($2, $3);
+ debugC(1, kHypnoDebugParser, "A %d %d", $2, $3);
+ }
| MTOK FILENAME {
debugC(1, kHypnoDebugParser, "M %s", $2);
g_parsedArc->maskVideo = $2;
diff --git a/engines/hypno/grammar_mis.cpp b/engines/hypno/grammar_mis.cpp
index 60840809da2..3af0ed9e501 100644
--- a/engines/hypno/grammar_mis.cpp
+++ b/engines/hypno/grammar_mis.cpp
@@ -1240,7 +1240,7 @@ yyreduce:
if (smenu_idx)
delete smenu_idx;
smenu_idx = new Common::Array<uint32>();
- smenu_idx->push_back(-1);
+ smenu_idx->push_back((uint32)-1);
if (stack)
delete stack;
stack = new Hypno::HotspotsStack();
@@ -1312,7 +1312,7 @@ yyreduce:
Hotspots *cur = stack->back();
Hotspot *hot = &(*cur)[idx];
- smenu_idx->push_back(-1);
+ smenu_idx->push_back((uint32)-1);
hot->smenu = new Hotspots();
stack->push_back(hot->smenu);
debugC(1, kHypnoDebugParser, "SUBMENU");
diff --git a/engines/hypno/lexer_arc.cpp b/engines/hypno/lexer_arc.cpp
index d6da3615c09..2ebdae62221 100644
--- a/engines/hypno/lexer_arc.cpp
+++ b/engines/hypno/lexer_arc.cpp
@@ -879,8 +879,8 @@ char *yytext;
#include "hypno/grammar.h"
#include "hypno/tokens_arc.h"
-#line 874 "engines/hypno/lexer_arc.cpp"
-#line 875 "engines/hypno/lexer_arc.cpp"
+#line 882 "engines/hypno/lexer_arc.cpp"
+#line 883 "engines/hypno/lexer_arc.cpp"
#define INITIAL 0
@@ -1095,9 +1095,9 @@ YY_DECL
}
{
-#line 42 "engines/hypno/lexer_arc.l"
+#line 50 "engines/hypno/lexer_arc.l"
-#line 1092 "engines/hypno/lexer_arc.cpp"
+#line 1100 "engines/hypno/lexer_arc.cpp"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -1162,306 +1162,306 @@ do_action: /* This label is used only to access EOF actions. */
case 1:
YY_RULE_SETUP
-#line 43 "engines/hypno/lexer_arc.l"
+#line 51 "engines/hypno/lexer_arc.l"
return NONETOK;
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 44 "engines/hypno/lexer_arc.l"
+#line 52 "engines/hypno/lexer_arc.l"
return CTOK;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 45 "engines/hypno/lexer_arc.l"
+#line 53 "engines/hypno/lexer_arc.l"
return DTOK;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 46 "engines/hypno/lexer_arc.l"
+#line 54 "engines/hypno/lexer_arc.l"
return HETOK;
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 47 "engines/hypno/lexer_arc.l"
+#line 55 "engines/hypno/lexer_arc.l"
return HLTOK;
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 48 "engines/hypno/lexer_arc.l"
+#line 56 "engines/hypno/lexer_arc.l"
return HUTOK;
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 49 "engines/hypno/lexer_arc.l"
+#line 57 "engines/hypno/lexer_arc.l"
HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return H12TOK;
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 50 "engines/hypno/lexer_arc.l"
+#line 58 "engines/hypno/lexer_arc.l"
return HTOK;
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 51 "engines/hypno/lexer_arc.l"
+#line 59 "engines/hypno/lexer_arc.l"
return PTOK;
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 52 "engines/hypno/lexer_arc.l"
+#line 60 "engines/hypno/lexer_arc.l"
return ABTOK;
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 53 "engines/hypno/lexer_arc.l"
+#line 61 "engines/hypno/lexer_arc.l"
return ALTOK;
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 54 "engines/hypno/lexer_arc.l"
+#line 62 "engines/hypno/lexer_arc.l"
return AVTOK;
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 55 "engines/hypno/lexer_arc.l"
+#line 63 "engines/hypno/lexer_arc.l"
return ATOK;
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 56 "engines/hypno/lexer_arc.l"
+#line 64 "engines/hypno/lexer_arc.l"
return VTOK;
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 57 "engines/hypno/lexer_arc.l"
+#line 65 "engines/hypno/lexer_arc.l"
return OTOK;
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 58 "engines/hypno/lexer_arc.l"
+#line 66 "engines/hypno/lexer_arc.l"
HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ONTOK;
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 59 "engines/hypno/lexer_arc.l"
+#line 67 "engines/hypno/lexer_arc.l"
return LTOK;
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 60 "engines/hypno/lexer_arc.l"
+#line 68 "engines/hypno/lexer_arc.l"
return NTOK;
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 61 "engines/hypno/lexer_arc.l"
+#line 69 "engines/hypno/lexer_arc.l"
return NRTOK;
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 62 "engines/hypno/lexer_arc.l"
+#line 70 "engines/hypno/lexer_arc.l"
return NSTOK;
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 63 "engines/hypno/lexer_arc.l"
+#line 71 "engines/hypno/lexer_arc.l"
return MTOK;
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 64 "engines/hypno/lexer_arc.l"
+#line 72 "engines/hypno/lexer_arc.l"
return RTOK;
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 65 "engines/hypno/lexer_arc.l"
+#line 73 "engines/hypno/lexer_arc.l"
return R0TOK;
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 66 "engines/hypno/lexer_arc.l"
+#line 74 "engines/hypno/lexer_arc.l"
return R1TOK;
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 67 "engines/hypno/lexer_arc.l"
+#line 75 "engines/hypno/lexer_arc.l"
return ITOK;
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 68 "engines/hypno/lexer_arc.l"
+#line 76 "engines/hypno/lexer_arc.l"
return I1TOK;
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 69 "engines/hypno/lexer_arc.l"
+#line 77 "engines/hypno/lexer_arc.l"
return J0TOK;
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 70 "engines/hypno/lexer_arc.l"
+#line 78 "engines/hypno/lexer_arc.l"
return JTOK;
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 71 "engines/hypno/lexer_arc.l"
+#line 79 "engines/hypno/lexer_arc.l"
return KTOK;
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 72 "engines/hypno/lexer_arc.l"
+#line 80 "engines/hypno/lexer_arc.l"
return GTOK;
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 73 "engines/hypno/lexer_arc.l"
+#line 81 "engines/hypno/lexer_arc.l"
return QTOK;
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 74 "engines/hypno/lexer_arc.l"
+#line 82 "engines/hypno/lexer_arc.l"
return UTOK;
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 75 "engines/hypno/lexer_arc.l"
+#line 83 "engines/hypno/lexer_arc.l"
return ZTOK;
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 76 "engines/hypno/lexer_arc.l"
+#line 84 "engines/hypno/lexer_arc.l"
return WTOK;
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 77 "engines/hypno/lexer_arc.l"
+#line 85 "engines/hypno/lexer_arc.l"
return XTOK;
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 78 "engines/hypno/lexer_arc.l"
+#line 86 "engines/hypno/lexer_arc.l"
return TTOK;
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 79 "engines/hypno/lexer_arc.l"
+#line 87 "engines/hypno/lexer_arc.l"
return TPTOK;
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 80 "engines/hypno/lexer_arc.l"
+#line 88 "engines/hypno/lexer_arc.l"
return TSTOK;
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 81 "engines/hypno/lexer_arc.l"
+#line 89 "engines/hypno/lexer_arc.l"
return TATOK;
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 82 "engines/hypno/lexer_arc.l"
+#line 90 "engines/hypno/lexer_arc.l"
HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FNTOK;
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 83 "engines/hypno/lexer_arc.l"
+#line 91 "engines/hypno/lexer_arc.l"
return FTOK;
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 84 "engines/hypno/lexer_arc.l"
+#line 92 "engines/hypno/lexer_arc.l"
HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return SNTOK;
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 85 "engines/hypno/lexer_arc.l"
+#line 93 "engines/hypno/lexer_arc.l"
HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return SNTOK;
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 86 "engines/hypno/lexer_arc.l"
+#line 94 "engines/hypno/lexer_arc.l"
return A0TOK;
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 87 "engines/hypno/lexer_arc.l"
+#line 95 "engines/hypno/lexer_arc.l"
HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return BNTOK;
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 88 "engines/hypno/lexer_arc.l"
+#line 96 "engines/hypno/lexer_arc.l"
return KNTOK;
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 89 "engines/hypno/lexer_arc.l"
+#line 97 "engines/hypno/lexer_arc.l"
return P0TOK;
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 90 "engines/hypno/lexer_arc.l"
+#line 98 "engines/hypno/lexer_arc.l"
HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return YXTOK;
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 91 "engines/hypno/lexer_arc.l"
+#line 99 "engines/hypno/lexer_arc.l"
HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ENCTOK;
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 92 "engines/hypno/lexer_arc.l"
+#line 100 "engines/hypno/lexer_arc.l"
HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ENCTOK;
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 93 "engines/hypno/lexer_arc.l"
+#line 101 "engines/hypno/lexer_arc.l"
HYPNO_ARC_lval.i = atoi(HYPNO_ARC_text); return NUM;
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 94 "engines/hypno/lexer_arc.l"
+#line 102 "engines/hypno/lexer_arc.l"
HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return NAME;
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 95 "engines/hypno/lexer_arc.l"
+#line 103 "engines/hypno/lexer_arc.l"
HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 96 "engines/hypno/lexer_arc.l"
+#line 104 "engines/hypno/lexer_arc.l"
HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 97 "engines/hypno/lexer_arc.l"
+#line 105 "engines/hypno/lexer_arc.l"
return RESTOK;
YY_BREAK
case 56:
/* rule 56 can match eol */
YY_RULE_SETUP
-#line 98 "engines/hypno/lexer_arc.l"
+#line 106 "engines/hypno/lexer_arc.l"
return RETTOK;
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 99 "engines/hypno/lexer_arc.l"
+#line 107 "engines/hypno/lexer_arc.l"
/* ignore comment */
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 100 "engines/hypno/lexer_arc.l"
+#line 108 "engines/hypno/lexer_arc.l"
/* ignore whitespace */;
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 101 "engines/hypno/lexer_arc.l"
+#line 109 "engines/hypno/lexer_arc.l"
HYPNO_ARC_lval.i = HYPNO_ARC_text[0]; return BYTE;
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 102 "engines/hypno/lexer_arc.l"
+#line 110 "engines/hypno/lexer_arc.l"
ECHO;
YY_BREAK
-#line 1456 "engines/hypno/lexer_arc.cpp"
+#line 1464 "engines/hypno/lexer_arc.cpp"
case YY_STATE_EOF(INITIAL):
yyterminate();
@@ -2438,7 +2438,7 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 102 "engines/hypno/lexer_arc.l"
+#line 110 "engines/hypno/lexer_arc.l"
namespace Hypno {
diff --git a/engines/hypno/lexer_mis.cpp b/engines/hypno/lexer_mis.cpp
index f5b2dd1c9ce..e3fd96d4a7d 100644
--- a/engines/hypno/lexer_mis.cpp
+++ b/engines/hypno/lexer_mis.cpp
@@ -909,8 +909,8 @@ char *yytext;
#include "hypno/grammar.h"
#include "hypno/tokens_mis.h"
-#line 904 "engines/hypno/lexer_mis.cpp"
-#line 905 "engines/hypno/lexer_mis.cpp"
+#line 912 "engines/hypno/lexer_mis.cpp"
+#line 913 "engines/hypno/lexer_mis.cpp"
#define INITIAL 0
@@ -1125,9 +1125,9 @@ YY_DECL
}
{
-#line 41 "engines/hypno/lexer_mis.l"
+#line 49 "engines/hypno/lexer_mis.l"
-#line 1122 "engines/hypno/lexer_mis.cpp"
+#line 1130 "engines/hypno/lexer_mis.cpp"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -1192,261 +1192,261 @@ do_action: /* This label is used only to access EOF actions. */
case 1:
YY_RULE_SETUP
-#line 42 "engines/hypno/lexer_mis.l"
+#line 50 "engines/hypno/lexer_mis.l"
/* return COMMENT; */
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 43 "engines/hypno/lexer_mis.l"
+#line 51 "engines/hypno/lexer_mis.l"
/* return COMMENT; */
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 44 "engines/hypno/lexer_mis.l"
+#line 52 "engines/hypno/lexer_mis.l"
return MENUTOK;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 45 "engines/hypno/lexer_mis.l"
+#line 53 "engines/hypno/lexer_mis.l"
return AMBITOK;
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 46 "engines/hypno/lexer_mis.l"
+#line 54 "engines/hypno/lexer_mis.l"
return BACKTOK;
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 47 "engines/hypno/lexer_mis.l"
+#line 55 "engines/hypno/lexer_mis.l"
return CUTSTOK;
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 48 "engines/hypno/lexer_mis.l"
+#line 56 "engines/hypno/lexer_mis.l"
return GLOBTOK;
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 49 "engines/hypno/lexer_mis.l"
+#line 57 "engines/hypno/lexer_mis.l"
return PALETOK;
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 50 "engines/hypno/lexer_mis.l"
+#line 58 "engines/hypno/lexer_mis.l"
return HOTSTOK;
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 51 "engines/hypno/lexer_mis.l"
+#line 59 "engines/hypno/lexer_mis.l"
return MICETOK;
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 52 "engines/hypno/lexer_mis.l"
+#line 60 "engines/hypno/lexer_mis.l"
return ENDTOK;
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 53 "engines/hypno/lexer_mis.l"
+#line 61 "engines/hypno/lexer_mis.l"
return TIMETOK;
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 54 "engines/hypno/lexer_mis.l"
+#line 62 "engines/hypno/lexer_mis.l"
return OVERTOK;
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 55 "engines/hypno/lexer_mis.l"
+#line 63 "engines/hypno/lexer_mis.l"
return SMENTOK;
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 56 "engines/hypno/lexer_mis.l"
+#line 64 "engines/hypno/lexer_mis.l"
return ESCPTOK;
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 57 "engines/hypno/lexer_mis.l"
+#line 65 "engines/hypno/lexer_mis.l"
return PLAYTOK;
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 58 "engines/hypno/lexer_mis.l"
+#line 66 "engines/hypno/lexer_mis.l"
return SONDTOK;
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 59 "engines/hypno/lexer_mis.l"
+#line 67 "engines/hypno/lexer_mis.l"
return TALKTOK;
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 60 "engines/hypno/lexer_mis.l"
+#line 68 "engines/hypno/lexer_mis.l"
return INACTOK;
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 61 "engines/hypno/lexer_mis.l"
+#line 69 "engines/hypno/lexer_mis.l"
return FDTOK;
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 62 "engines/hypno/lexer_mis.l"
+#line 70 "engines/hypno/lexer_mis.l"
return BOXXTOK;
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 63 "engines/hypno/lexer_mis.l"
+#line 71 "engines/hypno/lexer_mis.l"
return MPTRTOK;
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 64 "engines/hypno/lexer_mis.l"
+#line 72 "engines/hypno/lexer_mis.l"
return ESCAPETOK;
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 65 "engines/hypno/lexer_mis.l"
+#line 73 "engines/hypno/lexer_mis.l"
return SECONDTOK;
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 66 "engines/hypno/lexer_mis.l"
+#line 74 "engines/hypno/lexer_mis.l"
return INTROTOK;
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 67 "engines/hypno/lexer_mis.l"
+#line 75 "engines/hypno/lexer_mis.l"
return INTRTOK;
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 68 "engines/hypno/lexer_mis.l"
+#line 76 "engines/hypno/lexer_mis.l"
return SWPTTOK;
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 69 "engines/hypno/lexer_mis.l"
+#line 77 "engines/hypno/lexer_mis.l"
return DEFAULTTOK;
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 70 "engines/hypno/lexer_mis.l"
+#line 78 "engines/hypno/lexer_mis.l"
HYPNO_MIS_lval.s = scumm_strdup(HYPNO_MIS_text); return WALNTOK;
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 71 "engines/hypno/lexer_mis.l"
+#line 79 "engines/hypno/lexer_mis.l"
HYPNO_MIS_lval.s = scumm_strdup(HYPNO_MIS_text); return PS;
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 72 "engines/hypno/lexer_mis.l"
+#line 80 "engines/hypno/lexer_mis.l"
HYPNO_MIS_lval.s = scumm_strdup(HYPNO_MIS_text); return PG;
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 73 "engines/hypno/lexer_mis.l"
+#line 81 "engines/hypno/lexer_mis.l"
HYPNO_MIS_lval.s = scumm_strdup(HYPNO_MIS_text); return PP;
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 74 "engines/hypno/lexer_mis.l"
+#line 82 "engines/hypno/lexer_mis.l"
HYPNO_MIS_lval.s = scumm_strdup(HYPNO_MIS_text); return PI;
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 75 "engines/hypno/lexer_mis.l"
+#line 83 "engines/hypno/lexer_mis.l"
HYPNO_MIS_lval.s = scumm_strdup(HYPNO_MIS_text); return PH;
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 76 "engines/hypno/lexer_mis.l"
+#line 84 "engines/hypno/lexer_mis.l"
HYPNO_MIS_lval.s = scumm_strdup(HYPNO_MIS_text); return PA;
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 77 "engines/hypno/lexer_mis.l"
+#line 85 "engines/hypno/lexer_mis.l"
HYPNO_MIS_lval.s = scumm_strdup(HYPNO_MIS_text); return PD;
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 78 "engines/hypno/lexer_mis.l"
+#line 86 "engines/hypno/lexer_mis.l"
HYPNO_MIS_lval.s = scumm_strdup(HYPNO_MIS_text); return PF;
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 79 "engines/hypno/lexer_mis.l"
+#line 87 "engines/hypno/lexer_mis.l"
return PE;
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 80 "engines/hypno/lexer_mis.l"
+#line 88 "engines/hypno/lexer_mis.l"
return PL;
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 81 "engines/hypno/lexer_mis.l"
+#line 89 "engines/hypno/lexer_mis.l"
HYPNO_MIS_lval.s = scumm_strdup(HYPNO_MIS_text); return ENCTOK;
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 82 "engines/hypno/lexer_mis.l"
+#line 90 "engines/hypno/lexer_mis.l"
HYPNO_MIS_lval.s = scumm_strdup(HYPNO_MIS_text); return ENCTOK;
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 83 "engines/hypno/lexer_mis.l"
+#line 91 "engines/hypno/lexer_mis.l"
HYPNO_MIS_lval.s = scumm_strdup(HYPNO_MIS_text); return GSSWITCH;
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 84 "engines/hypno/lexer_mis.l"
+#line 92 "engines/hypno/lexer_mis.l"
return BBOXTOK;
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 85 "engines/hypno/lexer_mis.l"
+#line 93 "engines/hypno/lexer_mis.l"
HYPNO_MIS_lval.s = scumm_strdup(HYPNO_MIS_text); return FLAG;
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 86 "engines/hypno/lexer_mis.l"
+#line 94 "engines/hypno/lexer_mis.l"
HYPNO_MIS_lval.s = scumm_strdup(HYPNO_MIS_text); return NAME;
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 87 "engines/hypno/lexer_mis.l"
+#line 95 "engines/hypno/lexer_mis.l"
HYPNO_MIS_lval.s = scumm_strdup(HYPNO_MIS_text); return FILENAME;
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 88 "engines/hypno/lexer_mis.l"
+#line 96 "engines/hypno/lexer_mis.l"
HYPNO_MIS_lval.i = atoi(HYPNO_MIS_text); return NUM;
YY_BREAK
case 48:
/* rule 48 can match eol */
YY_RULE_SETUP
-#line 89 "engines/hypno/lexer_mis.l"
+#line 97 "engines/hypno/lexer_mis.l"
return RETTOK;
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 90 "engines/hypno/lexer_mis.l"
+#line 98 "engines/hypno/lexer_mis.l"
/* ignore whitespace */;
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 91 "engines/hypno/lexer_mis.l"
+#line 99 "engines/hypno/lexer_mis.l"
debugC(1, Hypno::kHypnoDebugParser, "<no match: %c>", *yytext); return *yytext;
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 92 "engines/hypno/lexer_mis.l"
+#line 100 "engines/hypno/lexer_mis.l"
ECHO;
YY_BREAK
-#line 1441 "engines/hypno/lexer_mis.cpp"
+#line 1449 "engines/hypno/lexer_mis.cpp"
case YY_STATE_EOF(INITIAL):
yyterminate();
@@ -2423,7 +2423,7 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 92 "engines/hypno/lexer_mis.l"
+#line 100 "engines/hypno/lexer_mis.l"
namespace Hypno {
More information about the Scummvm-git-logs
mailing list