[Scummvm-git-logs] scummvm master -> 99044b349ba26877b348166dc66206318abc5471
neuromancer
noreply at scummvm.org
Mon Apr 11 19:30:56 UTC 2022
This automated email contains information about 16 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
37ff8859e7 HYPNO: load a few levels more in boyz
f67b4a1fe5 HYPNO: preliminary rendering of health and ammo bars in boyz
c20499b789 HYPNO: change weapons according to the script in boyz
0716bf254f HYPNO: shuffle weapon targets in boyz
6cb99813a2 HYPNO: refactored arcade transitions into a dedicated data structure
2ee96a1d8d HYPNO: add a condition to check if the first door is open in level c60 in wet
fe610854fd HYPNO: return to main menu after game over in the full version of wet
68004ec9b5 HYPNO: improved parser to allow to load c16 level in boyz
b50b506ba4 HYPNO: added Soldier Boyz to the original copyright string
66398db645 HYPNO: implemented sound transition in boyz
034051a5d4 HYPNO: improved parser to load level c17 in boyz
5d0b07c86c HYPNO: fixed ui offsets in last level of wet
1e8343b956 HYPNO: refactor code for handling player frames to allow changes during levels in wet
606dbe60f1 HYPNO: correctly play explosions animations avoiding separator frames in wet
baa7d670da HYPNO: set a better default value for frame separator in wet
99044b349b HYPNO: refactor to use color constants loaded from the current palette
Commit: 37ff8859e7acb91808b6a4d22450c08d3a8110ce
https://github.com/scummvm/scummvm/commit/37ff8859e7acb91808b6a4d22450c08d3a8110ce
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-04-11T21:17:33+02:00
Commit Message:
HYPNO: load a few levels more in boyz
Changed paths:
engines/hypno/boyz/boyz.cpp
engines/hypno/lexer_arc.cpp
engines/hypno/lexer_arc.l
diff --git a/engines/hypno/boyz/boyz.cpp b/engines/hypno/boyz/boyz.cpp
index 0d2722b49af..8c348e9301e 100644
--- a/engines/hypno/boyz/boyz.cpp
+++ b/engines/hypno/boyz/boyz.cpp
@@ -40,7 +40,8 @@ void BoyzEngine::loadAssets() {
loadArcadeLevel("c11.mi_", "c12.mi_", "??", "");
loadArcadeLevel("c12.mi_", "c14.mi_", "??", "");
//loadArcadeLevel("c13.mi_", "??", "??", "");
- loadArcadeLevel("c14.mi_", "??", "??", "");
+ loadArcadeLevel("c14.mi_", "c15.mi_", "??", "");
+ loadArcadeLevel("c15.mi_", "c16.mi_", "??", "");
loadLib("sound/", "misc/sound.lib", true);
diff --git a/engines/hypno/lexer_arc.cpp b/engines/hypno/lexer_arc.cpp
index 34366e36191..19de6982b7f 100644
--- a/engines/hypno/lexer_arc.cpp
+++ b/engines/hypno/lexer_arc.cpp
@@ -689,24 +689,24 @@ static const YY_CHAR yy_ec[256] =
static const YY_CHAR yy_meta[46] =
{ 0,
- 1, 1, 2, 1, 1, 1, 1, 3, 4, 4,
- 4, 4, 4, 1, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 1
+ 1, 1, 2, 1, 1, 1, 3, 4, 5, 5,
+ 5, 5, 5, 1, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 1
} ;
static const flex_int16_t yy_base[91] =
{ 0,
- 0, 0, 217, 218, 214, 218, 218, 37, 42, 47,
- 52, 57, 0, 63, 92, 207, 206, 205, 65, 204,
- 87, 72, 75, 77, 203, 202, 86, 108, 84, 201,
- 111, 115, 88, 200, 191, 186, 184, 106, 183, 0,
+ 0, 0, 219, 220, 216, 220, 220, 37, 42, 47,
+ 52, 57, 0, 63, 92, 209, 208, 207, 65, 206,
+ 87, 72, 75, 77, 205, 204, 86, 108, 84, 203,
+ 111, 115, 88, 202, 192, 186, 184, 106, 183, 0,
188, 124, 0, 129, 142, 118, 121, 185, 0, 180,
178, 176, 175, 174, 173, 172, 171, 170, 169, 168,
- 166, 165, 218, 137, 164, 163, 162, 161, 154, 152,
- 0, 0, 218, 0, 218, 150, 155, 149, 147, 136,
- 122, 120, 218, 218, 193, 197, 199, 201, 77, 203
+ 166, 165, 220, 137, 164, 163, 162, 161, 154, 152,
+ 0, 0, 220, 0, 220, 150, 155, 149, 147, 136,
+ 122, 120, 220, 220, 193, 198, 200, 202, 76, 204
} ;
static const flex_int16_t yy_def[91] =
@@ -722,7 +722,7 @@ static const flex_int16_t yy_def[91] =
84, 84, 84, 0, 84, 84, 84, 84, 84, 84
} ;
-static const flex_int16_t yy_nxt[264] =
+static const flex_int16_t yy_nxt[266] =
{ 0,
4, 5, 6, 7, 4, 4, 8, 4, 9, 10,
11, 12, 9, 13, 14, 15, 16, 17, 18, 19,
@@ -744,18 +744,18 @@ static const flex_int16_t yy_nxt[264] =
74, 49, 75, 43, 78, 84, 72, 80, 49, 49,
49, 49, 49, 49, 43, 49, 49, 49, 49, 49,
49, 49, 49, 49, 72, 49, 73, 49, 77, 41,
- 49, 49, 43, 49, 84, 43, 43, 48, 49, 48,
+ 49, 49, 43, 49, 84, 43, 43, 43, 48, 49,
- 48, 51, 51, 70, 70, 49, 49, 49, 49, 49,
- 49, 49, 49, 49, 49, 41, 84, 3, 84, 84,
+ 48, 48, 48, 51, 51, 70, 70, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 41, 84, 3,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84
+ 84, 84, 84, 84, 84
} ;
-static const flex_int16_t yy_chk[264] =
+static const flex_int16_t yy_chk[266] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -777,15 +777,15 @@ static const flex_int16_t yy_chk[264] =
46, 69, 46, 47, 64, 47, 45, 78, 68, 67,
66, 65, 62, 61, 76, 60, 59, 58, 57, 56,
55, 54, 53, 52, 45, 51, 45, 50, 48, 41,
- 39, 37, 76, 36, 76, 85, 85, 86, 35, 86,
+ 39, 37, 76, 36, 76, 85, 85, 85, 86, 35,
- 86, 87, 87, 88, 88, 90, 90, 34, 30, 26,
- 25, 20, 18, 17, 16, 5, 3, 84, 84, 84,
+ 86, 86, 86, 87, 87, 88, 88, 90, 90, 34,
+ 30, 26, 25, 20, 18, 17, 16, 5, 3, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84
+ 84, 84, 84, 84, 84
} ;
/* Table of booleans, true if rule could match eol. */
diff --git a/engines/hypno/lexer_arc.l b/engines/hypno/lexer_arc.l
index ae5e0a5f1fd..41a87443f99 100644
--- a/engines/hypno/lexer_arc.l
+++ b/engines/hypno/lexer_arc.l
@@ -87,7 +87,7 @@ Y[A-Z0-9] HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return YXTOK;
[\-]?[0-9]+ HYPNO_ARC_lval.i = atoi(HYPNO_ARC_text); return NUM;
[A-Za-z_][A-Za-z_0-9]* HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return NAME;
[A-Za-z][A-Za-z_0-9\\\.]+ HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
-[0-9][A-Za-z_0-9\\\.]+ HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
+[0-9][\-A-Za-z_0-9\\\.]+ HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
320\,200 return RESTOK;
[\n|\r\n] return RETTOK;
\;.+\r /* ignore comment */
Commit: f67b4a1fe5d20625a30d8b70d2634f069c894e28
https://github.com/scummvm/scummvm/commit/f67b4a1fe5d20625a30d8b70d2634f069c894e28
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-04-11T21:17:33+02:00
Commit Message:
HYPNO: preliminary rendering of health and ammo bars in boyz
Changed paths:
engines/hypno/boyz/arcade.cpp
diff --git a/engines/hypno/boyz/arcade.cpp b/engines/hypno/boyz/arcade.cpp
index 5eb8e5f3d32..1e965bdd467 100644
--- a/engines/hypno/boyz/arcade.cpp
+++ b/engines/hypno/boyz/arcade.cpp
@@ -91,7 +91,17 @@ void BoyzEngine::drawPlayer() {
void BoyzEngine::drawHealth() {
updateFromScript();
+
+ // Health
+ Common::Rect healthBarBox(0, 0, _healthBar[_currentActor].w, _healthBar[_currentActor].h/2);
+ uint32 c = 252; // white
+ _compositeSurface->fillRect(healthBarBox, c);
drawImage(_healthBar[_currentActor], 0, 0, true);
+
+ // Ammo
+ Common::Rect ammoBarBox(320 - _ammoBar[_currentActor].w, 0, 320, _ammoBar[_currentActor].h/2);
+ c = 251; // green
+ _compositeSurface->fillRect(ammoBarBox, c);
drawImage(_ammoBar[_currentActor], 320 - _ammoBar[_currentActor].w, 0, true);
}
void BoyzEngine::hitPlayer() {
Commit: c20499b789c2ec7762962d472a94e4e209c902d9
https://github.com/scummvm/scummvm/commit/c20499b789c2ec7762962d472a94e4e209c902d9
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-04-11T21:17:33+02:00
Commit Message:
HYPNO: change weapons according to the script in boyz
Changed paths:
engines/hypno/boyz/arcade.cpp
engines/hypno/boyz/boyz.cpp
engines/hypno/hypno.h
diff --git a/engines/hypno/boyz/arcade.cpp b/engines/hypno/boyz/arcade.cpp
index 1e965bdd467..7652eb485bc 100644
--- a/engines/hypno/boyz/arcade.cpp
+++ b/engines/hypno/boyz/arcade.cpp
@@ -46,10 +46,7 @@ void BoyzEngine::runBeforeArcade(ArcadeShooting *arc) {
_playerFrameIdx = -1;
_currentScript = arc->script;
- ScriptInfo si = *_currentScript.begin();
- _currentActor = si.actor - 1;
- _currentMode = si.mode;
- _currentScript.pop_front();
+ updateFromScript();
}
void BoyzEngine::runAfterArcade(ArcadeShooting *arc) {
@@ -63,25 +60,30 @@ void BoyzEngine::updateFromScript() {
if (_currentScript.size() > 0) {
ScriptInfo si = *_currentScript.begin();
//debug("%d %d %d", si.time, _background->decoder->getCurFrame(), si.actor);
- if (int(si.time) <= _background->decoder->getCurFrame()) {
+ if (!_background || int(si.time) <= _background->decoder->getCurFrame()) {
_currentActor = si.actor - 1;
_currentMode = si.mode;
+ _currentWeapon = si.cursor - 1;
_currentScript.pop_front();
+
+ if (_currentMode == NonInteractive)
+ changeCursor(_crosshairsInactive[_currentWeapon], _crosshairsPalette, true);
+ else
+ changeCursor(_crosshairsActive[_currentWeapon], _crosshairsPalette, true);
}
}
}
void BoyzEngine::drawCursorArcade(const Common::Point &mousePos) {
if (_currentMode == NonInteractive) {
- changeCursor(_crosshairsInactive[0], _crosshairsPalette, true);
return;
}
int i = detectTarget(mousePos);
if (i >= 0)
- changeCursor(_crosshairsTarget[0], _crosshairsPalette, true);
+ changeCursor(_crosshairsTarget[_currentWeapon], _crosshairsPalette, true);
else
- changeCursor(_crosshairsActive[0], _crosshairsPalette, true);
+ changeCursor(_crosshairsActive[_currentWeapon], _crosshairsPalette, true);
}
void BoyzEngine::drawPlayer() {
@@ -141,7 +143,11 @@ int BoyzEngine::detectTarget(const Common::Point &mousePos) {
}
void BoyzEngine::shoot(const Common::Point &mousePos, ArcadeShooting *arc, MVideo &background) {
- playSound(_soundPath + _weaponShootSound[0], 1);
+ if (_currentMode == NonInteractive) {
+ return;
+ }
+
+ playSound(_soundPath + _weaponShootSound[_currentWeapon], 1);
incShotsFired();
int i = detectTarget(mousePos);
if (i < 0) {
@@ -161,7 +167,7 @@ void BoyzEngine::shoot(const Common::Point &mousePos, ArcadeShooting *arc, MVide
background.decoder->forceSeekToFrame(_shoots[i].explosionFrames[0].start - 3);
_masks->decoder->forceSeekToFrame(_shoots[i].explosionFrames[0].start - 3);
_shoots.clear();
- changeCursor(_crosshairsActive[0], _crosshairsPalette, true);
+ changeCursor(_crosshairsActive[_currentWeapon], _crosshairsPalette, true);
}
}
diff --git a/engines/hypno/boyz/boyz.cpp b/engines/hypno/boyz/boyz.cpp
index 8c348e9301e..a037bec3ab6 100644
--- a/engines/hypno/boyz/boyz.cpp
+++ b/engines/hypno/boyz/boyz.cpp
@@ -30,6 +30,7 @@ BoyzEngine::BoyzEngine(OSystem *syst, const ADGameDescription *gd) : HypnoEngine
_screenW = 320;
_screenH = 200;
_lives = 2;
+ _currentWeapon = 0;
}
void BoyzEngine::loadAssets() {
@@ -46,8 +47,11 @@ void BoyzEngine::loadAssets() {
loadLib("sound/", "misc/sound.lib", true);
_weaponShootSound[0] = "pstlfire.raw";
- _weaponShootSound[2] = "ak47fire.raw";
+ _weaponShootSound[1] = "ak47fire.raw";
+ _weaponShootSound[2] = "dblfire.raw";
+ _weaponShootSound[3] = "m16fire.raw";
_weaponShootSound[4] = "shotfire.raw";
+ _weaponShootSound[5] = "glm60fr.raw";
Graphics::Surface *targets = decodeFrame("preload/targets.smk", 0, &_crosshairsPalette);
@@ -63,6 +67,87 @@ void BoyzEngine::loadAssets() {
_crosshairsTarget[0].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
_crosshairsTarget[0].copyRectToSurface(*targets, 0, 0, cursorBox);
+ cursorBox = Common::Rect(62, 6, 83, 26);
+ _crosshairsInactive[1].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsInactive[1].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ cursorBox = Common::Rect(62, 38, 83, 58);
+ _crosshairsActive[1].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsActive[1].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ cursorBox = Common::Rect(62, 70, 83, 90);
+ _crosshairsTarget[1].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsTarget[1].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ //
+ cursorBox = Common::Rect(104, 7, 136, 25);
+ _crosshairsInactive[2].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsInactive[2].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ cursorBox = Common::Rect(104, 39, 136, 57);
+ _crosshairsActive[2].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsActive[2].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ cursorBox = Common::Rect(104, 71, 136, 83);
+ _crosshairsTarget[2].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsTarget[2].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ //
+
+ cursorBox = Common::Rect(163, 11, 173, 21);
+ _crosshairsInactive[3].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsInactive[3].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ cursorBox = Common::Rect(163, 43, 173, 53);
+ _crosshairsActive[3].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsActive[3].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ cursorBox = Common::Rect(163, 75, 173, 85);
+ _crosshairsTarget[3].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsTarget[3].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ // Shotgun
+
+ cursorBox = Common::Rect(203, 11, 229, 21);
+ _crosshairsInactive[4].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsInactive[4].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ cursorBox = Common::Rect(203, 43, 229, 53);
+ _crosshairsActive[4].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsActive[4].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ cursorBox = Common::Rect(203, 75, 229, 85);
+ _crosshairsTarget[4].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsTarget[4].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ // Granade
+
+ cursorBox = Common::Rect(256, 2, 273, 29);
+ _crosshairsInactive[5].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsInactive[5].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ cursorBox = Common::Rect(256, 34, 273, 61);
+ _crosshairsActive[5].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsActive[5].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ cursorBox = Common::Rect(256, 66, 273, 93);
+ _crosshairsTarget[5].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsTarget[5].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ // Large crossair
+
+ cursorBox = Common::Rect(56, 98, 88, 125);
+ _crosshairsInactive[6].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsInactive[6].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ cursorBox = Common::Rect(57, 130, 88, 158);
+ _crosshairsActive[6].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsActive[6].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ cursorBox = Common::Rect(57, 162, 88, 189);
+ _crosshairsTarget[6].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsTarget[6].copyRectToSurface(*targets, 0, 0, cursorBox);
+
_nextLevel = "c11.mi_";
}
diff --git a/engines/hypno/hypno.h b/engines/hypno/hypno.h
index 4ec29790cac..281eca5efc5 100644
--- a/engines/hypno/hypno.h
+++ b/engines/hypno/hypno.h
@@ -487,7 +487,7 @@ public:
Script _currentScript;
ScriptMode _currentMode;
uint32 _currentActor;
- uint32 _currentCursor;
+ uint32 _currentWeapon;
};
Commit: 0716bf254f0808960e11abe8fc845ea44787f30c
https://github.com/scummvm/scummvm/commit/0716bf254f0808960e11abe8fc845ea44787f30c
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-04-11T21:17:33+02:00
Commit Message:
HYPNO: shuffle weapon targets in boyz
Changed paths:
engines/hypno/boyz/boyz.cpp
diff --git a/engines/hypno/boyz/boyz.cpp b/engines/hypno/boyz/boyz.cpp
index a037bec3ab6..8b0338387d4 100644
--- a/engines/hypno/boyz/boyz.cpp
+++ b/engines/hypno/boyz/boyz.cpp
@@ -55,45 +55,33 @@ void BoyzEngine::loadAssets() {
Graphics::Surface *targets = decodeFrame("preload/targets.smk", 0, &_crosshairsPalette);
- Common::Rect cursorBox = Common::Rect(16, 8, 32, 24);
+ Common::Rect cursorBox;
+
+ // Pistol?
+ cursorBox = Common::Rect(62, 6, 83, 26);
_crosshairsInactive[0].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
_crosshairsInactive[0].copyRectToSurface(*targets, 0, 0, cursorBox);
- cursorBox = Common::Rect(16, 40, 32, 56);
+ cursorBox = Common::Rect(62, 38, 83, 58);
_crosshairsActive[0].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
_crosshairsActive[0].copyRectToSurface(*targets, 0, 0, cursorBox);
- cursorBox = Common::Rect(16, 72, 32, 88);
+ cursorBox = Common::Rect(62, 70, 83, 90);
_crosshairsTarget[0].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
_crosshairsTarget[0].copyRectToSurface(*targets, 0, 0, cursorBox);
- cursorBox = Common::Rect(62, 6, 83, 26);
- _crosshairsInactive[1].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
- _crosshairsInactive[1].copyRectToSurface(*targets, 0, 0, cursorBox);
-
- cursorBox = Common::Rect(62, 38, 83, 58);
- _crosshairsActive[1].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
- _crosshairsActive[1].copyRectToSurface(*targets, 0, 0, cursorBox);
-
- cursorBox = Common::Rect(62, 70, 83, 90);
- _crosshairsTarget[1].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
- _crosshairsTarget[1].copyRectToSurface(*targets, 0, 0, cursorBox);
-
- //
- cursorBox = Common::Rect(104, 7, 136, 25);
+ cursorBox = Common::Rect(16, 8, 32, 24);
_crosshairsInactive[2].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
_crosshairsInactive[2].copyRectToSurface(*targets, 0, 0, cursorBox);
- cursorBox = Common::Rect(104, 39, 136, 57);
+ cursorBox = Common::Rect(16, 40, 32, 56);
_crosshairsActive[2].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
_crosshairsActive[2].copyRectToSurface(*targets, 0, 0, cursorBox);
- cursorBox = Common::Rect(104, 71, 136, 83);
+ cursorBox = Common::Rect(16, 72, 32, 88);
_crosshairsTarget[2].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
_crosshairsTarget[2].copyRectToSurface(*targets, 0, 0, cursorBox);
- //
-
cursorBox = Common::Rect(163, 11, 173, 21);
_crosshairsInactive[3].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
_crosshairsInactive[3].copyRectToSurface(*targets, 0, 0, cursorBox);
@@ -107,7 +95,20 @@ void BoyzEngine::loadAssets() {
_crosshairsTarget[3].copyRectToSurface(*targets, 0, 0, cursorBox);
// Shotgun
+ cursorBox = Common::Rect(104, 7, 136, 25);
+ _crosshairsInactive[4].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsInactive[4].copyRectToSurface(*targets, 0, 0, cursorBox);
+ cursorBox = Common::Rect(104, 39, 136, 57);
+ _crosshairsActive[4].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsActive[4].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ cursorBox = Common::Rect(104, 71, 136, 83);
+ _crosshairsTarget[4].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
+ _crosshairsTarget[4].copyRectToSurface(*targets, 0, 0, cursorBox);
+
+ // Double small
+ /*
cursorBox = Common::Rect(203, 11, 229, 21);
_crosshairsInactive[4].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
_crosshairsInactive[4].copyRectToSurface(*targets, 0, 0, cursorBox);
@@ -147,7 +148,7 @@ void BoyzEngine::loadAssets() {
cursorBox = Common::Rect(57, 162, 88, 189);
_crosshairsTarget[6].create(cursorBox.width(), cursorBox.height(), _pixelFormat);
_crosshairsTarget[6].copyRectToSurface(*targets, 0, 0, cursorBox);
-
+ */
_nextLevel = "c11.mi_";
}
Commit: 6cb99813a21e6300ebc6e81020235d51c9423d1f
https://github.com/scummvm/scummvm/commit/6cb99813a21e6300ebc6e81020235d51c9423d1f
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-04-11T21:17:33+02:00
Commit Message:
HYPNO: refactored arcade transitions into a dedicated data structure
Changed paths:
engines/hypno/arcade.cpp
engines/hypno/grammar.h
engines/hypno/grammar_arc.cpp
engines/hypno/grammar_arc.y
diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index e78aa71b651..b09b8236abb 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -327,32 +327,30 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
break;
}
- if (!arc->transitionVideos.empty() && _background->decoder->getCurFrame() > (int)*arc->transitionTimes.begin()) {
- transition = true;
- _background->decoder->pauseVideo(true);
-
- Filename transitionVideo = *arc->transitionVideos.begin();
- Filename transitionPalette = *arc->transitionPalettes.begin();
-
- debugC(1, kHypnoDebugArcade, "Playing transition %s", transitionVideo.c_str());
- MVideo video(transitionVideo, Common::Point(0, 0), false, true, false);
- disableCursor();
- runIntro(video);
+ if (!arc->transitions.empty()) {
+ ArcadeTransition at = *arc->transitions.begin();
+ if (_background->decoder->getCurFrame() > (int) at.time) {
+ transition = true;
+ _background->decoder->pauseVideo(true);
+
+ debugC(1, kHypnoDebugArcade, "Playing transition %s", at.video.c_str());
+ MVideo video(at.video, Common::Point(0, 0), false, true, false);
+ disableCursor();
+ runIntro(video);
- if (!transitionPalette.empty())
- currentPalette = transitionPalette;
+ if (!at.palette.empty())
+ currentPalette = at.palette;
- loadPalette(currentPalette);
- _background->decoder->pauseVideo(false);
- updateScreen(*_background);
- drawScreen();
- drawCursorArcade(mousePos);
+ loadPalette(currentPalette);
+ _background->decoder->pauseVideo(false);
+ updateScreen(*_background);
+ drawScreen();
+ drawCursorArcade(mousePos);
- arc->transitionVideos.pop_front();
- arc->transitionPalettes.pop_front();
- arc->transitionTimes.pop_front();
- if (!_music.empty())
- playSound(_music, 0, arc->musicRate); // restore music
+ arc->transitions.pop_front();
+ if (!_music.empty())
+ playSound(_music, 0, arc->musicRate); // restore music
+ }
}
if (_background->decoder && _background->decoder->getCurFrame() >= int(segments[_segmentIdx].start + segments[_segmentIdx].size - 2)) {
diff --git a/engines/hypno/grammar.h b/engines/hypno/grammar.h
index e4d9c5b78d7..df01dd2ddc8 100644
--- a/engines/hypno/grammar.h
+++ b/engines/hypno/grammar.h
@@ -494,6 +494,23 @@ public:
typedef Common::Array<Segment> Segments;
+class ArcadeTransition {
+public:
+ ArcadeTransition(Filename video_, Filename palette_, Filename audio_, uint32 time_) {
+ video = video_;
+ palette = palette_;
+ audio = audio_;
+ time = time_;
+ }
+
+ Filename video;
+ Filename palette;
+ Filename audio;
+ uint32 time;
+};
+
+typedef Common::List<ArcadeTransition> ArcadeTransitions;
+
class ArcadeShooting : public Level {
public:
ArcadeShooting() {
@@ -509,9 +526,7 @@ public:
void clear() {
nextLevelVideo.clear();
backgroundVideo.clear();
- transitionVideos.clear();
- transitionTimes.clear();
- transitionPalettes.clear();
+ transitions.clear();
maskVideo.clear();
player.clear();
shoots.clear();
@@ -533,7 +548,7 @@ public:
uint32 id;
uint32 frameDelay;
Common::String mode;
- Common::List<uint32> transitionTimes;
+ ArcadeTransitions transitions;
Segments segments;
// Objectives
@@ -544,8 +559,6 @@ public:
Script script;
// Videos
- Common::List<Filename> transitionVideos;
- Common::List<Filename> transitionPalettes;
Filename nextLevelVideo;
Filename defeatNoEnergyFirstVideo;
Filename defeatNoEnergySecondVideo;
diff --git a/engines/hypno/grammar_arc.cpp b/engines/hypno/grammar_arc.cpp
index bb9712af8e4..8ea27ed10e3 100644
--- a/engines/hypno/grammar_arc.cpp
+++ b/engines/hypno/grammar_arc.cpp
@@ -585,14 +585,14 @@ static const yytype_int16 yyrline[] =
{
0, 78, 78, 78, 79, 82, 83, 84, 87, 91,
95, 99, 100, 101, 105, 110, 111, 112, 117, 127,
- 136, 142, 148, 149, 153, 157, 160, 164, 167, 168,
- 194, 216, 222, 227, 232, 238, 243, 248, 253, 258,
- 263, 270, 271, 274, 275, 278, 279, 280, 283, 291,
- 294, 297, 300, 305, 310, 314, 318, 322, 326, 330,
- 334, 338, 342, 346, 350, 354, 358, 362, 366, 370,
- 374, 378, 382, 386, 390, 394, 397, 401, 406, 410,
- 415, 420, 424, 430, 434, 437, 438, 441, 445, 448,
- 453, 456, 460, 464, 473, 474, 477, 480, 483, 486
+ 136, 141, 146, 147, 151, 155, 158, 162, 165, 166,
+ 192, 214, 220, 225, 230, 236, 241, 246, 251, 256,
+ 261, 268, 269, 272, 273, 276, 277, 278, 281, 289,
+ 292, 295, 298, 303, 308, 312, 316, 320, 324, 328,
+ 332, 336, 340, 344, 348, 352, 356, 360, 364, 368,
+ 372, 376, 380, 384, 388, 392, 395, 399, 404, 408,
+ 413, 418, 422, 428, 432, 435, 436, 439, 443, 446,
+ 451, 454, 458, 462, 471, 472, 475, 478, 481, 484
};
#endif
@@ -1384,82 +1384,80 @@ yyreduce:
case 20: /* hline: TPTOK FILENAME NUM FILENAME */
#line 136 "engines/hypno/grammar_arc.y"
{
- g_parsedArc->transitionVideos.push_back((yyvsp[-2].s));
- g_parsedArc->transitionTimes.push_back((yyvsp[-1].i));
- g_parsedArc->transitionPalettes.push_back((yyvsp[0].s));
+ ArcadeTransition at((yyvsp[-2].s), (yyvsp[0].s), "", (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 1393 "engines/hypno/grammar_arc.cpp"
+#line 1392 "engines/hypno/grammar_arc.cpp"
break;
case 21: /* hline: TTOK FILENAME NUM */
-#line 142 "engines/hypno/grammar_arc.y"
+#line 141 "engines/hypno/grammar_arc.y"
{
- g_parsedArc->transitionVideos.push_back((yyvsp[-1].s));
- g_parsedArc->transitionTimes.push_back((yyvsp[0].i));
- g_parsedArc->transitionPalettes.push_back("");
+ ArcadeTransition at((yyvsp[-1].s), "", "", (yyvsp[0].i));
+ g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "T %s %d", (yyvsp[-1].s), (yyvsp[0].i));
}
-#line 1404 "engines/hypno/grammar_arc.cpp"
+#line 1402 "engines/hypno/grammar_arc.cpp"
break;
case 22: /* hline: TTOK NONETOK NUM */
-#line 148 "engines/hypno/grammar_arc.y"
+#line 146 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "T NONE %d", (yyvsp[0].i)); }
-#line 1410 "engines/hypno/grammar_arc.cpp"
+#line 1408 "engines/hypno/grammar_arc.cpp"
break;
case 23: /* hline: NTOK FILENAME */
-#line 149 "engines/hypno/grammar_arc.y"
+#line 147 "engines/hypno/grammar_arc.y"
{
g_parsedArc->backgroundVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "N %s", (yyvsp[0].s));
}
-#line 1419 "engines/hypno/grammar_arc.cpp"
+#line 1417 "engines/hypno/grammar_arc.cpp"
break;
case 24: /* hline: NSTOK FILENAME */
-#line 153 "engines/hypno/grammar_arc.y"
+#line 151 "engines/hypno/grammar_arc.y"
{
g_parsedArc->backgroundVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "N* %s", (yyvsp[0].s));
}
-#line 1428 "engines/hypno/grammar_arc.cpp"
+#line 1426 "engines/hypno/grammar_arc.cpp"
break;
case 25: /* hline: RTOK FILENAME */
-#line 157 "engines/hypno/grammar_arc.y"
+#line 155 "engines/hypno/grammar_arc.y"
{
g_parsedArc->backgroundPalette = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "R %s", (yyvsp[0].s)); }
-#line 1436 "engines/hypno/grammar_arc.cpp"
+#line 1434 "engines/hypno/grammar_arc.cpp"
break;
case 26: /* hline: ITOK FILENAME */
-#line 160 "engines/hypno/grammar_arc.y"
+#line 158 "engines/hypno/grammar_arc.y"
{
g_parsedArc->player = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1445 "engines/hypno/grammar_arc.cpp"
+#line 1443 "engines/hypno/grammar_arc.cpp"
break;
case 27: /* hline: I1TOK FILENAME */
-#line 164 "engines/hypno/grammar_arc.y"
+#line 162 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "I1 %s", (yyvsp[0].s));
}
-#line 1453 "engines/hypno/grammar_arc.cpp"
+#line 1451 "engines/hypno/grammar_arc.cpp"
break;
case 28: /* hline: QTOK NUM NUM */
-#line 167 "engines/hypno/grammar_arc.y"
+#line 165 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "Q %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1459 "engines/hypno/grammar_arc.cpp"
+#line 1457 "engines/hypno/grammar_arc.cpp"
break;
case 29: /* hline: BNTOK FILENAME */
-#line 168 "engines/hypno/grammar_arc.y"
+#line 166 "engines/hypno/grammar_arc.y"
{
if (Common::String("B0") == (yyvsp[-1].s))
g_parsedArc->beforeVideo = (yyvsp[0].s);
@@ -1486,11 +1484,11 @@ yyreduce:
debugC(1, kHypnoDebugParser, "BN %s", (yyvsp[0].s));
}
-#line 1490 "engines/hypno/grammar_arc.cpp"
+#line 1488 "engines/hypno/grammar_arc.cpp"
break;
case 30: /* hline: SNTOK FILENAME enc flag */
-#line 194 "engines/hypno/grammar_arc.y"
+#line 192 "engines/hypno/grammar_arc.y"
{
uint32 sampleRate = 11025;
if (Common::String("22K") == (yyvsp[-1].s) || Common::String("22k") == (yyvsp[-1].s))
@@ -1513,137 +1511,137 @@ yyreduce:
}
debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-2].s));
}
-#line 1517 "engines/hypno/grammar_arc.cpp"
+#line 1515 "engines/hypno/grammar_arc.cpp"
break;
case 31: /* hline: HETOK BYTE NUM NUM */
-#line 216 "engines/hypno/grammar_arc.y"
+#line 214 "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 1528 "engines/hypno/grammar_arc.cpp"
+#line 1526 "engines/hypno/grammar_arc.cpp"
break;
case 32: /* hline: HLTOK BYTE NUM NUM */
-#line 222 "engines/hypno/grammar_arc.y"
+#line 220 "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 1538 "engines/hypno/grammar_arc.cpp"
+#line 1536 "engines/hypno/grammar_arc.cpp"
break;
case 33: /* hline: HUTOK BYTE NUM NUM */
-#line 227 "engines/hypno/grammar_arc.y"
+#line 225 "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 1548 "engines/hypno/grammar_arc.cpp"
+#line 1546 "engines/hypno/grammar_arc.cpp"
break;
case 34: /* hline: HTOK NAME NUM NUM */
-#line 232 "engines/hypno/grammar_arc.y"
+#line 230 "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 1559 "engines/hypno/grammar_arc.cpp"
+#line 1557 "engines/hypno/grammar_arc.cpp"
break;
case 35: /* hline: HTOK RTOK NUM NUM */
-#line 238 "engines/hypno/grammar_arc.y"
+#line 236 "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 1569 "engines/hypno/grammar_arc.cpp"
+#line 1567 "engines/hypno/grammar_arc.cpp"
break;
case 36: /* hline: HTOK ATOK NUM NUM */
-#line 243 "engines/hypno/grammar_arc.y"
+#line 241 "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 1579 "engines/hypno/grammar_arc.cpp"
+#line 1577 "engines/hypno/grammar_arc.cpp"
break;
case 37: /* hline: HTOK PTOK NUM NUM */
-#line 248 "engines/hypno/grammar_arc.y"
+#line 246 "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 1589 "engines/hypno/grammar_arc.cpp"
+#line 1587 "engines/hypno/grammar_arc.cpp"
break;
case 38: /* hline: HTOK LTOK NUM NUM */
-#line 253 "engines/hypno/grammar_arc.y"
+#line 251 "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 1599 "engines/hypno/grammar_arc.cpp"
+#line 1597 "engines/hypno/grammar_arc.cpp"
break;
case 39: /* hline: H12TOK BYTE NUM NUM */
-#line 258 "engines/hypno/grammar_arc.y"
+#line 256 "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 1609 "engines/hypno/grammar_arc.cpp"
+#line 1607 "engines/hypno/grammar_arc.cpp"
break;
case 40: /* hline: HTOK BYTE NUM NUM */
-#line 263 "engines/hypno/grammar_arc.y"
+#line 261 "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 1619 "engines/hypno/grammar_arc.cpp"
+#line 1617 "engines/hypno/grammar_arc.cpp"
break;
case 41: /* enc: ENCTOK */
-#line 270 "engines/hypno/grammar_arc.y"
+#line 268 "engines/hypno/grammar_arc.y"
{ (yyval.s) = (yyvsp[0].s); }
-#line 1625 "engines/hypno/grammar_arc.cpp"
+#line 1623 "engines/hypno/grammar_arc.cpp"
break;
case 42: /* enc: %empty */
-#line 271 "engines/hypno/grammar_arc.y"
+#line 269 "engines/hypno/grammar_arc.y"
{ (yyval.s) = scumm_strdup(""); }
-#line 1631 "engines/hypno/grammar_arc.cpp"
+#line 1629 "engines/hypno/grammar_arc.cpp"
break;
case 43: /* flag: NAME */
-#line 274 "engines/hypno/grammar_arc.y"
+#line 272 "engines/hypno/grammar_arc.y"
{ (yyval.s) = (yyvsp[0].s); }
-#line 1637 "engines/hypno/grammar_arc.cpp"
+#line 1635 "engines/hypno/grammar_arc.cpp"
break;
case 44: /* flag: %empty */
-#line 275 "engines/hypno/grammar_arc.y"
+#line 273 "engines/hypno/grammar_arc.y"
{ (yyval.s) = scumm_strdup(""); }
-#line 1643 "engines/hypno/grammar_arc.cpp"
+#line 1641 "engines/hypno/grammar_arc.cpp"
break;
case 48: /* bline: FNTOK FILENAME */
-#line 283 "engines/hypno/grammar_arc.y"
+#line 281 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
if (Common::String("F0") == (yyvsp[-1].s))
@@ -1652,404 +1650,404 @@ yyreduce:
shoot->explosionAnimation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1656 "engines/hypno/grammar_arc.cpp"
+#line 1654 "engines/hypno/grammar_arc.cpp"
break;
case 49: /* bline: AVTOK NUM */
-#line 291 "engines/hypno/grammar_arc.y"
+#line 289 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "AV %d", (yyvsp[0].i));
}
-#line 1664 "engines/hypno/grammar_arc.cpp"
+#line 1662 "engines/hypno/grammar_arc.cpp"
break;
case 50: /* bline: ABTOK NUM */
-#line 294 "engines/hypno/grammar_arc.y"
+#line 292 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "AB %d", (yyvsp[0].i));
}
-#line 1672 "engines/hypno/grammar_arc.cpp"
+#line 1670 "engines/hypno/grammar_arc.cpp"
break;
case 51: /* bline: J0TOK NUM */
-#line 297 "engines/hypno/grammar_arc.y"
+#line 295 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "J0 %d", (yyvsp[0].i));
}
-#line 1680 "engines/hypno/grammar_arc.cpp"
+#line 1678 "engines/hypno/grammar_arc.cpp"
break;
case 52: /* bline: FNTOK NONETOK */
-#line 300 "engines/hypno/grammar_arc.y"
+#line 298 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = "NONE";
debugC(1, kHypnoDebugParser, "FN NONE");
}
-#line 1690 "engines/hypno/grammar_arc.cpp"
+#line 1688 "engines/hypno/grammar_arc.cpp"
break;
case 53: /* bline: FTOK FILENAME */
-#line 305 "engines/hypno/grammar_arc.y"
+#line 303 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1700 "engines/hypno/grammar_arc.cpp"
+#line 1698 "engines/hypno/grammar_arc.cpp"
break;
case 54: /* bline: ITOK NAME */
-#line 310 "engines/hypno/grammar_arc.y"
+#line 308 "engines/hypno/grammar_arc.y"
{
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1709 "engines/hypno/grammar_arc.cpp"
+#line 1707 "engines/hypno/grammar_arc.cpp"
break;
case 55: /* bline: ITOK BNTOK */
-#line 314 "engines/hypno/grammar_arc.y"
+#line 312 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == B1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1718 "engines/hypno/grammar_arc.cpp"
+#line 1716 "engines/hypno/grammar_arc.cpp"
break;
case 56: /* bline: ITOK ATOK */
-#line 318 "engines/hypno/grammar_arc.y"
+#line 316 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == A
shoot->name = "A";
debugC(1, kHypnoDebugParser, "I A");
}
-#line 1727 "engines/hypno/grammar_arc.cpp"
+#line 1725 "engines/hypno/grammar_arc.cpp"
break;
case 57: /* bline: ITOK CTOK */
-#line 322 "engines/hypno/grammar_arc.y"
+#line 320 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == C
shoot->name = "C";
debugC(1, kHypnoDebugParser, "I C");
}
-#line 1736 "engines/hypno/grammar_arc.cpp"
+#line 1734 "engines/hypno/grammar_arc.cpp"
break;
case 58: /* bline: ITOK DTOK */
-#line 326 "engines/hypno/grammar_arc.y"
+#line 324 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == D
shoot->name = "D";
debugC(1, kHypnoDebugParser, "I D");
}
-#line 1745 "engines/hypno/grammar_arc.cpp"
+#line 1743 "engines/hypno/grammar_arc.cpp"
break;
case 59: /* bline: ITOK FTOK */
-#line 330 "engines/hypno/grammar_arc.y"
+#line 328 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == F
shoot->name = "F";
debugC(1, kHypnoDebugParser, "I F");
}
-#line 1754 "engines/hypno/grammar_arc.cpp"
+#line 1752 "engines/hypno/grammar_arc.cpp"
break;
case 60: /* bline: ITOK GTOK */
-#line 334 "engines/hypno/grammar_arc.y"
+#line 332 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == G
shoot->name = "G";
debugC(1, kHypnoDebugParser, "I G");
}
-#line 1763 "engines/hypno/grammar_arc.cpp"
+#line 1761 "engines/hypno/grammar_arc.cpp"
break;
case 61: /* bline: ITOK HTOK */
-#line 338 "engines/hypno/grammar_arc.y"
+#line 336 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == H
shoot->name = "H";
debugC(1, kHypnoDebugParser, "I H");
}
-#line 1772 "engines/hypno/grammar_arc.cpp"
+#line 1770 "engines/hypno/grammar_arc.cpp"
break;
case 62: /* bline: ITOK ITOK */
-#line 342 "engines/hypno/grammar_arc.y"
+#line 340 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == I
shoot->name = "I";
debugC(1, kHypnoDebugParser, "I I");
}
-#line 1781 "engines/hypno/grammar_arc.cpp"
+#line 1779 "engines/hypno/grammar_arc.cpp"
break;
case 63: /* bline: ITOK JTOK */
-#line 346 "engines/hypno/grammar_arc.y"
+#line 344 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == J
shoot->name = "J";
debugC(1, kHypnoDebugParser, "I J");
}
-#line 1790 "engines/hypno/grammar_arc.cpp"
+#line 1788 "engines/hypno/grammar_arc.cpp"
break;
case 64: /* bline: ITOK KTOK */
-#line 350 "engines/hypno/grammar_arc.y"
+#line 348 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == K
shoot->name = "K";
debugC(1, kHypnoDebugParser, "I K");
}
-#line 1799 "engines/hypno/grammar_arc.cpp"
+#line 1797 "engines/hypno/grammar_arc.cpp"
break;
case 65: /* bline: ITOK NTOK */
-#line 354 "engines/hypno/grammar_arc.y"
+#line 352 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == N
shoot->name = "N";
debugC(1, kHypnoDebugParser, "I N");
}
-#line 1808 "engines/hypno/grammar_arc.cpp"
+#line 1806 "engines/hypno/grammar_arc.cpp"
break;
case 66: /* bline: ITOK OTOK */
-#line 358 "engines/hypno/grammar_arc.y"
+#line 356 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == O
shoot->name = "O";
debugC(1, kHypnoDebugParser, "I O");
}
-#line 1817 "engines/hypno/grammar_arc.cpp"
+#line 1815 "engines/hypno/grammar_arc.cpp"
break;
case 67: /* bline: ITOK PTOK */
-#line 362 "engines/hypno/grammar_arc.y"
+#line 360 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == P
shoot->name = "P";
debugC(1, kHypnoDebugParser, "I P");
}
-#line 1826 "engines/hypno/grammar_arc.cpp"
+#line 1824 "engines/hypno/grammar_arc.cpp"
break;
case 68: /* bline: ITOK QTOK */
-#line 366 "engines/hypno/grammar_arc.y"
+#line 364 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == Q
shoot->name = "Q";
debugC(1, kHypnoDebugParser, "I Q");
}
-#line 1835 "engines/hypno/grammar_arc.cpp"
+#line 1833 "engines/hypno/grammar_arc.cpp"
break;
case 69: /* bline: ITOK RTOK */
-#line 370 "engines/hypno/grammar_arc.y"
+#line 368 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == R
shoot->name = "R";
debugC(1, kHypnoDebugParser, "I R");
}
-#line 1844 "engines/hypno/grammar_arc.cpp"
+#line 1842 "engines/hypno/grammar_arc.cpp"
break;
case 70: /* bline: ITOK SNTOK */
-#line 374 "engines/hypno/grammar_arc.y"
+#line 372 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == S1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1853 "engines/hypno/grammar_arc.cpp"
+#line 1851 "engines/hypno/grammar_arc.cpp"
break;
case 71: /* bline: ITOK TTOK */
-#line 378 "engines/hypno/grammar_arc.y"
+#line 376 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == T
shoot->name = "T";
debugC(1, kHypnoDebugParser, "I T");
}
-#line 1862 "engines/hypno/grammar_arc.cpp"
+#line 1860 "engines/hypno/grammar_arc.cpp"
break;
case 72: /* bline: ITOK LTOK */
-#line 382 "engines/hypno/grammar_arc.y"
+#line 380 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == L
shoot->name = "L";
debugC(1, kHypnoDebugParser, "I L");
}
-#line 1871 "engines/hypno/grammar_arc.cpp"
+#line 1869 "engines/hypno/grammar_arc.cpp"
break;
case 73: /* bline: ITOK MTOK */
-#line 386 "engines/hypno/grammar_arc.y"
+#line 384 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == M
shoot->name = "M";
debugC(1, kHypnoDebugParser, "I M");
}
-#line 1880 "engines/hypno/grammar_arc.cpp"
+#line 1878 "engines/hypno/grammar_arc.cpp"
break;
case 74: /* bline: ITOK UTOK */
-#line 390 "engines/hypno/grammar_arc.y"
+#line 388 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == U
shoot->name = "U";
debugC(1, kHypnoDebugParser, "I U");
}
-#line 1889 "engines/hypno/grammar_arc.cpp"
+#line 1887 "engines/hypno/grammar_arc.cpp"
break;
case 75: /* bline: JTOK NUM */
-#line 394 "engines/hypno/grammar_arc.y"
+#line 392 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "J %d", (yyvsp[0].i));
}
-#line 1897 "engines/hypno/grammar_arc.cpp"
+#line 1895 "engines/hypno/grammar_arc.cpp"
break;
case 76: /* bline: A0TOK NUM NUM */
-#line 397 "engines/hypno/grammar_arc.y"
+#line 395 "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 1906 "engines/hypno/grammar_arc.cpp"
+#line 1904 "engines/hypno/grammar_arc.cpp"
break;
case 77: /* bline: RTOK NUM NUM */
-#line 401 "engines/hypno/grammar_arc.y"
+#line 399 "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 1916 "engines/hypno/grammar_arc.cpp"
+#line 1914 "engines/hypno/grammar_arc.cpp"
break;
case 78: /* bline: R01TOK NUM NUM */
-#line 406 "engines/hypno/grammar_arc.y"
+#line 404 "engines/hypno/grammar_arc.y"
{
shoot->objKillsCount = (yyvsp[-1].i);
shoot->objMissesCount = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "R0/1 %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1925 "engines/hypno/grammar_arc.cpp"
+#line 1923 "engines/hypno/grammar_arc.cpp"
break;
case 79: /* bline: BNTOK NUM NUM */
-#line 410 "engines/hypno/grammar_arc.y"
+#line 408 "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 1935 "engines/hypno/grammar_arc.cpp"
+#line 1933 "engines/hypno/grammar_arc.cpp"
break;
case 80: /* bline: KNTOK NUM NUM */
-#line 415 "engines/hypno/grammar_arc.y"
+#line 413 "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 1945 "engines/hypno/grammar_arc.cpp"
+#line 1943 "engines/hypno/grammar_arc.cpp"
break;
case 81: /* bline: P0TOK NUM NUM */
-#line 420 "engines/hypno/grammar_arc.y"
+#line 418 "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 1954 "engines/hypno/grammar_arc.cpp"
+#line 1952 "engines/hypno/grammar_arc.cpp"
break;
case 82: /* bline: OTOK NUM NUM */
-#line 424 "engines/hypno/grammar_arc.y"
+#line 422 "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 1965 "engines/hypno/grammar_arc.cpp"
+#line 1963 "engines/hypno/grammar_arc.cpp"
break;
case 83: /* bline: CTOK NUM */
-#line 430 "engines/hypno/grammar_arc.y"
+#line 428 "engines/hypno/grammar_arc.y"
{
shoot->timesToShoot = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i));
}
-#line 1974 "engines/hypno/grammar_arc.cpp"
+#line 1972 "engines/hypno/grammar_arc.cpp"
break;
case 84: /* bline: HTOK NUM */
-#line 434 "engines/hypno/grammar_arc.y"
+#line 432 "engines/hypno/grammar_arc.y"
{
shoot->attackFrames.push_back((yyvsp[0].i));
debugC(1, kHypnoDebugParser, "H %d", (yyvsp[0].i)); }
-#line 1982 "engines/hypno/grammar_arc.cpp"
+#line 1980 "engines/hypno/grammar_arc.cpp"
break;
case 85: /* bline: VTOK NUM */
-#line 437 "engines/hypno/grammar_arc.y"
+#line 435 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V %d", (yyvsp[0].i)); }
-#line 1988 "engines/hypno/grammar_arc.cpp"
+#line 1986 "engines/hypno/grammar_arc.cpp"
break;
case 86: /* bline: WTOK NUM */
-#line 438 "engines/hypno/grammar_arc.y"
+#line 436 "engines/hypno/grammar_arc.y"
{
shoot->attackWeight = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "W %d", (yyvsp[0].i)); }
-#line 1996 "engines/hypno/grammar_arc.cpp"
+#line 1994 "engines/hypno/grammar_arc.cpp"
break;
case 87: /* bline: DTOK NUM */
-#line 441 "engines/hypno/grammar_arc.y"
+#line 439 "engines/hypno/grammar_arc.y"
{
shoot->pointsToShoot = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
}
-#line 2005 "engines/hypno/grammar_arc.cpp"
+#line 2003 "engines/hypno/grammar_arc.cpp"
break;
case 88: /* bline: LTOK NUM NUM */
-#line 445 "engines/hypno/grammar_arc.y"
+#line 443 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "L %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2013 "engines/hypno/grammar_arc.cpp"
+#line 2011 "engines/hypno/grammar_arc.cpp"
break;
case 89: /* bline: LTOK NUM */
-#line 448 "engines/hypno/grammar_arc.y"
+#line 446 "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 2023 "engines/hypno/grammar_arc.cpp"
+#line 2021 "engines/hypno/grammar_arc.cpp"
break;
case 90: /* bline: MTOK NUM */
-#line 453 "engines/hypno/grammar_arc.y"
+#line 451 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "M %d", (yyvsp[0].i));
shoot->missedAnimation = (yyvsp[0].i);
}
-#line 2031 "engines/hypno/grammar_arc.cpp"
+#line 2029 "engines/hypno/grammar_arc.cpp"
break;
case 91: /* bline: KTOK NUM */
-#line 456 "engines/hypno/grammar_arc.y"
+#line 454 "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 2040 "engines/hypno/grammar_arc.cpp"
+#line 2038 "engines/hypno/grammar_arc.cpp"
break;
case 92: /* bline: KTOK NUM NUM */
-#line 460 "engines/hypno/grammar_arc.y"
+#line 458 "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 2049 "engines/hypno/grammar_arc.cpp"
+#line 2047 "engines/hypno/grammar_arc.cpp"
break;
case 93: /* bline: SNTOK FILENAME enc */
-#line 464 "engines/hypno/grammar_arc.y"
+#line 462 "engines/hypno/grammar_arc.y"
{
if (Common::String("S0") == (yyvsp[-2].s))
shoot->enemySound = (yyvsp[-1].s);
@@ -2059,60 +2057,60 @@ yyreduce:
shoot->hitSound = (yyvsp[-1].s);
debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s)); }
-#line 2063 "engines/hypno/grammar_arc.cpp"
+#line 2061 "engines/hypno/grammar_arc.cpp"
break;
case 94: /* bline: GTOK */
-#line 473 "engines/hypno/grammar_arc.y"
+#line 471 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "G"); }
-#line 2069 "engines/hypno/grammar_arc.cpp"
+#line 2067 "engines/hypno/grammar_arc.cpp"
break;
case 95: /* bline: TTOK NUM */
-#line 474 "engines/hypno/grammar_arc.y"
+#line 472 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "T %d", (yyvsp[0].i));
}
-#line 2077 "engines/hypno/grammar_arc.cpp"
+#line 2075 "engines/hypno/grammar_arc.cpp"
break;
case 96: /* bline: TTOK */
-#line 477 "engines/hypno/grammar_arc.y"
+#line 475 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "T");
}
-#line 2085 "engines/hypno/grammar_arc.cpp"
+#line 2083 "engines/hypno/grammar_arc.cpp"
break;
case 97: /* bline: MTOK */
-#line 480 "engines/hypno/grammar_arc.y"
+#line 478 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "M");
}
-#line 2093 "engines/hypno/grammar_arc.cpp"
+#line 2091 "engines/hypno/grammar_arc.cpp"
break;
case 98: /* bline: NTOK */
-#line 483 "engines/hypno/grammar_arc.y"
+#line 481 "engines/hypno/grammar_arc.y"
{
shoot->noEnemySound = true;
debugC(1, kHypnoDebugParser, "N"); }
-#line 2101 "engines/hypno/grammar_arc.cpp"
+#line 2099 "engines/hypno/grammar_arc.cpp"
break;
case 99: /* bline: ZTOK */
-#line 486 "engines/hypno/grammar_arc.y"
+#line 484 "engines/hypno/grammar_arc.y"
{
g_parsedArc->shoots.push_back(*shoot);
//delete shoot;
//shoot = nullptr;
debugC(1, kHypnoDebugParser, "Z");
}
-#line 2112 "engines/hypno/grammar_arc.cpp"
+#line 2110 "engines/hypno/grammar_arc.cpp"
break;
-#line 2116 "engines/hypno/grammar_arc.cpp"
+#line 2114 "engines/hypno/grammar_arc.cpp"
default: break;
}
diff --git a/engines/hypno/grammar_arc.y b/engines/hypno/grammar_arc.y
index 642e7a3fddf..b836af470fc 100644
--- a/engines/hypno/grammar_arc.y
+++ b/engines/hypno/grammar_arc.y
@@ -134,15 +134,13 @@ hline: CTOK NUM {
debugC(1, kHypnoDebugParser, "ON %d", $2);
}
| TPTOK FILENAME NUM FILENAME {
- g_parsedArc->transitionVideos.push_back($2);
- g_parsedArc->transitionTimes.push_back($3);
- g_parsedArc->transitionPalettes.push_back($4);
+ ArcadeTransition at($2, $4, "", $3);
+ g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "Tp %s %d %s", $2, $3, $4);
}
| TTOK FILENAME NUM {
- g_parsedArc->transitionVideos.push_back($2);
- g_parsedArc->transitionTimes.push_back($3);
- g_parsedArc->transitionPalettes.push_back("");
+ ArcadeTransition at($2, "", "", $3);
+ g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "T %s %d", $2, $3);
}
| TTOK NONETOK NUM { debugC(1, kHypnoDebugParser, "T NONE %d", $3); }
Commit: 2ee96a1d8d6e2da8abbde19d74a16e12ecce1e34
https://github.com/scummvm/scummvm/commit/2ee96a1d8d6e2da8abbde19d74a16e12ecce1e34
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-04-11T21:17:33+02:00
Commit Message:
HYPNO: add a condition to check if the first door is open in level c60 in wet
Changed paths:
engines/hypno/arcade.cpp
engines/hypno/hypno.cpp
engines/hypno/hypno.h
engines/hypno/wet/arcade.cpp
diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index b09b8236abb..1f4828abb66 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -185,6 +185,7 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
debugC(1, kHypnoDebugArcade, "Starting segment of type %x", segments[_segmentIdx].type);
_shoots.clear();
_skipLevel = false;
+ _skipDefeatVideo = false;
_mask = nullptr;
_masks = nullptr;
@@ -311,7 +312,9 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
if (_health <= 0) {
skipVideo(*_background);
- if (!arc->defeatNoEnergySecondVideo.empty() && transition) {
+ if (_skipDefeatVideo)
+ ; // No video
+ else if (!arc->defeatNoEnergySecondVideo.empty() && transition) {
disableCursor();
MVideo video(arc->defeatNoEnergySecondVideo, Common::Point(0, 0), false, true, false);
runIntro(video);
diff --git a/engines/hypno/hypno.cpp b/engines/hypno/hypno.cpp
index 3f839aa689d..da05be2e8a3 100644
--- a/engines/hypno/hypno.cpp
+++ b/engines/hypno/hypno.cpp
@@ -53,7 +53,7 @@ HypnoEngine::HypnoEngine(OSystem *syst, const ADGameDescription *gd)
_levelId(0), _skipLevel(false), _health(0), _maxHealth(0),
_playerFrameIdx(0), _playerFrameSep(0), _refreshConversation(false),
_countdown(0), _timerStarted(false), _score(0), _lives(0),
- _defaultCursor(""), _checkpoint(""),
+ _defaultCursor(""), _checkpoint(""), _skipDefeatVideo(false),
_currentPlayerPosition(kPlayerLeft), _lastPlayerPosition(kPlayerLeft),
_background(nullptr),
_masks(nullptr),
diff --git a/engines/hypno/hypno.h b/engines/hypno/hypno.h
index 281eca5efc5..b49477a7ef1 100644
--- a/engines/hypno/hypno.h
+++ b/engines/hypno/hypno.h
@@ -269,6 +269,7 @@ public:
Common::String _difficulty;
bool _skipLevel;
+ bool _skipDefeatVideo;
virtual void drawCursorArcade(const Common::Point &mousePos);
virtual void drawPlayer();
diff --git a/engines/hypno/wet/arcade.cpp b/engines/hypno/wet/arcade.cpp
index 61bb3efe181..82c9b6a0d27 100644
--- a/engines/hypno/wet/arcade.cpp
+++ b/engines/hypno/wet/arcade.cpp
@@ -464,6 +464,17 @@ void WetEngine::missedTarget(Shoot *s, ArcadeShooting *arc, MVideo &background)
background.decoder->pauseVideo(false);
updateScreen(background);
drawScreen();
+ } else if (_levelId == 60 && s->name == "DOOR1") {
+ _health = 0;
+ background.decoder->pauseVideo(true);
+ // In the last level, the hit boss video is used to store this ending
+ MVideo video(arc->hitBoss1Video, Common::Point(0, 0), false, true, false);
+ runIntro(video);
+ loadPalette(arc->backgroundPalette);
+ background.decoder->pauseVideo(false);
+ updateScreen(background);
+ drawScreen();
+ _skipDefeatVideo = true;
} else if (s->attackFrames.empty()) {
_health = _health - s->attackWeight;
hitPlayer();
Commit: fe610854fdf3d9fbb6830be48addeb010644f4b4
https://github.com/scummvm/scummvm/commit/fe610854fdf3d9fbb6830be48addeb010644f4b4
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-04-11T21:17:33+02:00
Commit Message:
HYPNO: return to main menu after game over in the full version of wet
Changed paths:
engines/hypno/wet/wet.cpp
diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index 0112ce208b5..6b1306a93a9 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -259,7 +259,7 @@ void WetEngine::loadAssetsFullGame() {
_levels["<level_menu>"] = level_menu;
_levels["<level_menu>"]->levelIfWin = "?";
- Transition *over = new Transition("<quit>");
+ Transition *over = new Transition("<main_menu>");
over->intros.push_back("c_misc/gameover.smk");
_levels["<game_over>"] = over;
Commit: 68004ec9b530db319b993e87c165e7b7d364b498
https://github.com/scummvm/scummvm/commit/68004ec9b530db319b993e87c165e7b7d364b498
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-04-11T21:17:34+02:00
Commit Message:
HYPNO: improved parser to allow to load c16 level in boyz
Changed paths:
engines/hypno/arcade.cpp
engines/hypno/boyz/boyz.cpp
engines/hypno/grammar_arc.cpp
engines/hypno/grammar_arc.y
engines/hypno/lexer_arc.cpp
engines/hypno/lexer_arc.l
engines/hypno/tokens_arc.h
diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index 1f4828abb66..d83a92e4225 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -78,6 +78,11 @@ SegmentShootsSequence HypnoEngine::parseShootList(const Common::String &filename
Common::String n;
ShootInfo si;
SegmentShootsSequence seq;
+
+ // Patch to fix an issue in the parsing of the c3 level in Spiderman
+ if (filename == "c3.mi_" || filename == "c3h.mi_")
+ Common::replace(pdata, "92.B", "92,B");
+
// Parsing
pdata.trim();
pdata = "\n" + pdata;
@@ -112,7 +117,7 @@ SegmentShootsSequence HypnoEngine::parseShootList(const Common::String &filename
}
} else if (pdata[1] == 'S' ) { // Single element
SegmentShoots ss;
- Common::StringTokenizer tok(pdata, " ,.\t\r");
+ Common::StringTokenizer tok(pdata, " ,\t\r");
while (!tok.empty()) {
t = tok.nextToken();
if (t[0] == '\n')
diff --git a/engines/hypno/boyz/boyz.cpp b/engines/hypno/boyz/boyz.cpp
index 8b0338387d4..6a5f62200a9 100644
--- a/engines/hypno/boyz/boyz.cpp
+++ b/engines/hypno/boyz/boyz.cpp
@@ -43,6 +43,7 @@ void BoyzEngine::loadAssets() {
//loadArcadeLevel("c13.mi_", "??", "??", "");
loadArcadeLevel("c14.mi_", "c15.mi_", "??", "");
loadArcadeLevel("c15.mi_", "c16.mi_", "??", "");
+ loadArcadeLevel("c16.mi_", "c17.mi_", "??", "");
loadLib("sound/", "misc/sound.lib", true);
diff --git a/engines/hypno/grammar_arc.cpp b/engines/hypno/grammar_arc.cpp
index 8ea27ed10e3..663e973cce7 100644
--- a/engines/hypno/grammar_arc.cpp
+++ b/engines/hypno/grammar_arc.cpp
@@ -159,40 +159,41 @@ enum yysymbol_kind_t
YYSYMBOL_PTOK = 27, /* PTOK */
YYSYMBOL_FTOK = 28, /* FTOK */
YYSYMBOL_TTOK = 29, /* TTOK */
- YYSYMBOL_TPTOK = 30, /* TPTOK */
- YYSYMBOL_ATOK = 31, /* ATOK */
- YYSYMBOL_VTOK = 32, /* VTOK */
- YYSYMBOL_OTOK = 33, /* OTOK */
- YYSYMBOL_LTOK = 34, /* LTOK */
- YYSYMBOL_MTOK = 35, /* MTOK */
- YYSYMBOL_NTOK = 36, /* NTOK */
- YYSYMBOL_NSTOK = 37, /* NSTOK */
- YYSYMBOL_RTOK = 38, /* RTOK */
- YYSYMBOL_R01TOK = 39, /* R01TOK */
- YYSYMBOL_ITOK = 40, /* ITOK */
- YYSYMBOL_I1TOK = 41, /* I1TOK */
- YYSYMBOL_GTOK = 42, /* GTOK */
- YYSYMBOL_JTOK = 43, /* JTOK */
- YYSYMBOL_J0TOK = 44, /* J0TOK */
- YYSYMBOL_KTOK = 45, /* KTOK */
- YYSYMBOL_UTOK = 46, /* UTOK */
- YYSYMBOL_ZTOK = 47, /* ZTOK */
- YYSYMBOL_NONETOK = 48, /* NONETOK */
- YYSYMBOL_A0TOK = 49, /* A0TOK */
- YYSYMBOL_P0TOK = 50, /* P0TOK */
- YYSYMBOL_WTOK = 51, /* WTOK */
- YYSYMBOL_XTOK = 52, /* XTOK */
- YYSYMBOL_CB3TOK = 53, /* CB3TOK */
- YYSYMBOL_C02TOK = 54, /* C02TOK */
- YYSYMBOL_YYACCEPT = 55, /* $accept */
- YYSYMBOL_start = 56, /* start */
- YYSYMBOL_57_1 = 57, /* $@1 */
- YYSYMBOL_header = 58, /* header */
- YYSYMBOL_hline = 59, /* hline */
- YYSYMBOL_enc = 60, /* enc */
- YYSYMBOL_flag = 61, /* flag */
- YYSYMBOL_body = 62, /* body */
- YYSYMBOL_bline = 63 /* bline */
+ YYSYMBOL_TATOK = 30, /* TATOK */
+ YYSYMBOL_TPTOK = 31, /* TPTOK */
+ YYSYMBOL_ATOK = 32, /* ATOK */
+ YYSYMBOL_VTOK = 33, /* VTOK */
+ YYSYMBOL_OTOK = 34, /* OTOK */
+ YYSYMBOL_LTOK = 35, /* LTOK */
+ YYSYMBOL_MTOK = 36, /* MTOK */
+ YYSYMBOL_NTOK = 37, /* NTOK */
+ YYSYMBOL_NSTOK = 38, /* NSTOK */
+ YYSYMBOL_RTOK = 39, /* RTOK */
+ YYSYMBOL_R01TOK = 40, /* R01TOK */
+ YYSYMBOL_ITOK = 41, /* ITOK */
+ YYSYMBOL_I1TOK = 42, /* I1TOK */
+ YYSYMBOL_GTOK = 43, /* GTOK */
+ YYSYMBOL_JTOK = 44, /* JTOK */
+ YYSYMBOL_J0TOK = 45, /* J0TOK */
+ YYSYMBOL_KTOK = 46, /* KTOK */
+ YYSYMBOL_UTOK = 47, /* UTOK */
+ YYSYMBOL_ZTOK = 48, /* ZTOK */
+ YYSYMBOL_NONETOK = 49, /* NONETOK */
+ YYSYMBOL_A0TOK = 50, /* A0TOK */
+ YYSYMBOL_P0TOK = 51, /* P0TOK */
+ YYSYMBOL_WTOK = 52, /* WTOK */
+ YYSYMBOL_XTOK = 53, /* XTOK */
+ YYSYMBOL_CB3TOK = 54, /* CB3TOK */
+ YYSYMBOL_C02TOK = 55, /* C02TOK */
+ YYSYMBOL_YYACCEPT = 56, /* $accept */
+ YYSYMBOL_start = 57, /* start */
+ YYSYMBOL_58_1 = 58, /* $@1 */
+ YYSYMBOL_header = 59, /* header */
+ YYSYMBOL_hline = 60, /* hline */
+ YYSYMBOL_enc = 61, /* enc */
+ YYSYMBOL_flag = 62, /* flag */
+ YYSYMBOL_body = 63, /* body */
+ YYSYMBOL_bline = 64 /* bline */
};
typedef enum yysymbol_kind_t yysymbol_kind_t;
@@ -520,19 +521,19 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 6
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 186
+#define YYLAST 191
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 55
+#define YYNTOKENS 56
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 9
/* YYNRULES -- Number of rules. */
-#define YYNRULES 99
+#define YYNRULES 100
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 196
+#define YYNSTATES 200
/* YYMAXUTOK -- Last valid token kind. */
-#define YYMAXUTOK 309
+#define YYMAXUTOK 310
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -576,7 +577,8 @@ static const yytype_int8 yytranslate[] =
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55
};
#if HYPNO_ARC_DEBUG
@@ -585,14 +587,15 @@ static const yytype_int16 yyrline[] =
{
0, 78, 78, 78, 79, 82, 83, 84, 87, 91,
95, 99, 100, 101, 105, 110, 111, 112, 117, 127,
- 136, 141, 146, 147, 151, 155, 158, 162, 165, 166,
- 192, 214, 220, 225, 230, 236, 241, 246, 251, 256,
- 261, 268, 269, 272, 273, 276, 277, 278, 281, 289,
- 292, 295, 298, 303, 308, 312, 316, 320, 324, 328,
- 332, 336, 340, 344, 348, 352, 356, 360, 364, 368,
- 372, 376, 380, 384, 388, 392, 395, 399, 404, 408,
- 413, 418, 422, 428, 432, 435, 436, 439, 443, 446,
- 451, 454, 458, 462, 471, 472, 475, 478, 481, 484
+ 136, 141, 146, 151, 152, 156, 160, 163, 167, 170,
+ 171, 197, 219, 225, 230, 235, 241, 246, 251, 256,
+ 261, 266, 273, 274, 277, 278, 281, 282, 283, 286,
+ 294, 297, 300, 303, 308, 313, 317, 321, 325, 329,
+ 333, 337, 341, 345, 349, 353, 357, 361, 365, 369,
+ 373, 377, 381, 385, 389, 393, 397, 400, 404, 409,
+ 413, 418, 423, 427, 433, 437, 440, 441, 444, 448,
+ 451, 456, 459, 463, 467, 476, 477, 480, 483, 486,
+ 489
};
#endif
@@ -612,11 +615,11 @@ static const char *const yytname[] =
"BNTOK", "SNTOK", "KNTOK", "YXTOK", "FNTOK", "ENCTOK", "ONTOK", "NUM",
"BYTE", "COMMENT", "AVTOK", "ABTOK", "CTOK", "DTOK", "HTOK", "HETOK",
"HLTOK", "H12TOK", "HUTOK", "RETTOK", "QTOK", "RESTOK", "PTOK", "FTOK",
- "TTOK", "TPTOK", "ATOK", "VTOK", "OTOK", "LTOK", "MTOK", "NTOK", "NSTOK",
- "RTOK", "R01TOK", "ITOK", "I1TOK", "GTOK", "JTOK", "J0TOK", "KTOK",
- "UTOK", "ZTOK", "NONETOK", "A0TOK", "P0TOK", "WTOK", "XTOK", "CB3TOK",
- "C02TOK", "$accept", "start", "$@1", "header", "hline", "enc", "flag",
- "body", "bline", YY_NULLPTR
+ "TTOK", "TATOK", "TPTOK", "ATOK", "VTOK", "OTOK", "LTOK", "MTOK", "NTOK",
+ "NSTOK", "RTOK", "R01TOK", "ITOK", "I1TOK", "GTOK", "JTOK", "J0TOK",
+ "KTOK", "UTOK", "ZTOK", "NONETOK", "A0TOK", "P0TOK", "WTOK", "XTOK",
+ "CB3TOK", "C02TOK", "$accept", "start", "$@1", "header", "hline", "enc",
+ "flag", "body", "bline", YY_NULLPTR
};
static const char *
@@ -626,7 +629,7 @@ yysymbol_name (yysymbol_kind_t yysymbol)
}
#endif
-#define YYPACT_NINF (-111)
+#define YYPACT_NINF (-114)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
@@ -640,26 +643,26 @@ yysymbol_name (yysymbol_kind_t yysymbol)
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 8, -111, 8, 7, 87, -111, -111, 5, 11, 6,
- 9, 29, 118, 4, 30, 39, 40, 87, 42, 43,
- 44, -1, 16, 46, 10, 47, 53, 56, 57, 61,
- 62, 63, 59, 21, 87, -111, 65, 70, -111, -111,
- 72, 74, 77, 82, 83, 84, 85, 88, 89, 90,
- -111, 91, 101, -111, 114, 117, 120, 122, 123, -111,
- 124, -111, -111, -111, -111, -111, -111, 125, 75, -111,
- -111, 66, -111, 126, 127, 128, 129, 130, 131, 132,
- 134, 135, 136, -111, -111, -111, -111, 73, -111, -111,
- -111, 138, -5, -111, -111, -111, -111, -111, -111, -111,
- -111, -111, -111, -111, -111, -111, 139, 141, 150, 143,
- 1, 145, 146, 147, 148, 149, -5, 158, 151, 152,
- 153, 154, 155, -111, 156, 157, 45, -111, 159, 160,
- 161, -111, 162, 163, 164, 78, -5, -111, 165, 65,
- 166, -111, -111, -111, -111, -111, -111, -111, -111, -111,
- -111, -111, 167, 168, -111, 169, 170, -111, -111, -111,
- -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
- -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
- 171, 172, 173, -111, -111, -111, -111, -111, -111, -111,
- -111, -111, -111, -111, -111, -111
+ 10, -114, 10, 16, 90, -114, -114, 6, 13, 7,
+ 9, 26, 65, 15, 30, 32, 42, 90, 44, 45,
+ 46, 0, 48, 18, 49, -3, 50, 55, 59, 63,
+ 66, 67, 69, 57, 29, 90, -114, 70, 73, -114,
+ -114, 75, 77, 86, 87, 91, 93, 94, 104, 113,
+ 118, -114, 121, 122, -114, 123, 124, 98, 126, 127,
+ 128, -114, 129, -114, -114, -114, -114, -114, -114, 130,
+ 119, -114, -114, 141, -114, 133, 134, 135, 136, 137,
+ 138, 139, 140, 142, 143, -114, -114, -114, -114, 70,
+ 149, -114, -114, -114, 144, -4, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ 145, 146, 155, 148, 2, 150, 151, 152, 153, 154,
+ -4, 157, 156, 158, 159, 160, 161, -114, 162, 163,
+ 47, -114, 164, 165, 166, -114, 167, 168, 169, 114,
+ -4, -114, 170, 70, 171, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, 172, 173, -114, 174,
+ 175, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
+ -114, -114, -114, -114, 176, 177, 178, -114, -114, -114,
+ -114, -114, -114, -114, -114, -114, -114, -114, -114, -114
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -670,35 +673,35 @@ static const yytype_int8 yydefact[] =
0, 2, 0, 0, 7, 4, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 7, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 7, 29, 42, 19, 8, 10,
+ 0, 0, 0, 0, 0, 7, 30, 43, 19, 8,
+ 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 6, 0, 0, 9, 0, 0, 0, 0, 0,
+ 0, 16, 0, 13, 24, 25, 26, 27, 28, 0,
+ 0, 5, 42, 45, 18, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 29, 11, 22, 23, 43,
+ 0, 12, 15, 17, 0, 48, 44, 31, 35, 41,
+ 38, 37, 39, 36, 32, 33, 40, 34, 21, 20,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 6, 0, 0, 9, 0, 0, 0, 0, 0, 16,
- 0, 13, 23, 24, 25, 26, 27, 0, 0, 5,
- 41, 44, 18, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 28, 11, 21, 22, 0, 12, 15,
- 17, 0, 47, 43, 30, 34, 40, 37, 36, 38,
- 35, 31, 32, 39, 33, 20, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 47, 0, 96, 0,
- 0, 0, 97, 98, 0, 0, 0, 94, 0, 0,
- 0, 99, 0, 0, 0, 0, 47, 14, 0, 42,
- 0, 48, 52, 49, 50, 83, 87, 84, 46, 53,
- 95, 85, 0, 89, 90, 0, 0, 54, 55, 70,
- 57, 58, 61, 68, 67, 59, 71, 56, 66, 72,
- 73, 65, 69, 62, 60, 63, 64, 74, 75, 51,
- 91, 0, 0, 86, 3, 45, 79, 93, 80, 82,
- 88, 77, 78, 92, 76, 81
+ 48, 0, 97, 0, 0, 0, 98, 99, 0, 0,
+ 0, 95, 0, 0, 0, 100, 0, 0, 0, 0,
+ 48, 14, 0, 43, 0, 49, 53, 50, 51, 84,
+ 88, 85, 47, 54, 96, 86, 0, 90, 91, 0,
+ 0, 55, 56, 71, 58, 59, 62, 69, 68, 60,
+ 72, 57, 67, 73, 74, 66, 70, 63, 61, 64,
+ 65, 75, 76, 52, 92, 0, 0, 87, 3, 46,
+ 80, 94, 81, 83, 89, 78, 79, 93, 77, 82
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -111, 184, -111, -9, -111, 31, -111, -110, -111
+ -114, 189, -114, -9, -114, -89, -114, -113, -114
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_uint8 yydefgoto[] =
{
- 0, 3, 4, 33, 34, 71, 94, 135, 136
+ 0, 3, 4, 34, 35, 73, 97, 139, 140
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -706,89 +709,92 @@ static const yytype_uint8 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_uint8 yytable[] =
{
- 107, 108, 109, 54, 110, 141, 148, 6, 50, 35,
- 111, 112, 113, 114, 115, 36, 1, 46, 37, 116,
- 56, 38, 58, 117, 118, 69, 185, 119, 120, 121,
- 122, 123, 2, 124, 125, 126, 59, 127, 128, 129,
- 130, 39, 131, 47, 132, 133, 134, 55, 157, 142,
- 158, 159, 48, 49, 51, 52, 53, 61, 57, 60,
- 62, 63, 160, 161, 162, 64, 65, 66, 68, 93,
- 163, 67, 164, 165, 166, 70, 167, 105, 168, 169,
- 170, 171, 72, 172, 73, 173, 74, 174, 175, 75,
- 176, 177, 7, 8, 76, 77, 78, 79, 9, 92,
- 80, 81, 82, 83, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 84, 19, 20, 21, 22, 23, 24,
- 25, 40, 26, 27, 28, 29, 85, 30, 31, 86,
- 184, 41, 87, 32, 88, 89, 90, 91, 95, 96,
- 97, 98, 99, 100, 101, 42, 102, 103, 104, 43,
- 106, 137, 44, 138, 139, 140, 45, 143, 144, 145,
- 146, 147, 149, 150, 151, 152, 153, 154, 155, 156,
- 187, 178, 179, 180, 181, 182, 183, 186, 188, 189,
- 190, 191, 192, 193, 194, 195, 5
+ 108, 111, 112, 113, 55, 114, 145, 152, 51, 60,
+ 36, 115, 116, 117, 118, 119, 6, 37, 1, 38,
+ 120, 39, 58, 61, 121, 122, 71, 189, 47, 123,
+ 124, 125, 126, 127, 2, 128, 129, 130, 40, 131,
+ 132, 133, 134, 48, 135, 49, 136, 137, 138, 56,
+ 161, 146, 162, 163, 191, 50, 52, 53, 54, 63,
+ 57, 59, 62, 64, 164, 165, 166, 65, 41, 69,
+ 66, 67, 167, 68, 168, 169, 170, 70, 42, 171,
+ 72, 172, 173, 174, 175, 74, 176, 75, 177, 76,
+ 178, 179, 43, 180, 181, 7, 8, 44, 77, 78,
+ 45, 9, 89, 79, 46, 80, 81, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 82, 19, 20, 21,
+ 22, 23, 24, 25, 26, 83, 27, 28, 29, 30,
+ 84, 31, 32, 85, 86, 87, 88, 33, 90, 91,
+ 92, 93, 94, 95, 96, 98, 99, 100, 101, 102,
+ 103, 104, 105, 109, 106, 107, 110, 141, 142, 143,
+ 144, 153, 147, 148, 149, 150, 151, 188, 154, 0,
+ 155, 156, 157, 158, 159, 160, 182, 183, 184, 185,
+ 186, 187, 190, 192, 193, 194, 195, 196, 197, 198,
+ 199, 5
};
-static const yytype_uint8 yycheck[] =
+static const yytype_int16 yycheck[] =
{
- 5, 6, 7, 4, 9, 4, 116, 0, 17, 4,
- 15, 16, 17, 18, 19, 4, 8, 13, 12, 24,
- 4, 12, 12, 28, 29, 34, 136, 32, 33, 34,
- 35, 36, 24, 38, 39, 40, 26, 42, 43, 44,
- 45, 12, 47, 13, 49, 50, 51, 48, 3, 48,
- 5, 6, 13, 13, 12, 12, 12, 4, 12, 12,
- 4, 4, 17, 18, 19, 4, 4, 4, 47, 3,
- 25, 12, 27, 28, 29, 10, 31, 4, 33, 34,
- 35, 36, 12, 38, 12, 40, 12, 42, 43, 12,
- 45, 46, 5, 6, 12, 12, 12, 12, 11, 24,
- 12, 12, 12, 12, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 12, 27, 28, 29, 30, 31, 32,
- 33, 3, 35, 36, 37, 38, 12, 40, 41, 12,
- 52, 13, 12, 46, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 27, 12, 12, 12, 31,
- 12, 12, 34, 12, 4, 12, 38, 12, 12, 12,
- 12, 12, 4, 12, 12, 12, 12, 12, 12, 12,
- 139, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 2
+ 89, 5, 6, 7, 4, 9, 4, 120, 17, 12,
+ 4, 15, 16, 17, 18, 19, 0, 4, 8, 12,
+ 24, 12, 4, 26, 28, 29, 35, 140, 13, 33,
+ 34, 35, 36, 37, 24, 39, 40, 41, 12, 43,
+ 44, 45, 46, 13, 48, 13, 50, 51, 52, 49,
+ 3, 49, 5, 6, 143, 13, 12, 12, 12, 4,
+ 12, 12, 12, 4, 17, 18, 19, 4, 3, 12,
+ 4, 4, 25, 4, 27, 28, 29, 48, 13, 32,
+ 10, 34, 35, 36, 37, 12, 39, 12, 41, 12,
+ 43, 44, 27, 46, 47, 5, 6, 32, 12, 12,
+ 35, 11, 4, 12, 39, 12, 12, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 12, 27, 28, 29,
+ 30, 31, 32, 33, 34, 12, 36, 37, 38, 39,
+ 12, 41, 42, 12, 12, 12, 12, 47, 12, 12,
+ 12, 12, 12, 24, 3, 12, 12, 12, 12, 12,
+ 12, 12, 12, 4, 12, 12, 12, 12, 12, 4,
+ 12, 4, 12, 12, 12, 12, 12, 53, 12, -1,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 2
};
/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
state STATE-NUM. */
static const yytype_int8 yystos[] =
{
- 0, 8, 24, 56, 57, 56, 0, 5, 6, 11,
+ 0, 8, 24, 57, 58, 57, 0, 5, 6, 11,
17, 18, 19, 20, 21, 22, 23, 24, 25, 27,
- 28, 29, 30, 31, 32, 33, 35, 36, 37, 38,
- 40, 41, 46, 58, 59, 4, 4, 12, 12, 12,
- 3, 13, 27, 31, 34, 38, 13, 13, 13, 13,
- 58, 12, 12, 12, 4, 48, 4, 12, 12, 26,
- 12, 4, 4, 4, 4, 4, 4, 12, 47, 58,
- 10, 60, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 24, 3, 61, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 4, 12, 5, 6, 7,
- 9, 15, 16, 17, 18, 19, 24, 28, 29, 32,
- 33, 34, 35, 36, 38, 39, 40, 42, 43, 44,
- 45, 47, 49, 50, 51, 62, 63, 12, 12, 4,
- 12, 4, 48, 12, 12, 12, 12, 12, 62, 4,
- 12, 12, 12, 12, 12, 12, 12, 3, 5, 6,
- 17, 18, 19, 25, 27, 28, 29, 31, 33, 34,
- 35, 36, 38, 40, 42, 43, 45, 46, 12, 12,
- 12, 12, 12, 12, 52, 62, 12, 60, 12, 12,
- 12, 12, 12, 12, 12, 12
+ 28, 29, 30, 31, 32, 33, 34, 36, 37, 38,
+ 39, 41, 42, 47, 59, 60, 4, 4, 12, 12,
+ 12, 3, 13, 27, 32, 35, 39, 13, 13, 13,
+ 13, 59, 12, 12, 12, 4, 49, 12, 4, 12,
+ 12, 26, 12, 4, 4, 4, 4, 4, 4, 12,
+ 48, 59, 10, 61, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 4,
+ 12, 12, 12, 12, 12, 24, 3, 62, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 61, 4,
+ 12, 5, 6, 7, 9, 15, 16, 17, 18, 19,
+ 24, 28, 29, 33, 34, 35, 36, 37, 39, 40,
+ 41, 43, 44, 45, 46, 48, 50, 51, 52, 63,
+ 64, 12, 12, 4, 12, 4, 49, 12, 12, 12,
+ 12, 12, 63, 4, 12, 12, 12, 12, 12, 12,
+ 12, 3, 5, 6, 17, 18, 19, 25, 27, 28,
+ 29, 32, 34, 35, 36, 37, 39, 41, 43, 44,
+ 46, 47, 12, 12, 12, 12, 12, 12, 53, 63,
+ 12, 61, 12, 12, 12, 12, 12, 12, 12, 12
};
/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
static const yytype_int8 yyr1[] =
{
- 0, 55, 57, 56, 56, 58, 58, 58, 59, 59,
- 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
- 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
- 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
- 59, 60, 60, 61, 61, 62, 62, 62, 63, 63,
- 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
- 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
- 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
- 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
- 63, 63, 63, 63, 63, 63, 63, 63, 63, 63
+ 0, 56, 58, 57, 57, 59, 59, 59, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 61, 61, 62, 62, 63, 63, 63, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64
};
/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
@@ -796,14 +802,15 @@ static const yytype_int8 yyr2[] =
{
0, 2, 0, 7, 2, 2, 2, 0, 2, 2,
2, 3, 3, 2, 5, 3, 2, 3, 3, 2,
- 4, 3, 3, 2, 2, 2, 2, 2, 3, 2,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 1, 0, 1, 0, 2, 2, 0, 2, 2,
+ 4, 4, 3, 3, 2, 2, 2, 2, 2, 3,
+ 2, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 1, 0, 1, 0, 2, 2, 0, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 3, 3, 3,
- 3, 3, 3, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 3, 3, 1, 2, 1, 1, 1, 1
+ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3,
+ 3, 3, 3, 3, 2, 2, 2, 2, 2, 3,
+ 2, 2, 2, 3, 3, 1, 2, 1, 1, 1,
+ 1
};
@@ -1269,7 +1276,7 @@ yyreduce:
case 2: /* $@1: %empty */
#line 78 "engines/hypno/grammar_arc.y"
{ g_parsedArc->mode = (yyvsp[0].s); }
-#line 1273 "engines/hypno/grammar_arc.cpp"
+#line 1280 "engines/hypno/grammar_arc.cpp"
break;
case 8: /* hline: CTOK NUM */
@@ -1278,7 +1285,7 @@ yyreduce:
g_parsedArc->id = (yyvsp[0].i);
HYPNO_ARC_default_sound_rate = 0;
debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i)); }
-#line 1282 "engines/hypno/grammar_arc.cpp"
+#line 1289 "engines/hypno/grammar_arc.cpp"
break;
case 9: /* hline: FTOK NUM */
@@ -1287,7 +1294,7 @@ yyreduce:
HYPNO_ARC_default_sound_rate = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "F %d", (yyvsp[0].i));
}
-#line 1291 "engines/hypno/grammar_arc.cpp"
+#line 1298 "engines/hypno/grammar_arc.cpp"
break;
case 10: /* hline: DTOK NUM */
@@ -1296,19 +1303,19 @@ yyreduce:
g_parsedArc->frameDelay = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
}
-#line 1300 "engines/hypno/grammar_arc.cpp"
+#line 1307 "engines/hypno/grammar_arc.cpp"
break;
case 11: /* hline: PTOK NUM NUM */
#line 99 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "P %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1306 "engines/hypno/grammar_arc.cpp"
+#line 1313 "engines/hypno/grammar_arc.cpp"
break;
case 12: /* hline: ATOK NUM NUM */
#line 100 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "A %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1312 "engines/hypno/grammar_arc.cpp"
+#line 1319 "engines/hypno/grammar_arc.cpp"
break;
case 13: /* hline: MTOK FILENAME */
@@ -1317,7 +1324,7 @@ yyreduce:
debugC(1, kHypnoDebugParser, "M %s", (yyvsp[0].s));
g_parsedArc->maskVideo = (yyvsp[0].s);
}
-#line 1321 "engines/hypno/grammar_arc.cpp"
+#line 1328 "engines/hypno/grammar_arc.cpp"
break;
case 14: /* hline: UTOK NUM NUM NUM NUM */
@@ -1327,19 +1334,19 @@ yyreduce:
ScriptInfo si((yyvsp[-3].i), (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
g_parsedArc->script.push_back(si);
}
-#line 1331 "engines/hypno/grammar_arc.cpp"
+#line 1338 "engines/hypno/grammar_arc.cpp"
break;
case 15: /* hline: VTOK NUM NUM */
#line 110 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1337 "engines/hypno/grammar_arc.cpp"
+#line 1344 "engines/hypno/grammar_arc.cpp"
break;
case 16: /* hline: VTOK RESTOK */
#line 111 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V 320,200"); }
-#line 1343 "engines/hypno/grammar_arc.cpp"
+#line 1350 "engines/hypno/grammar_arc.cpp"
break;
case 17: /* hline: OTOK NUM NUM */
@@ -1349,7 +1356,7 @@ yyreduce:
g_parsedArc->objMissesAllowed[0] = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "O %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1353 "engines/hypno/grammar_arc.cpp"
+#line 1360 "engines/hypno/grammar_arc.cpp"
break;
case 18: /* hline: ONTOK NUM NUM */
@@ -1364,7 +1371,7 @@ yyreduce:
} else
error("Invalid objective: '%s'", (yyvsp[-2].s));
debugC(1, kHypnoDebugParser, "ON %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1368 "engines/hypno/grammar_arc.cpp"
+#line 1375 "engines/hypno/grammar_arc.cpp"
break;
case 19: /* hline: ONTOK NUM */
@@ -1378,7 +1385,7 @@ yyreduce:
error("Invalid objective: '%s'", (yyvsp[-1].s));
debugC(1, kHypnoDebugParser, "ON %d", (yyvsp[0].i));
}
-#line 1382 "engines/hypno/grammar_arc.cpp"
+#line 1389 "engines/hypno/grammar_arc.cpp"
break;
case 20: /* hline: TPTOK FILENAME NUM FILENAME */
@@ -1388,76 +1395,86 @@ yyreduce:
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "Tp %s %d %s", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].s));
}
-#line 1392 "engines/hypno/grammar_arc.cpp"
+#line 1399 "engines/hypno/grammar_arc.cpp"
break;
- case 21: /* hline: TTOK FILENAME NUM */
+ case 21: /* hline: TATOK NUM FILENAME enc */
#line 141 "engines/hypno/grammar_arc.y"
+ {
+ ArcadeTransition at("", "", (yyvsp[-1].s), (yyvsp[-2].i));
+ g_parsedArc->transitions.push_back(at);
+ debugC(1, kHypnoDebugParser, "Ta %d %s", (yyvsp[-2].i), (yyvsp[-1].s));
+ }
+#line 1409 "engines/hypno/grammar_arc.cpp"
+ break;
+
+ case 22: /* hline: TTOK FILENAME NUM */
+#line 146 "engines/hypno/grammar_arc.y"
{
ArcadeTransition at((yyvsp[-1].s), "", "", (yyvsp[0].i));
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "T %s %d", (yyvsp[-1].s), (yyvsp[0].i));
}
-#line 1402 "engines/hypno/grammar_arc.cpp"
+#line 1419 "engines/hypno/grammar_arc.cpp"
break;
- case 22: /* hline: TTOK NONETOK NUM */
-#line 146 "engines/hypno/grammar_arc.y"
+ case 23: /* hline: TTOK NONETOK NUM */
+#line 151 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "T NONE %d", (yyvsp[0].i)); }
-#line 1408 "engines/hypno/grammar_arc.cpp"
+#line 1425 "engines/hypno/grammar_arc.cpp"
break;
- case 23: /* hline: NTOK FILENAME */
-#line 147 "engines/hypno/grammar_arc.y"
+ case 24: /* hline: NTOK FILENAME */
+#line 152 "engines/hypno/grammar_arc.y"
{
g_parsedArc->backgroundVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "N %s", (yyvsp[0].s));
}
-#line 1417 "engines/hypno/grammar_arc.cpp"
+#line 1434 "engines/hypno/grammar_arc.cpp"
break;
- case 24: /* hline: NSTOK FILENAME */
-#line 151 "engines/hypno/grammar_arc.y"
+ case 25: /* hline: NSTOK FILENAME */
+#line 156 "engines/hypno/grammar_arc.y"
{
g_parsedArc->backgroundVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "N* %s", (yyvsp[0].s));
}
-#line 1426 "engines/hypno/grammar_arc.cpp"
+#line 1443 "engines/hypno/grammar_arc.cpp"
break;
- case 25: /* hline: RTOK FILENAME */
-#line 155 "engines/hypno/grammar_arc.y"
+ case 26: /* hline: RTOK FILENAME */
+#line 160 "engines/hypno/grammar_arc.y"
{
g_parsedArc->backgroundPalette = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "R %s", (yyvsp[0].s)); }
-#line 1434 "engines/hypno/grammar_arc.cpp"
+#line 1451 "engines/hypno/grammar_arc.cpp"
break;
- case 26: /* hline: ITOK FILENAME */
-#line 158 "engines/hypno/grammar_arc.y"
+ case 27: /* hline: ITOK FILENAME */
+#line 163 "engines/hypno/grammar_arc.y"
{
g_parsedArc->player = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1443 "engines/hypno/grammar_arc.cpp"
+#line 1460 "engines/hypno/grammar_arc.cpp"
break;
- case 27: /* hline: I1TOK FILENAME */
-#line 162 "engines/hypno/grammar_arc.y"
+ case 28: /* hline: I1TOK FILENAME */
+#line 167 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "I1 %s", (yyvsp[0].s));
}
-#line 1451 "engines/hypno/grammar_arc.cpp"
+#line 1468 "engines/hypno/grammar_arc.cpp"
break;
- case 28: /* hline: QTOK NUM NUM */
-#line 165 "engines/hypno/grammar_arc.y"
+ case 29: /* hline: QTOK NUM NUM */
+#line 170 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "Q %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1457 "engines/hypno/grammar_arc.cpp"
+#line 1474 "engines/hypno/grammar_arc.cpp"
break;
- case 29: /* hline: BNTOK FILENAME */
-#line 166 "engines/hypno/grammar_arc.y"
+ case 30: /* hline: BNTOK FILENAME */
+#line 171 "engines/hypno/grammar_arc.y"
{
if (Common::String("B0") == (yyvsp[-1].s))
g_parsedArc->beforeVideo = (yyvsp[0].s);
@@ -1484,11 +1501,11 @@ yyreduce:
debugC(1, kHypnoDebugParser, "BN %s", (yyvsp[0].s));
}
-#line 1488 "engines/hypno/grammar_arc.cpp"
+#line 1505 "engines/hypno/grammar_arc.cpp"
break;
- case 30: /* hline: SNTOK FILENAME enc flag */
-#line 192 "engines/hypno/grammar_arc.y"
+ case 31: /* hline: SNTOK FILENAME enc flag */
+#line 197 "engines/hypno/grammar_arc.y"
{
uint32 sampleRate = 11025;
if (Common::String("22K") == (yyvsp[-1].s) || Common::String("22k") == (yyvsp[-1].s))
@@ -1511,137 +1528,137 @@ yyreduce:
}
debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-2].s));
}
-#line 1515 "engines/hypno/grammar_arc.cpp"
+#line 1532 "engines/hypno/grammar_arc.cpp"
break;
- case 31: /* hline: HETOK BYTE NUM NUM */
-#line 214 "engines/hypno/grammar_arc.y"
+ case 32: /* hline: HETOK BYTE NUM NUM */
+#line 219 "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 1526 "engines/hypno/grammar_arc.cpp"
+#line 1543 "engines/hypno/grammar_arc.cpp"
break;
- case 32: /* hline: HLTOK BYTE NUM NUM */
-#line 220 "engines/hypno/grammar_arc.y"
+ case 33: /* hline: HLTOK BYTE NUM NUM */
+#line 225 "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 1536 "engines/hypno/grammar_arc.cpp"
+#line 1553 "engines/hypno/grammar_arc.cpp"
break;
- case 33: /* hline: HUTOK BYTE NUM NUM */
-#line 225 "engines/hypno/grammar_arc.y"
+ case 34: /* hline: HUTOK BYTE NUM NUM */
+#line 230 "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 1546 "engines/hypno/grammar_arc.cpp"
+#line 1563 "engines/hypno/grammar_arc.cpp"
break;
- case 34: /* hline: HTOK NAME NUM NUM */
-#line 230 "engines/hypno/grammar_arc.y"
+ case 35: /* hline: HTOK NAME NUM NUM */
+#line 235 "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 1557 "engines/hypno/grammar_arc.cpp"
+#line 1574 "engines/hypno/grammar_arc.cpp"
break;
- case 35: /* hline: HTOK RTOK NUM NUM */
-#line 236 "engines/hypno/grammar_arc.y"
+ case 36: /* hline: HTOK RTOK NUM NUM */
+#line 241 "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 1567 "engines/hypno/grammar_arc.cpp"
+#line 1584 "engines/hypno/grammar_arc.cpp"
break;
- case 36: /* hline: HTOK ATOK NUM NUM */
-#line 241 "engines/hypno/grammar_arc.y"
+ case 37: /* hline: HTOK ATOK NUM NUM */
+#line 246 "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 1577 "engines/hypno/grammar_arc.cpp"
+#line 1594 "engines/hypno/grammar_arc.cpp"
break;
- case 37: /* hline: HTOK PTOK NUM NUM */
-#line 246 "engines/hypno/grammar_arc.y"
+ case 38: /* hline: HTOK PTOK NUM NUM */
+#line 251 "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 1587 "engines/hypno/grammar_arc.cpp"
+#line 1604 "engines/hypno/grammar_arc.cpp"
break;
- case 38: /* hline: HTOK LTOK NUM NUM */
-#line 251 "engines/hypno/grammar_arc.y"
+ case 39: /* hline: HTOK LTOK NUM NUM */
+#line 256 "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 1597 "engines/hypno/grammar_arc.cpp"
+#line 1614 "engines/hypno/grammar_arc.cpp"
break;
- case 39: /* hline: H12TOK BYTE NUM NUM */
-#line 256 "engines/hypno/grammar_arc.y"
+ case 40: /* hline: H12TOK BYTE NUM NUM */
+#line 261 "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 1607 "engines/hypno/grammar_arc.cpp"
+#line 1624 "engines/hypno/grammar_arc.cpp"
break;
- case 40: /* hline: HTOK BYTE NUM NUM */
-#line 261 "engines/hypno/grammar_arc.y"
+ case 41: /* hline: HTOK BYTE NUM NUM */
+#line 266 "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 1617 "engines/hypno/grammar_arc.cpp"
+#line 1634 "engines/hypno/grammar_arc.cpp"
break;
- case 41: /* enc: ENCTOK */
-#line 268 "engines/hypno/grammar_arc.y"
+ case 42: /* enc: ENCTOK */
+#line 273 "engines/hypno/grammar_arc.y"
{ (yyval.s) = (yyvsp[0].s); }
-#line 1623 "engines/hypno/grammar_arc.cpp"
+#line 1640 "engines/hypno/grammar_arc.cpp"
break;
- case 42: /* enc: %empty */
-#line 269 "engines/hypno/grammar_arc.y"
+ case 43: /* enc: %empty */
+#line 274 "engines/hypno/grammar_arc.y"
{ (yyval.s) = scumm_strdup(""); }
-#line 1629 "engines/hypno/grammar_arc.cpp"
+#line 1646 "engines/hypno/grammar_arc.cpp"
break;
- case 43: /* flag: NAME */
-#line 272 "engines/hypno/grammar_arc.y"
+ case 44: /* flag: NAME */
+#line 277 "engines/hypno/grammar_arc.y"
{ (yyval.s) = (yyvsp[0].s); }
-#line 1635 "engines/hypno/grammar_arc.cpp"
+#line 1652 "engines/hypno/grammar_arc.cpp"
break;
- case 44: /* flag: %empty */
-#line 273 "engines/hypno/grammar_arc.y"
+ case 45: /* flag: %empty */
+#line 278 "engines/hypno/grammar_arc.y"
{ (yyval.s) = scumm_strdup(""); }
-#line 1641 "engines/hypno/grammar_arc.cpp"
+#line 1658 "engines/hypno/grammar_arc.cpp"
break;
- case 48: /* bline: FNTOK FILENAME */
-#line 281 "engines/hypno/grammar_arc.y"
+ case 49: /* bline: FNTOK FILENAME */
+#line 286 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
if (Common::String("F0") == (yyvsp[-1].s))
@@ -1650,404 +1667,404 @@ yyreduce:
shoot->explosionAnimation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1654 "engines/hypno/grammar_arc.cpp"
+#line 1671 "engines/hypno/grammar_arc.cpp"
break;
- case 49: /* bline: AVTOK NUM */
-#line 289 "engines/hypno/grammar_arc.y"
+ case 50: /* bline: AVTOK NUM */
+#line 294 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "AV %d", (yyvsp[0].i));
}
-#line 1662 "engines/hypno/grammar_arc.cpp"
+#line 1679 "engines/hypno/grammar_arc.cpp"
break;
- case 50: /* bline: ABTOK NUM */
-#line 292 "engines/hypno/grammar_arc.y"
+ case 51: /* bline: ABTOK NUM */
+#line 297 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "AB %d", (yyvsp[0].i));
}
-#line 1670 "engines/hypno/grammar_arc.cpp"
+#line 1687 "engines/hypno/grammar_arc.cpp"
break;
- case 51: /* bline: J0TOK NUM */
-#line 295 "engines/hypno/grammar_arc.y"
+ case 52: /* bline: J0TOK NUM */
+#line 300 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "J0 %d", (yyvsp[0].i));
}
-#line 1678 "engines/hypno/grammar_arc.cpp"
+#line 1695 "engines/hypno/grammar_arc.cpp"
break;
- case 52: /* bline: FNTOK NONETOK */
-#line 298 "engines/hypno/grammar_arc.y"
+ case 53: /* bline: FNTOK NONETOK */
+#line 303 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = "NONE";
debugC(1, kHypnoDebugParser, "FN NONE");
}
-#line 1688 "engines/hypno/grammar_arc.cpp"
+#line 1705 "engines/hypno/grammar_arc.cpp"
break;
- case 53: /* bline: FTOK FILENAME */
-#line 303 "engines/hypno/grammar_arc.y"
+ case 54: /* bline: FTOK FILENAME */
+#line 308 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1698 "engines/hypno/grammar_arc.cpp"
+#line 1715 "engines/hypno/grammar_arc.cpp"
break;
- case 54: /* bline: ITOK NAME */
-#line 308 "engines/hypno/grammar_arc.y"
+ case 55: /* bline: ITOK NAME */
+#line 313 "engines/hypno/grammar_arc.y"
{
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1707 "engines/hypno/grammar_arc.cpp"
+#line 1724 "engines/hypno/grammar_arc.cpp"
break;
- case 55: /* bline: ITOK BNTOK */
-#line 312 "engines/hypno/grammar_arc.y"
+ case 56: /* bline: ITOK BNTOK */
+#line 317 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == B1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1716 "engines/hypno/grammar_arc.cpp"
+#line 1733 "engines/hypno/grammar_arc.cpp"
break;
- case 56: /* bline: ITOK ATOK */
-#line 316 "engines/hypno/grammar_arc.y"
+ case 57: /* bline: ITOK ATOK */
+#line 321 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == A
shoot->name = "A";
debugC(1, kHypnoDebugParser, "I A");
}
-#line 1725 "engines/hypno/grammar_arc.cpp"
+#line 1742 "engines/hypno/grammar_arc.cpp"
break;
- case 57: /* bline: ITOK CTOK */
-#line 320 "engines/hypno/grammar_arc.y"
+ case 58: /* bline: ITOK CTOK */
+#line 325 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == C
shoot->name = "C";
debugC(1, kHypnoDebugParser, "I C");
}
-#line 1734 "engines/hypno/grammar_arc.cpp"
+#line 1751 "engines/hypno/grammar_arc.cpp"
break;
- case 58: /* bline: ITOK DTOK */
-#line 324 "engines/hypno/grammar_arc.y"
+ case 59: /* bline: ITOK DTOK */
+#line 329 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == D
shoot->name = "D";
debugC(1, kHypnoDebugParser, "I D");
}
-#line 1743 "engines/hypno/grammar_arc.cpp"
+#line 1760 "engines/hypno/grammar_arc.cpp"
break;
- case 59: /* bline: ITOK FTOK */
-#line 328 "engines/hypno/grammar_arc.y"
+ case 60: /* bline: ITOK FTOK */
+#line 333 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == F
shoot->name = "F";
debugC(1, kHypnoDebugParser, "I F");
}
-#line 1752 "engines/hypno/grammar_arc.cpp"
+#line 1769 "engines/hypno/grammar_arc.cpp"
break;
- case 60: /* bline: ITOK GTOK */
-#line 332 "engines/hypno/grammar_arc.y"
+ case 61: /* bline: ITOK GTOK */
+#line 337 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == G
shoot->name = "G";
debugC(1, kHypnoDebugParser, "I G");
}
-#line 1761 "engines/hypno/grammar_arc.cpp"
+#line 1778 "engines/hypno/grammar_arc.cpp"
break;
- case 61: /* bline: ITOK HTOK */
-#line 336 "engines/hypno/grammar_arc.y"
+ case 62: /* bline: ITOK HTOK */
+#line 341 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == H
shoot->name = "H";
debugC(1, kHypnoDebugParser, "I H");
}
-#line 1770 "engines/hypno/grammar_arc.cpp"
+#line 1787 "engines/hypno/grammar_arc.cpp"
break;
- case 62: /* bline: ITOK ITOK */
-#line 340 "engines/hypno/grammar_arc.y"
+ case 63: /* bline: ITOK ITOK */
+#line 345 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == I
shoot->name = "I";
debugC(1, kHypnoDebugParser, "I I");
}
-#line 1779 "engines/hypno/grammar_arc.cpp"
+#line 1796 "engines/hypno/grammar_arc.cpp"
break;
- case 63: /* bline: ITOK JTOK */
-#line 344 "engines/hypno/grammar_arc.y"
+ case 64: /* bline: ITOK JTOK */
+#line 349 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == J
shoot->name = "J";
debugC(1, kHypnoDebugParser, "I J");
}
-#line 1788 "engines/hypno/grammar_arc.cpp"
+#line 1805 "engines/hypno/grammar_arc.cpp"
break;
- case 64: /* bline: ITOK KTOK */
-#line 348 "engines/hypno/grammar_arc.y"
+ case 65: /* bline: ITOK KTOK */
+#line 353 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == K
shoot->name = "K";
debugC(1, kHypnoDebugParser, "I K");
}
-#line 1797 "engines/hypno/grammar_arc.cpp"
+#line 1814 "engines/hypno/grammar_arc.cpp"
break;
- case 65: /* bline: ITOK NTOK */
-#line 352 "engines/hypno/grammar_arc.y"
+ case 66: /* bline: ITOK NTOK */
+#line 357 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == N
shoot->name = "N";
debugC(1, kHypnoDebugParser, "I N");
}
-#line 1806 "engines/hypno/grammar_arc.cpp"
+#line 1823 "engines/hypno/grammar_arc.cpp"
break;
- case 66: /* bline: ITOK OTOK */
-#line 356 "engines/hypno/grammar_arc.y"
+ case 67: /* bline: ITOK OTOK */
+#line 361 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == O
shoot->name = "O";
debugC(1, kHypnoDebugParser, "I O");
}
-#line 1815 "engines/hypno/grammar_arc.cpp"
+#line 1832 "engines/hypno/grammar_arc.cpp"
break;
- case 67: /* bline: ITOK PTOK */
-#line 360 "engines/hypno/grammar_arc.y"
+ case 68: /* bline: ITOK PTOK */
+#line 365 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == P
shoot->name = "P";
debugC(1, kHypnoDebugParser, "I P");
}
-#line 1824 "engines/hypno/grammar_arc.cpp"
+#line 1841 "engines/hypno/grammar_arc.cpp"
break;
- case 68: /* bline: ITOK QTOK */
-#line 364 "engines/hypno/grammar_arc.y"
+ case 69: /* bline: ITOK QTOK */
+#line 369 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == Q
shoot->name = "Q";
debugC(1, kHypnoDebugParser, "I Q");
}
-#line 1833 "engines/hypno/grammar_arc.cpp"
+#line 1850 "engines/hypno/grammar_arc.cpp"
break;
- case 69: /* bline: ITOK RTOK */
-#line 368 "engines/hypno/grammar_arc.y"
+ case 70: /* bline: ITOK RTOK */
+#line 373 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == R
shoot->name = "R";
debugC(1, kHypnoDebugParser, "I R");
}
-#line 1842 "engines/hypno/grammar_arc.cpp"
+#line 1859 "engines/hypno/grammar_arc.cpp"
break;
- case 70: /* bline: ITOK SNTOK */
-#line 372 "engines/hypno/grammar_arc.y"
+ case 71: /* bline: ITOK SNTOK */
+#line 377 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == S1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1851 "engines/hypno/grammar_arc.cpp"
+#line 1868 "engines/hypno/grammar_arc.cpp"
break;
- case 71: /* bline: ITOK TTOK */
-#line 376 "engines/hypno/grammar_arc.y"
+ case 72: /* bline: ITOK TTOK */
+#line 381 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == T
shoot->name = "T";
debugC(1, kHypnoDebugParser, "I T");
}
-#line 1860 "engines/hypno/grammar_arc.cpp"
+#line 1877 "engines/hypno/grammar_arc.cpp"
break;
- case 72: /* bline: ITOK LTOK */
-#line 380 "engines/hypno/grammar_arc.y"
+ case 73: /* bline: ITOK LTOK */
+#line 385 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == L
shoot->name = "L";
debugC(1, kHypnoDebugParser, "I L");
}
-#line 1869 "engines/hypno/grammar_arc.cpp"
+#line 1886 "engines/hypno/grammar_arc.cpp"
break;
- case 73: /* bline: ITOK MTOK */
-#line 384 "engines/hypno/grammar_arc.y"
+ case 74: /* bline: ITOK MTOK */
+#line 389 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == M
shoot->name = "M";
debugC(1, kHypnoDebugParser, "I M");
}
-#line 1878 "engines/hypno/grammar_arc.cpp"
+#line 1895 "engines/hypno/grammar_arc.cpp"
break;
- case 74: /* bline: ITOK UTOK */
-#line 388 "engines/hypno/grammar_arc.y"
+ case 75: /* bline: ITOK UTOK */
+#line 393 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == U
shoot->name = "U";
debugC(1, kHypnoDebugParser, "I U");
}
-#line 1887 "engines/hypno/grammar_arc.cpp"
+#line 1904 "engines/hypno/grammar_arc.cpp"
break;
- case 75: /* bline: JTOK NUM */
-#line 392 "engines/hypno/grammar_arc.y"
+ case 76: /* bline: JTOK NUM */
+#line 397 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "J %d", (yyvsp[0].i));
}
-#line 1895 "engines/hypno/grammar_arc.cpp"
+#line 1912 "engines/hypno/grammar_arc.cpp"
break;
- case 76: /* bline: A0TOK NUM NUM */
-#line 395 "engines/hypno/grammar_arc.y"
+ case 77: /* bline: A0TOK NUM NUM */
+#line 400 "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 1904 "engines/hypno/grammar_arc.cpp"
+#line 1921 "engines/hypno/grammar_arc.cpp"
break;
- case 77: /* bline: RTOK NUM NUM */
-#line 399 "engines/hypno/grammar_arc.y"
+ case 78: /* bline: RTOK NUM NUM */
+#line 404 "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 1914 "engines/hypno/grammar_arc.cpp"
+#line 1931 "engines/hypno/grammar_arc.cpp"
break;
- case 78: /* bline: R01TOK NUM NUM */
-#line 404 "engines/hypno/grammar_arc.y"
+ case 79: /* bline: R01TOK NUM NUM */
+#line 409 "engines/hypno/grammar_arc.y"
{
shoot->objKillsCount = (yyvsp[-1].i);
shoot->objMissesCount = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "R0/1 %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1923 "engines/hypno/grammar_arc.cpp"
+#line 1940 "engines/hypno/grammar_arc.cpp"
break;
- case 79: /* bline: BNTOK NUM NUM */
-#line 408 "engines/hypno/grammar_arc.y"
+ case 80: /* bline: BNTOK NUM NUM */
+#line 413 "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 1933 "engines/hypno/grammar_arc.cpp"
+#line 1950 "engines/hypno/grammar_arc.cpp"
break;
- case 80: /* bline: KNTOK NUM NUM */
-#line 413 "engines/hypno/grammar_arc.y"
+ case 81: /* bline: KNTOK NUM NUM */
+#line 418 "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 1943 "engines/hypno/grammar_arc.cpp"
+#line 1960 "engines/hypno/grammar_arc.cpp"
break;
- case 81: /* bline: P0TOK NUM NUM */
-#line 418 "engines/hypno/grammar_arc.y"
+ case 82: /* bline: P0TOK NUM NUM */
+#line 423 "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 1952 "engines/hypno/grammar_arc.cpp"
+#line 1969 "engines/hypno/grammar_arc.cpp"
break;
- case 82: /* bline: OTOK NUM NUM */
-#line 422 "engines/hypno/grammar_arc.y"
+ case 83: /* bline: OTOK NUM NUM */
+#line 427 "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 1963 "engines/hypno/grammar_arc.cpp"
+#line 1980 "engines/hypno/grammar_arc.cpp"
break;
- case 83: /* bline: CTOK NUM */
-#line 428 "engines/hypno/grammar_arc.y"
+ case 84: /* bline: CTOK NUM */
+#line 433 "engines/hypno/grammar_arc.y"
{
shoot->timesToShoot = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i));
}
-#line 1972 "engines/hypno/grammar_arc.cpp"
+#line 1989 "engines/hypno/grammar_arc.cpp"
break;
- case 84: /* bline: HTOK NUM */
-#line 432 "engines/hypno/grammar_arc.y"
+ case 85: /* bline: HTOK NUM */
+#line 437 "engines/hypno/grammar_arc.y"
{
shoot->attackFrames.push_back((yyvsp[0].i));
debugC(1, kHypnoDebugParser, "H %d", (yyvsp[0].i)); }
-#line 1980 "engines/hypno/grammar_arc.cpp"
+#line 1997 "engines/hypno/grammar_arc.cpp"
break;
- case 85: /* bline: VTOK NUM */
-#line 435 "engines/hypno/grammar_arc.y"
+ case 86: /* bline: VTOK NUM */
+#line 440 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V %d", (yyvsp[0].i)); }
-#line 1986 "engines/hypno/grammar_arc.cpp"
+#line 2003 "engines/hypno/grammar_arc.cpp"
break;
- case 86: /* bline: WTOK NUM */
-#line 436 "engines/hypno/grammar_arc.y"
+ case 87: /* bline: WTOK NUM */
+#line 441 "engines/hypno/grammar_arc.y"
{
shoot->attackWeight = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "W %d", (yyvsp[0].i)); }
-#line 1994 "engines/hypno/grammar_arc.cpp"
+#line 2011 "engines/hypno/grammar_arc.cpp"
break;
- case 87: /* bline: DTOK NUM */
-#line 439 "engines/hypno/grammar_arc.y"
+ case 88: /* bline: DTOK NUM */
+#line 444 "engines/hypno/grammar_arc.y"
{
shoot->pointsToShoot = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
}
-#line 2003 "engines/hypno/grammar_arc.cpp"
+#line 2020 "engines/hypno/grammar_arc.cpp"
break;
- case 88: /* bline: LTOK NUM NUM */
-#line 443 "engines/hypno/grammar_arc.y"
+ case 89: /* bline: LTOK NUM NUM */
+#line 448 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "L %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2011 "engines/hypno/grammar_arc.cpp"
+#line 2028 "engines/hypno/grammar_arc.cpp"
break;
- case 89: /* bline: LTOK NUM */
-#line 446 "engines/hypno/grammar_arc.y"
+ case 90: /* bline: LTOK NUM */
+#line 451 "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 2021 "engines/hypno/grammar_arc.cpp"
+#line 2038 "engines/hypno/grammar_arc.cpp"
break;
- case 90: /* bline: MTOK NUM */
-#line 451 "engines/hypno/grammar_arc.y"
+ case 91: /* bline: MTOK NUM */
+#line 456 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "M %d", (yyvsp[0].i));
shoot->missedAnimation = (yyvsp[0].i);
}
-#line 2029 "engines/hypno/grammar_arc.cpp"
+#line 2046 "engines/hypno/grammar_arc.cpp"
break;
- case 91: /* bline: KTOK NUM */
-#line 454 "engines/hypno/grammar_arc.y"
+ case 92: /* bline: KTOK NUM */
+#line 459 "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 2038 "engines/hypno/grammar_arc.cpp"
+#line 2055 "engines/hypno/grammar_arc.cpp"
break;
- case 92: /* bline: KTOK NUM NUM */
-#line 458 "engines/hypno/grammar_arc.y"
+ case 93: /* bline: KTOK NUM NUM */
+#line 463 "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 2047 "engines/hypno/grammar_arc.cpp"
+#line 2064 "engines/hypno/grammar_arc.cpp"
break;
- case 93: /* bline: SNTOK FILENAME enc */
-#line 462 "engines/hypno/grammar_arc.y"
+ case 94: /* bline: SNTOK FILENAME enc */
+#line 467 "engines/hypno/grammar_arc.y"
{
if (Common::String("S0") == (yyvsp[-2].s))
shoot->enemySound = (yyvsp[-1].s);
@@ -2057,60 +2074,60 @@ yyreduce:
shoot->hitSound = (yyvsp[-1].s);
debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s)); }
-#line 2061 "engines/hypno/grammar_arc.cpp"
+#line 2078 "engines/hypno/grammar_arc.cpp"
break;
- case 94: /* bline: GTOK */
-#line 471 "engines/hypno/grammar_arc.y"
+ case 95: /* bline: GTOK */
+#line 476 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "G"); }
-#line 2067 "engines/hypno/grammar_arc.cpp"
+#line 2084 "engines/hypno/grammar_arc.cpp"
break;
- case 95: /* bline: TTOK NUM */
-#line 472 "engines/hypno/grammar_arc.y"
+ case 96: /* bline: TTOK NUM */
+#line 477 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "T %d", (yyvsp[0].i));
}
-#line 2075 "engines/hypno/grammar_arc.cpp"
+#line 2092 "engines/hypno/grammar_arc.cpp"
break;
- case 96: /* bline: TTOK */
-#line 475 "engines/hypno/grammar_arc.y"
+ case 97: /* bline: TTOK */
+#line 480 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "T");
}
-#line 2083 "engines/hypno/grammar_arc.cpp"
+#line 2100 "engines/hypno/grammar_arc.cpp"
break;
- case 97: /* bline: MTOK */
-#line 478 "engines/hypno/grammar_arc.y"
+ case 98: /* bline: MTOK */
+#line 483 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "M");
}
-#line 2091 "engines/hypno/grammar_arc.cpp"
+#line 2108 "engines/hypno/grammar_arc.cpp"
break;
- case 98: /* bline: NTOK */
-#line 481 "engines/hypno/grammar_arc.y"
+ case 99: /* bline: NTOK */
+#line 486 "engines/hypno/grammar_arc.y"
{
shoot->noEnemySound = true;
debugC(1, kHypnoDebugParser, "N"); }
-#line 2099 "engines/hypno/grammar_arc.cpp"
+#line 2116 "engines/hypno/grammar_arc.cpp"
break;
- case 99: /* bline: ZTOK */
-#line 484 "engines/hypno/grammar_arc.y"
+ case 100: /* bline: ZTOK */
+#line 489 "engines/hypno/grammar_arc.y"
{
g_parsedArc->shoots.push_back(*shoot);
//delete shoot;
//shoot = nullptr;
debugC(1, kHypnoDebugParser, "Z");
}
-#line 2110 "engines/hypno/grammar_arc.cpp"
+#line 2127 "engines/hypno/grammar_arc.cpp"
break;
-#line 2114 "engines/hypno/grammar_arc.cpp"
+#line 2131 "engines/hypno/grammar_arc.cpp"
default: break;
}
diff --git a/engines/hypno/grammar_arc.y b/engines/hypno/grammar_arc.y
index b836af470fc..225117c19a1 100644
--- a/engines/hypno/grammar_arc.y
+++ b/engines/hypno/grammar_arc.y
@@ -59,7 +59,7 @@ using namespace Hypno;
%token<i> NUM BYTE
// header
%token COMMENT AVTOK ABTOK CTOK DTOK HTOK HETOK HLTOK H12TOK HUTOK RETTOK QTOK RESTOK
-%token PTOK FTOK TTOK TPTOK ATOK VTOK OTOK LTOK MTOK NTOK NSTOK RTOK R01TOK
+%token PTOK FTOK TTOK TATOK TPTOK ATOK VTOK OTOK LTOK MTOK NTOK NSTOK RTOK R01TOK
%token ITOK I1TOK GTOK JTOK J0TOK KTOK UTOK ZTOK
// body
@@ -138,6 +138,11 @@ hline: CTOK NUM {
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "Tp %s %d %s", $2, $3, $4);
}
+ | TATOK NUM FILENAME enc {
+ ArcadeTransition at("", "", $3, $2);
+ g_parsedArc->transitions.push_back(at);
+ debugC(1, kHypnoDebugParser, "Ta %d %s", $2, $3);
+ }
| TTOK FILENAME NUM {
ArcadeTransition at($2, "", "", $3);
g_parsedArc->transitions.push_back(at);
diff --git a/engines/hypno/lexer_arc.cpp b/engines/hypno/lexer_arc.cpp
index 19de6982b7f..f0f0a0a68c4 100644
--- a/engines/hypno/lexer_arc.cpp
+++ b/engines/hypno/lexer_arc.cpp
@@ -633,8 +633,8 @@ static void yynoreturn yy_fatal_error ( const char* msg );
(yy_hold_char) = *yy_cp; \
*yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 54
-#define YY_END_OF_BUFFER 55
+#define YY_NUM_RULES 55
+#define YY_END_OF_BUFFER 56
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -642,17 +642,19 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[85] =
+static const flex_int16_t yy_accept[92] =
{ 0,
- 0, 0, 55, 53, 52, 50, 50, 53, 45, 45,
- 45, 45, 53, 12, 46, 2, 3, 46, 36, 27,
+ 0, 0, 56, 54, 53, 51, 51, 54, 46, 46,
+ 46, 46, 54, 12, 47, 2, 3, 47, 37, 27,
8, 22, 25, 26, 16, 19, 17, 14, 9, 28,
- 20, 46, 33, 29, 13, 31, 32, 46, 30, 46,
- 52, 45, 48, 45, 45, 45, 45, 0, 47, 38,
- 46, 10, 11, 39, 35, 7, 4, 5, 6, 23,
- 24, 40, 18, 46, 15, 41, 21, 37, 34, 42,
- 46, 44, 44, 43, 43, 45, 51, 46, 0, 1,
- 0, 0, 49, 0
+ 20, 47, 33, 29, 13, 31, 32, 47, 30, 47,
+ 53, 46, 49, 46, 46, 46, 46, 0, 47, 39,
+ 47, 47, 10, 11, 48, 40, 40, 36, 7, 4,
+ 5, 6, 23, 24, 41, 18, 47, 15, 42, 21,
+ 38, 35, 34, 43, 43, 47, 47, 47, 45, 45,
+ 44, 44, 46, 52, 47, 0, 1, 0, 0, 50,
+ 0
+
} ;
static const YY_CHAR yy_ec[256] =
@@ -666,11 +668,11 @@ static const YY_CHAR yy_ec[256] =
1, 1, 1, 1, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 1, 8, 1, 1, 41, 1, 42, 42, 42, 42,
+ 1, 41, 1, 1, 42, 1, 43, 44, 44, 44,
- 42, 42, 42, 42, 42, 42, 43, 42, 42, 42,
- 42, 44, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 1, 45, 1, 1, 1, 1, 1, 1,
+ 44, 44, 44, 44, 44, 44, 45, 44, 44, 44,
+ 44, 46, 44, 44, 44, 44, 44, 44, 44, 44,
+ 44, 44, 1, 47, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -687,113 +689,205 @@ static const YY_CHAR yy_ec[256] =
1, 1, 1, 1, 1
} ;
-static const YY_CHAR yy_meta[46] =
+static const YY_CHAR yy_meta[48] =
{ 0,
- 1, 1, 2, 1, 1, 1, 3, 4, 5, 5,
- 5, 5, 5, 1, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 1
+ 1, 1, 2, 1, 1, 1, 3, 4, 4, 4,
+ 4, 4, 4, 1, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 5, 4, 4, 4, 4, 4, 1
} ;
-static const flex_int16_t yy_base[91] =
+static const flex_int16_t yy_base[98] =
{ 0,
- 0, 0, 219, 220, 216, 220, 220, 37, 42, 47,
- 52, 57, 0, 63, 92, 209, 208, 207, 65, 206,
- 87, 72, 75, 77, 205, 204, 86, 108, 84, 203,
- 111, 115, 88, 202, 192, 186, 184, 106, 183, 0,
- 188, 124, 0, 129, 142, 118, 121, 185, 0, 180,
- 178, 176, 175, 174, 173, 172, 171, 170, 169, 168,
- 166, 165, 220, 137, 164, 163, 162, 161, 154, 152,
- 0, 0, 220, 0, 220, 150, 155, 149, 147, 136,
- 122, 120, 220, 220, 193, 198, 200, 202, 76, 204
+ 0, 0, 157, 616, 153, 616, 616, 39, 44, 49,
+ 54, 59, 0, 65, 99, 79, 85, 119, 125, 133,
+ 167, 137, 172, 201, 205, 208, 218, 239, 245, 241,
+ 259, 278, 282, 285, 287, 304, 316, 344, 339, 141,
+ 137, 73, 0, 112, 382, 55, 159, 109, 335, 349,
+ 386, 389, 391, 409, 0, 412, 422, 426, 432, 443,
+ 445, 449, 455, 466, 472, 616, 476, 486, 489, 499,
+ 503, 509, 520, 522, 526, 368, 554, 560, 0, 616,
+ 0, 616, 214, 101, 564, 93, 566, 94, 90, 616,
+ 616, 599, 604, 606, 608, 75, 610
+
} ;
-static const flex_int16_t yy_def[91] =
+static const flex_int16_t yy_def[98] =
{ 0,
- 84, 1, 84, 84, 84, 84, 84, 84, 85, 85,
- 85, 85, 86, 87, 87, 87, 87, 87, 87, 87,
- 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
- 87, 87, 87, 87, 87, 87, 87, 88, 87, 89,
- 84, 84, 85, 85, 85, 45, 45, 86, 90, 87,
- 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
- 87, 87, 84, 87, 87, 87, 87, 87, 87, 87,
- 89, 85, 84, 85, 84, 45, 86, 87, 84, 87,
- 84, 84, 84, 0, 84, 84, 84, 84, 84, 84
+ 91, 1, 91, 91, 91, 91, 91, 91, 92, 92,
+ 92, 92, 93, 94, 94, 94, 94, 94, 94, 94,
+ 94, 21, 21, 94, 21, 21, 21, 21, 21, 21,
+ 21, 94, 21, 21, 21, 21, 21, 95, 21, 96,
+ 91, 91, 92, 92, 92, 45, 45, 93, 97, 21,
+ 21, 21, 21, 21, 97, 21, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 91, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 91, 96, 96, 92, 91,
+ 92, 91, 45, 93, 21, 91, 21, 91, 91, 91,
+ 0, 91, 91, 91, 91, 91, 91
+
} ;
-static const flex_int16_t yy_nxt[266] =
+static const flex_int16_t yy_nxt[664] =
{ 0,
4, 5, 6, 7, 4, 4, 8, 4, 9, 10,
11, 12, 9, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 18, 18, 18, 7, 42, 42, 42, 42, 42,
- 44, 44, 44, 44, 44, 44, 45, 44, 44, 44,
- 44, 44, 46, 44, 44, 44, 44, 47, 44, 44,
- 49, 50, 49, 55, 55, 55, 55, 55, 52, 49,
- 71, 60, 49, 61, 49, 62, 62, 62, 62, 62,
- 63, 49, 66, 49, 49, 49, 56, 56, 53, 49,
-
- 54, 54, 54, 54, 54, 57, 54, 54, 54, 54,
- 54, 54, 58, 49, 64, 49, 65, 65, 49, 67,
- 67, 59, 49, 68, 68, 68, 68, 68, 83, 76,
- 82, 69, 42, 42, 42, 42, 42, 44, 44, 44,
- 44, 44, 74, 49, 49, 43, 51, 51, 51, 51,
- 44, 44, 44, 44, 44, 79, 49, 81, 77, 49,
- 74, 49, 75, 43, 78, 84, 72, 80, 49, 49,
- 49, 49, 49, 49, 43, 49, 49, 49, 49, 49,
- 49, 49, 49, 49, 72, 49, 73, 49, 77, 41,
- 49, 49, 43, 49, 84, 43, 43, 43, 48, 49,
-
- 48, 48, 48, 51, 51, 70, 70, 49, 49, 49,
- 49, 49, 49, 49, 49, 49, 49, 41, 84, 3,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84
+ 4, 40, 18, 18, 18, 18, 7, 42, 42, 42,
+ 42, 42, 44, 44, 44, 44, 44, 44, 45, 44,
+ 44, 44, 44, 44, 46, 44, 44, 44, 44, 47,
+ 44, 44, 49, 50, 51, 51, 51, 51, 78, 81,
+ 53, 42, 42, 42, 42, 42, 49, 51, 51, 51,
+ 51, 51, 49, 51, 51, 51, 51, 51, 90, 81,
+
+ 54, 82, 89, 88, 84, 55, 49, 56, 56, 56,
+ 56, 56, 84, 57, 57, 57, 57, 57, 57, 55,
+ 44, 44, 44, 44, 44, 55, 49, 51, 51, 51,
+ 51, 51, 49, 58, 58, 58, 58, 58, 41, 55,
+ 49, 51, 51, 51, 51, 51, 63, 51, 76, 77,
+ 77, 77, 77, 77, 41, 52, 91, 91, 91, 55,
+ 91, 91, 52, 91, 91, 55, 91, 83, 91, 91,
+ 91, 52, 91, 55, 49, 51, 59, 59, 51, 51,
+ 64, 51, 51, 43, 91, 60, 91, 91, 91, 91,
+ 52, 91, 61, 91, 91, 91, 91, 52, 91, 91,
+
+ 91, 62, 91, 43, 91, 91, 52, 55, 49, 65,
+ 65, 65, 65, 65, 51, 51, 91, 51, 51, 86,
+ 91, 91, 66, 52, 91, 91, 52, 51, 51, 91,
+ 52, 91, 91, 52, 91, 91, 52, 91, 43, 52,
+ 91, 55, 52, 52, 91, 91, 67, 68, 68, 51,
+ 51, 51, 52, 69, 51, 51, 91, 52, 43, 52,
+ 91, 91, 91, 52, 52, 91, 52, 70, 70, 51,
+ 52, 91, 91, 52, 91, 52, 91, 52, 91, 52,
+ 91, 91, 91, 91, 52, 49, 71, 71, 71, 71,
+ 71, 51, 51, 52, 51, 51, 51, 51, 91, 91,
+
+ 52, 91, 91, 52, 91, 52, 91, 52, 91, 91,
+ 52, 91, 52, 51, 51, 91, 52, 91, 55, 52,
+ 91, 52, 52, 91, 72, 51, 51, 73, 91, 52,
+ 91, 91, 91, 91, 52, 91, 91, 91, 52, 91,
+ 91, 52, 49, 49, 49, 49, 49, 49, 51, 51,
+ 52, 49, 74, 74, 74, 74, 74, 52, 51, 51,
+ 91, 91, 91, 91, 52, 91, 91, 52, 91, 91,
+ 91, 91, 91, 52, 52, 76, 76, 76, 76, 76,
+ 76, 91, 91, 52, 55, 52, 52, 52, 52, 52,
+ 44, 44, 44, 44, 44, 51, 51, 91, 51, 51,
+
+ 51, 51, 91, 91, 52, 91, 79, 52, 91, 52,
+ 91, 52, 91, 91, 52, 91, 52, 91, 51, 51,
+ 52, 51, 51, 52, 91, 52, 79, 52, 80, 91,
+ 52, 51, 51, 91, 52, 51, 51, 52, 91, 91,
+ 52, 51, 51, 52, 52, 91, 52, 52, 91, 91,
+ 52, 52, 51, 51, 51, 51, 52, 52, 51, 51,
+ 52, 52, 91, 52, 51, 51, 52, 52, 52, 91,
+ 52, 91, 91, 52, 52, 51, 51, 52, 91, 52,
+ 52, 51, 51, 52, 52, 51, 51, 91, 91, 52,
+ 52, 52, 91, 91, 52, 51, 51, 52, 51, 51,
+
+ 52, 52, 91, 85, 52, 91, 52, 52, 51, 51,
+ 52, 52, 51, 51, 52, 91, 91, 52, 51, 51,
+ 52, 52, 91, 52, 52, 91, 91, 52, 52, 51,
+ 51, 51, 51, 52, 52, 51, 51, 52, 52, 91,
+ 52, 91, 91, 52, 52, 52, 91, 52, 91, 91,
+ 91, 52, 91, 91, 52, 91, 52, 91, 91, 91,
+ 52, 76, 77, 77, 77, 77, 77, 76, 77, 77,
+ 77, 77, 77, 51, 51, 51, 51, 91, 91, 91,
+ 91, 91, 87, 91, 52, 91, 91, 91, 91, 52,
+ 91, 52, 91, 91, 91, 91, 91, 91, 52, 91,
+
+ 52, 43, 43, 43, 48, 91, 48, 48, 48, 52,
+ 52, 75, 75, 55, 55, 3, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91
} ;
-static const flex_int16_t yy_chk[266] =
+static const flex_int16_t yy_chk[664] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 8, 8, 8, 8, 8,
- 9, 9, 9, 9, 9, 10, 10, 10, 10, 10,
- 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
- 14, 14, 19, 19, 19, 19, 19, 19, 14, 22,
- 89, 22, 23, 23, 24, 24, 24, 24, 24, 24,
- 27, 29, 29, 27, 21, 33, 21, 21, 14, 15,
-
- 15, 15, 15, 15, 15, 21, 15, 15, 15, 15,
- 15, 15, 21, 38, 27, 28, 28, 28, 31, 31,
- 31, 21, 32, 32, 32, 32, 32, 32, 82, 47,
- 81, 33, 42, 42, 42, 42, 42, 44, 44, 44,
- 44, 44, 46, 80, 64, 47, 38, 38, 38, 38,
- 45, 45, 45, 45, 45, 76, 78, 79, 77, 70,
- 46, 69, 46, 47, 64, 47, 45, 78, 68, 67,
- 66, 65, 62, 61, 76, 60, 59, 58, 57, 56,
- 55, 54, 53, 52, 45, 51, 45, 50, 48, 41,
- 39, 37, 76, 36, 76, 85, 85, 85, 86, 35,
-
- 86, 86, 86, 87, 87, 88, 88, 90, 90, 34,
- 30, 26, 25, 20, 18, 17, 16, 5, 3, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84
+ 1, 1, 1, 1, 1, 1, 1, 8, 8, 8,
+ 8, 8, 9, 9, 9, 9, 9, 10, 10, 10,
+ 10, 10, 11, 11, 11, 11, 11, 12, 12, 12,
+ 12, 12, 14, 14, 14, 14, 14, 14, 96, 46,
+ 14, 42, 42, 42, 42, 42, 16, 16, 16, 16,
+ 16, 16, 17, 17, 17, 17, 17, 17, 89, 46,
+
+ 14, 46, 88, 86, 84, 14, 15, 15, 15, 15,
+ 15, 15, 48, 15, 15, 15, 15, 15, 15, 16,
+ 44, 44, 44, 44, 44, 17, 18, 18, 18, 18,
+ 18, 18, 19, 19, 19, 19, 19, 19, 41, 15,
+ 20, 20, 20, 20, 20, 20, 22, 22, 40, 40,
+ 40, 40, 40, 40, 5, 22, 3, 0, 0, 18,
+ 0, 0, 22, 0, 0, 19, 0, 47, 0, 0,
+ 0, 22, 0, 20, 21, 21, 21, 21, 21, 21,
+ 23, 23, 23, 47, 0, 21, 0, 0, 0, 0,
+ 23, 0, 21, 0, 0, 0, 0, 23, 0, 0,
+
+ 0, 21, 0, 47, 0, 47, 23, 21, 24, 24,
+ 24, 24, 24, 24, 25, 25, 0, 26, 26, 83,
+ 0, 0, 27, 25, 0, 0, 26, 27, 27, 0,
+ 25, 0, 0, 26, 0, 0, 27, 0, 83, 25,
+ 0, 24, 26, 27, 0, 0, 27, 28, 28, 28,
+ 30, 30, 27, 29, 29, 29, 0, 28, 83, 30,
+ 83, 0, 0, 29, 28, 0, 30, 31, 31, 31,
+ 29, 0, 0, 28, 0, 30, 0, 31, 0, 29,
+ 0, 0, 0, 0, 31, 32, 32, 32, 32, 32,
+ 32, 33, 33, 31, 34, 34, 35, 35, 0, 0,
+
+ 33, 0, 0, 34, 0, 35, 0, 33, 0, 0,
+ 34, 0, 35, 36, 36, 0, 33, 0, 32, 34,
+ 0, 35, 36, 0, 33, 37, 37, 33, 0, 36,
+ 0, 0, 0, 0, 37, 0, 0, 0, 36, 0,
+ 0, 37, 49, 49, 49, 49, 49, 49, 39, 39,
+ 37, 38, 38, 38, 38, 38, 38, 39, 50, 50,
+ 0, 0, 0, 0, 39, 0, 0, 50, 0, 0,
+ 0, 0, 0, 39, 50, 76, 76, 76, 76, 76,
+ 76, 0, 0, 50, 38, 38, 38, 38, 38, 38,
+ 45, 45, 45, 45, 45, 51, 51, 0, 52, 52,
+
+ 53, 53, 0, 0, 51, 0, 45, 52, 0, 53,
+ 0, 51, 0, 0, 52, 0, 53, 0, 54, 54,
+ 51, 56, 56, 52, 0, 53, 45, 54, 45, 0,
+ 56, 57, 57, 0, 54, 58, 58, 56, 0, 0,
+ 57, 59, 59, 54, 58, 0, 56, 57, 0, 0,
+ 59, 58, 60, 60, 61, 61, 57, 59, 62, 62,
+ 58, 60, 0, 61, 63, 63, 59, 62, 60, 0,
+ 61, 0, 0, 63, 62, 64, 64, 60, 0, 61,
+ 63, 65, 65, 62, 64, 67, 67, 0, 0, 63,
+ 65, 64, 0, 0, 67, 68, 68, 65, 69, 69,
+
+ 64, 67, 0, 67, 68, 0, 65, 69, 70, 70,
+ 67, 68, 71, 71, 69, 0, 0, 70, 72, 72,
+ 68, 71, 0, 69, 70, 0, 0, 72, 71, 73,
+ 73, 74, 74, 70, 72, 75, 75, 71, 73, 0,
+ 74, 0, 0, 72, 75, 73, 0, 74, 0, 0,
+ 0, 75, 0, 0, 73, 0, 74, 0, 0, 0,
+ 75, 77, 77, 77, 77, 77, 77, 78, 78, 78,
+ 78, 78, 78, 85, 85, 87, 87, 0, 0, 0,
+ 0, 0, 85, 0, 87, 0, 0, 0, 0, 85,
+ 0, 87, 0, 0, 0, 0, 0, 0, 85, 0,
+
+ 87, 92, 92, 92, 93, 0, 93, 93, 93, 94,
+ 94, 95, 95, 97, 97, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
+ 91, 91, 91
} ;
/* Table of booleans, true if rule could match eol. */
-static const flex_int32_t yy_rule_can_match_eol[55] =
+static const flex_int32_t yy_rule_can_match_eol[56] =
{ 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, };
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, };
static yy_state_type yy_last_accepting_state;
static char *yy_last_accepting_cpos;
@@ -840,8 +934,8 @@ char *yytext;
#include "hypno/grammar.h"
#include "hypno/tokens_arc.h"
-#line 843 "engines/hypno/lexer_arc.cpp"
-#line 844 "engines/hypno/lexer_arc.cpp"
+#line 937 "engines/hypno/lexer_arc.cpp"
+#line 938 "engines/hypno/lexer_arc.cpp"
#define INITIAL 0
@@ -1058,7 +1152,7 @@ YY_DECL
{
#line 42 "engines/hypno/lexer_arc.l"
-#line 1061 "engines/hypno/lexer_arc.cpp"
+#line 1155 "engines/hypno/lexer_arc.cpp"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -1085,13 +1179,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 85 )
+ if ( yy_current_state >= 92 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_current_state != 84 );
+ while ( yy_current_state != 91 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
@@ -1294,47 +1388,47 @@ return TPTOK;
case 35:
YY_RULE_SETUP
#line 77 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FNTOK;
+return TATOK;
YY_BREAK
case 36:
YY_RULE_SETUP
#line 78 "engines/hypno/lexer_arc.l"
-return FTOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FNTOK;
YY_BREAK
case 37:
YY_RULE_SETUP
#line 79 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return SNTOK;
+return FTOK;
YY_BREAK
case 38:
YY_RULE_SETUP
#line 80 "engines/hypno/lexer_arc.l"
-return A0TOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return SNTOK;
YY_BREAK
case 39:
YY_RULE_SETUP
#line 81 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return BNTOK;
+return A0TOK;
YY_BREAK
case 40:
YY_RULE_SETUP
#line 82 "engines/hypno/lexer_arc.l"
-return KNTOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return BNTOK;
YY_BREAK
case 41:
YY_RULE_SETUP
#line 83 "engines/hypno/lexer_arc.l"
-return P0TOK;
+return KNTOK;
YY_BREAK
case 42:
YY_RULE_SETUP
#line 84 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return YXTOK;
+return P0TOK;
YY_BREAK
case 43:
YY_RULE_SETUP
#line 85 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ENCTOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return YXTOK;
YY_BREAK
case 44:
YY_RULE_SETUP
@@ -1344,17 +1438,17 @@ HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ENCTOK;
case 45:
YY_RULE_SETUP
#line 87 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.i = atoi(HYPNO_ARC_text); return NUM;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ENCTOK;
YY_BREAK
case 46:
YY_RULE_SETUP
#line 88 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return NAME;
+HYPNO_ARC_lval.i = atoi(HYPNO_ARC_text); return NUM;
YY_BREAK
case 47:
YY_RULE_SETUP
#line 89 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return NAME;
YY_BREAK
case 48:
YY_RULE_SETUP
@@ -1364,35 +1458,40 @@ HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
case 49:
YY_RULE_SETUP
#line 91 "engines/hypno/lexer_arc.l"
-return RESTOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
YY_BREAK
case 50:
-/* rule 50 can match eol */
YY_RULE_SETUP
#line 92 "engines/hypno/lexer_arc.l"
-return RETTOK;
+return RESTOK;
YY_BREAK
case 51:
+/* rule 51 can match eol */
YY_RULE_SETUP
#line 93 "engines/hypno/lexer_arc.l"
-/* ignore comment */
+return RETTOK;
YY_BREAK
case 52:
YY_RULE_SETUP
#line 94 "engines/hypno/lexer_arc.l"
-/* ignore whitespace */;
+/* ignore comment */
YY_BREAK
case 53:
YY_RULE_SETUP
#line 95 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.i = HYPNO_ARC_text[0]; return BYTE;
+/* ignore whitespace */;
YY_BREAK
case 54:
YY_RULE_SETUP
#line 96 "engines/hypno/lexer_arc.l"
+HYPNO_ARC_lval.i = HYPNO_ARC_text[0]; return BYTE;
+ YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 97 "engines/hypno/lexer_arc.l"
ECHO;
YY_BREAK
-#line 1395 "engines/hypno/lexer_arc.cpp"
+#line 1494 "engines/hypno/lexer_arc.cpp"
case YY_STATE_EOF(INITIAL):
yyterminate();
@@ -1690,7 +1789,7 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 85 )
+ if ( yy_current_state >= 92 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -1718,11 +1817,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 85 )
+ if ( yy_current_state >= 92 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 84);
+ yy_is_jam = (yy_current_state == 91);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -2369,7 +2468,7 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 96 "engines/hypno/lexer_arc.l"
+#line 97 "engines/hypno/lexer_arc.l"
namespace Hypno {
diff --git a/engines/hypno/lexer_arc.l b/engines/hypno/lexer_arc.l
index 41a87443f99..4796325dd9e 100644
--- a/engines/hypno/lexer_arc.l
+++ b/engines/hypno/lexer_arc.l
@@ -74,6 +74,7 @@ W return WTOK;
X return XTOK;
T return TTOK;
Tp return TPTOK;
+Ta return TATOK;
F[0-9] HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FNTOK;
F return FTOK;
S[0-9] HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return SNTOK;
@@ -85,7 +86,7 @@ Y[A-Z0-9] HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return YXTOK;
22[k|K] HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ENCTOK;
11[k|K] HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ENCTOK;
[\-]?[0-9]+ HYPNO_ARC_lval.i = atoi(HYPNO_ARC_text); return NUM;
-[A-Za-z_][A-Za-z_0-9]* HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return NAME;
+[A-Za-z_][A-Za-z_0-9]*[0-9\.]* HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return NAME;
[A-Za-z][A-Za-z_0-9\\\.]+ HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
[0-9][\-A-Za-z_0-9\\\.]+ HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
320\,200 return RESTOK;
diff --git a/engines/hypno/tokens_arc.h b/engines/hypno/tokens_arc.h
index 8130045f4ab..89c00812ec1 100644
--- a/engines/hypno/tokens_arc.h
+++ b/engines/hypno/tokens_arc.h
@@ -89,31 +89,32 @@ extern int HYPNO_ARC_debug;
PTOK = 282, /* PTOK */
FTOK = 283, /* FTOK */
TTOK = 284, /* TTOK */
- TPTOK = 285, /* TPTOK */
- ATOK = 286, /* ATOK */
- VTOK = 287, /* VTOK */
- OTOK = 288, /* OTOK */
- LTOK = 289, /* LTOK */
- MTOK = 290, /* MTOK */
- NTOK = 291, /* NTOK */
- NSTOK = 292, /* NSTOK */
- RTOK = 293, /* RTOK */
- R01TOK = 294, /* R01TOK */
- ITOK = 295, /* ITOK */
- I1TOK = 296, /* I1TOK */
- GTOK = 297, /* GTOK */
- JTOK = 298, /* JTOK */
- J0TOK = 299, /* J0TOK */
- KTOK = 300, /* KTOK */
- UTOK = 301, /* UTOK */
- ZTOK = 302, /* ZTOK */
- NONETOK = 303, /* NONETOK */
- A0TOK = 304, /* A0TOK */
- P0TOK = 305, /* P0TOK */
- WTOK = 306, /* WTOK */
- XTOK = 307, /* XTOK */
- CB3TOK = 308, /* CB3TOK */
- C02TOK = 309 /* C02TOK */
+ TATOK = 285, /* TATOK */
+ TPTOK = 286, /* TPTOK */
+ ATOK = 287, /* ATOK */
+ VTOK = 288, /* VTOK */
+ OTOK = 289, /* OTOK */
+ LTOK = 290, /* LTOK */
+ MTOK = 291, /* MTOK */
+ NTOK = 292, /* NTOK */
+ NSTOK = 293, /* NSTOK */
+ RTOK = 294, /* RTOK */
+ R01TOK = 295, /* R01TOK */
+ ITOK = 296, /* ITOK */
+ I1TOK = 297, /* I1TOK */
+ GTOK = 298, /* GTOK */
+ JTOK = 299, /* JTOK */
+ J0TOK = 300, /* J0TOK */
+ KTOK = 301, /* KTOK */
+ UTOK = 302, /* UTOK */
+ ZTOK = 303, /* ZTOK */
+ NONETOK = 304, /* NONETOK */
+ A0TOK = 305, /* A0TOK */
+ P0TOK = 306, /* P0TOK */
+ WTOK = 307, /* WTOK */
+ XTOK = 308, /* XTOK */
+ CB3TOK = 309, /* CB3TOK */
+ C02TOK = 310 /* C02TOK */
};
typedef enum HYPNO_ARC_tokentype HYPNO_ARC_token_kind_t;
#endif
@@ -127,7 +128,7 @@ union HYPNO_ARC_STYPE
char *s; /* string value */
int i; /* integer value */
-#line 131 "engines/hypno/tokens_arc.h"
+#line 132 "engines/hypno/tokens_arc.h"
};
typedef union HYPNO_ARC_STYPE HYPNO_ARC_STYPE;
Commit: b50b506ba407815e59d62f626521e4aee7b6318b
https://github.com/scummvm/scummvm/commit/b50b506ba407815e59d62f626521e4aee7b6318b
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-04-11T21:17:34+02:00
Commit Message:
HYPNO: added Soldier Boyz to the original copyright string
Changed paths:
engines/hypno/detection.cpp
diff --git a/engines/hypno/detection.cpp b/engines/hypno/detection.cpp
index 2e44e9e9310..5389c88410d 100644
--- a/engines/hypno/detection.cpp
+++ b/engines/hypno/detection.cpp
@@ -218,7 +218,8 @@ public:
const char *getOriginalCopyright() const override {
return "Marvel Comics Spider-Man: The Sinister Six (C) Brooklyn Multimedia\n"
- "Wetlands (C) Hypnotix, Inc.";
+ "Wetlands (C) Hypnotix, Inc.\n"
+ "Soldier Bozy (C) Hypnotix, Inc., Motion Picture Corporation of America Interactive";
}
const DebugChannelDef *getDebugChannels() const override {
Commit: 66398db6459046e6bcce784c9b339f230e025c4a
https://github.com/scummvm/scummvm/commit/66398db6459046e6bcce784c9b339f230e025c4a
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-04-11T21:17:34+02:00
Commit Message:
HYPNO: implemented sound transition in boyz
Changed paths:
engines/hypno/arcade.cpp
engines/hypno/grammar.h
diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index d83a92e4225..ef1bfcdb830 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -339,21 +339,26 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
ArcadeTransition at = *arc->transitions.begin();
if (_background->decoder->getCurFrame() > (int) at.time) {
transition = true;
- _background->decoder->pauseVideo(true);
- debugC(1, kHypnoDebugArcade, "Playing transition %s", at.video.c_str());
- MVideo video(at.video, Common::Point(0, 0), false, true, false);
- disableCursor();
- runIntro(video);
+ if (!at.video.empty()) {
+ _background->decoder->pauseVideo(true);
+ debugC(1, kHypnoDebugArcade, "Playing transition %s", at.video.c_str());
+ MVideo video(at.video, Common::Point(0, 0), false, true, false);
+ disableCursor();
+ runIntro(video);
- if (!at.palette.empty())
- currentPalette = at.palette;
+ if (!at.palette.empty())
+ currentPalette = at.palette;
- loadPalette(currentPalette);
- _background->decoder->pauseVideo(false);
- updateScreen(*_background);
- drawScreen();
- drawCursorArcade(mousePos);
+ loadPalette(currentPalette);
+ _background->decoder->pauseVideo(false);
+ updateScreen(*_background);
+ drawScreen();
+ drawCursorArcade(mousePos);
+ } else if (!at.sound.empty()) {
+ playSound(at.sound, 1);
+ } else
+ error ("Invalid transition at %d", at.time);
arc->transitions.pop_front();
if (!_music.empty())
diff --git a/engines/hypno/grammar.h b/engines/hypno/grammar.h
index df01dd2ddc8..9ce195ecc59 100644
--- a/engines/hypno/grammar.h
+++ b/engines/hypno/grammar.h
@@ -496,16 +496,16 @@ typedef Common::Array<Segment> Segments;
class ArcadeTransition {
public:
- ArcadeTransition(Filename video_, Filename palette_, Filename audio_, uint32 time_) {
+ ArcadeTransition(Filename video_, Filename palette_, Filename sound_, uint32 time_) {
video = video_;
palette = palette_;
- audio = audio_;
+ sound = sound_;
time = time_;
}
Filename video;
Filename palette;
- Filename audio;
+ Filename sound;
uint32 time;
};
Commit: 034051a5d4acd60258e6b2a9192e3a0f0a4130fb
https://github.com/scummvm/scummvm/commit/034051a5d4acd60258e6b2a9192e3a0f0a4130fb
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-04-11T21:17:34+02:00
Commit Message:
HYPNO: improved parser to load level c17 in boyz
Changed paths:
engines/hypno/boyz/boyz.cpp
engines/hypno/grammar_arc.cpp
engines/hypno/grammar_arc.y
engines/hypno/lexer_arc.cpp
engines/hypno/lexer_arc.l
engines/hypno/tokens_arc.h
diff --git a/engines/hypno/boyz/boyz.cpp b/engines/hypno/boyz/boyz.cpp
index 6a5f62200a9..e4af91ce13b 100644
--- a/engines/hypno/boyz/boyz.cpp
+++ b/engines/hypno/boyz/boyz.cpp
@@ -44,6 +44,7 @@ void BoyzEngine::loadAssets() {
loadArcadeLevel("c14.mi_", "c15.mi_", "??", "");
loadArcadeLevel("c15.mi_", "c16.mi_", "??", "");
loadArcadeLevel("c16.mi_", "c17.mi_", "??", "");
+ loadArcadeLevel("c17.mi_", "c18.mi_", "??", "");
loadLib("sound/", "misc/sound.lib", true);
diff --git a/engines/hypno/grammar_arc.cpp b/engines/hypno/grammar_arc.cpp
index 663e973cce7..885d9d440f2 100644
--- a/engines/hypno/grammar_arc.cpp
+++ b/engines/hypno/grammar_arc.cpp
@@ -144,56 +144,57 @@ enum yysymbol_kind_t
YYSYMBOL_NUM = 12, /* NUM */
YYSYMBOL_BYTE = 13, /* BYTE */
YYSYMBOL_COMMENT = 14, /* COMMENT */
- YYSYMBOL_AVTOK = 15, /* AVTOK */
- YYSYMBOL_ABTOK = 16, /* ABTOK */
- YYSYMBOL_CTOK = 17, /* CTOK */
- YYSYMBOL_DTOK = 18, /* DTOK */
- YYSYMBOL_HTOK = 19, /* HTOK */
- YYSYMBOL_HETOK = 20, /* HETOK */
- YYSYMBOL_HLTOK = 21, /* HLTOK */
- YYSYMBOL_H12TOK = 22, /* H12TOK */
- YYSYMBOL_HUTOK = 23, /* HUTOK */
- YYSYMBOL_RETTOK = 24, /* RETTOK */
- YYSYMBOL_QTOK = 25, /* QTOK */
- YYSYMBOL_RESTOK = 26, /* RESTOK */
- YYSYMBOL_PTOK = 27, /* PTOK */
- YYSYMBOL_FTOK = 28, /* FTOK */
- YYSYMBOL_TTOK = 29, /* TTOK */
- YYSYMBOL_TATOK = 30, /* TATOK */
- YYSYMBOL_TPTOK = 31, /* TPTOK */
- YYSYMBOL_ATOK = 32, /* ATOK */
- YYSYMBOL_VTOK = 33, /* VTOK */
- YYSYMBOL_OTOK = 34, /* OTOK */
- YYSYMBOL_LTOK = 35, /* LTOK */
- YYSYMBOL_MTOK = 36, /* MTOK */
- YYSYMBOL_NTOK = 37, /* NTOK */
- YYSYMBOL_NSTOK = 38, /* NSTOK */
- YYSYMBOL_RTOK = 39, /* RTOK */
- YYSYMBOL_R01TOK = 40, /* R01TOK */
- YYSYMBOL_ITOK = 41, /* ITOK */
- YYSYMBOL_I1TOK = 42, /* I1TOK */
- YYSYMBOL_GTOK = 43, /* GTOK */
- YYSYMBOL_JTOK = 44, /* JTOK */
- YYSYMBOL_J0TOK = 45, /* J0TOK */
- YYSYMBOL_KTOK = 46, /* KTOK */
- YYSYMBOL_UTOK = 47, /* UTOK */
- YYSYMBOL_ZTOK = 48, /* ZTOK */
- YYSYMBOL_NONETOK = 49, /* NONETOK */
- YYSYMBOL_A0TOK = 50, /* A0TOK */
- YYSYMBOL_P0TOK = 51, /* P0TOK */
- YYSYMBOL_WTOK = 52, /* WTOK */
- YYSYMBOL_XTOK = 53, /* XTOK */
- YYSYMBOL_CB3TOK = 54, /* CB3TOK */
- YYSYMBOL_C02TOK = 55, /* C02TOK */
- YYSYMBOL_YYACCEPT = 56, /* $accept */
- YYSYMBOL_start = 57, /* start */
- YYSYMBOL_58_1 = 58, /* $@1 */
- YYSYMBOL_header = 59, /* header */
- YYSYMBOL_hline = 60, /* hline */
- YYSYMBOL_enc = 61, /* enc */
- YYSYMBOL_flag = 62, /* flag */
- YYSYMBOL_body = 63, /* body */
- YYSYMBOL_bline = 64 /* bline */
+ YYSYMBOL_ALTOK = 15, /* ALTOK */
+ YYSYMBOL_AVTOK = 16, /* AVTOK */
+ YYSYMBOL_ABTOK = 17, /* ABTOK */
+ YYSYMBOL_CTOK = 18, /* CTOK */
+ YYSYMBOL_DTOK = 19, /* DTOK */
+ YYSYMBOL_HTOK = 20, /* HTOK */
+ YYSYMBOL_HETOK = 21, /* HETOK */
+ YYSYMBOL_HLTOK = 22, /* HLTOK */
+ YYSYMBOL_H12TOK = 23, /* H12TOK */
+ YYSYMBOL_HUTOK = 24, /* HUTOK */
+ YYSYMBOL_RETTOK = 25, /* RETTOK */
+ YYSYMBOL_QTOK = 26, /* QTOK */
+ YYSYMBOL_RESTOK = 27, /* RESTOK */
+ YYSYMBOL_PTOK = 28, /* PTOK */
+ YYSYMBOL_FTOK = 29, /* FTOK */
+ YYSYMBOL_TTOK = 30, /* TTOK */
+ YYSYMBOL_TATOK = 31, /* TATOK */
+ YYSYMBOL_TPTOK = 32, /* TPTOK */
+ YYSYMBOL_ATOK = 33, /* ATOK */
+ YYSYMBOL_VTOK = 34, /* VTOK */
+ YYSYMBOL_OTOK = 35, /* OTOK */
+ YYSYMBOL_LTOK = 36, /* LTOK */
+ YYSYMBOL_MTOK = 37, /* MTOK */
+ YYSYMBOL_NTOK = 38, /* NTOK */
+ YYSYMBOL_NSTOK = 39, /* NSTOK */
+ YYSYMBOL_RTOK = 40, /* RTOK */
+ YYSYMBOL_R01TOK = 41, /* R01TOK */
+ YYSYMBOL_ITOK = 42, /* ITOK */
+ YYSYMBOL_I1TOK = 43, /* I1TOK */
+ YYSYMBOL_GTOK = 44, /* GTOK */
+ YYSYMBOL_JTOK = 45, /* JTOK */
+ YYSYMBOL_J0TOK = 46, /* J0TOK */
+ YYSYMBOL_KTOK = 47, /* KTOK */
+ YYSYMBOL_UTOK = 48, /* UTOK */
+ YYSYMBOL_ZTOK = 49, /* ZTOK */
+ YYSYMBOL_NONETOK = 50, /* NONETOK */
+ YYSYMBOL_A0TOK = 51, /* A0TOK */
+ YYSYMBOL_P0TOK = 52, /* P0TOK */
+ YYSYMBOL_WTOK = 53, /* WTOK */
+ YYSYMBOL_XTOK = 54, /* XTOK */
+ YYSYMBOL_CB3TOK = 55, /* CB3TOK */
+ YYSYMBOL_C02TOK = 56, /* C02TOK */
+ YYSYMBOL_YYACCEPT = 57, /* $accept */
+ YYSYMBOL_start = 58, /* start */
+ YYSYMBOL_59_1 = 59, /* $@1 */
+ YYSYMBOL_header = 60, /* header */
+ YYSYMBOL_hline = 61, /* hline */
+ YYSYMBOL_enc = 62, /* enc */
+ YYSYMBOL_flag = 63, /* flag */
+ YYSYMBOL_body = 64, /* body */
+ YYSYMBOL_bline = 65 /* bline */
};
typedef enum yysymbol_kind_t yysymbol_kind_t;
@@ -521,19 +522,19 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 6
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 191
+#define YYLAST 193
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 56
+#define YYNTOKENS 57
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 9
/* YYNRULES -- Number of rules. */
-#define YYNRULES 100
+#define YYNRULES 101
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 200
+#define YYNSTATES 203
/* YYMAXUTOK -- Last valid token kind. */
-#define YYMAXUTOK 310
+#define YYMAXUTOK 311
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -578,7 +579,7 @@ static const yytype_int8 yytranslate[] =
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55
+ 55, 56
};
#if HYPNO_ARC_DEBUG
@@ -590,12 +591,12 @@ static const yytype_int16 yyrline[] =
136, 141, 146, 151, 152, 156, 160, 163, 167, 170,
171, 197, 219, 225, 230, 235, 241, 246, 251, 256,
261, 266, 273, 274, 277, 278, 281, 282, 283, 286,
- 294, 297, 300, 303, 308, 313, 317, 321, 325, 329,
- 333, 337, 341, 345, 349, 353, 357, 361, 365, 369,
- 373, 377, 381, 385, 389, 393, 397, 400, 404, 409,
- 413, 418, 423, 427, 433, 437, 440, 441, 444, 448,
- 451, 456, 459, 463, 467, 476, 477, 480, 483, 486,
- 489
+ 294, 297, 300, 303, 306, 311, 316, 320, 324, 328,
+ 332, 336, 340, 344, 348, 352, 356, 360, 364, 368,
+ 372, 376, 380, 384, 388, 392, 396, 400, 403, 407,
+ 412, 416, 421, 426, 430, 436, 440, 443, 444, 447,
+ 451, 454, 459, 462, 466, 470, 479, 480, 483, 486,
+ 489, 492
};
#endif
@@ -613,13 +614,13 @@ static const char *const yytname[] =
{
"\"end of file\"", "error", "\"invalid token\"", "NAME", "FILENAME",
"BNTOK", "SNTOK", "KNTOK", "YXTOK", "FNTOK", "ENCTOK", "ONTOK", "NUM",
- "BYTE", "COMMENT", "AVTOK", "ABTOK", "CTOK", "DTOK", "HTOK", "HETOK",
- "HLTOK", "H12TOK", "HUTOK", "RETTOK", "QTOK", "RESTOK", "PTOK", "FTOK",
- "TTOK", "TATOK", "TPTOK", "ATOK", "VTOK", "OTOK", "LTOK", "MTOK", "NTOK",
- "NSTOK", "RTOK", "R01TOK", "ITOK", "I1TOK", "GTOK", "JTOK", "J0TOK",
- "KTOK", "UTOK", "ZTOK", "NONETOK", "A0TOK", "P0TOK", "WTOK", "XTOK",
- "CB3TOK", "C02TOK", "$accept", "start", "$@1", "header", "hline", "enc",
- "flag", "body", "bline", YY_NULLPTR
+ "BYTE", "COMMENT", "ALTOK", "AVTOK", "ABTOK", "CTOK", "DTOK", "HTOK",
+ "HETOK", "HLTOK", "H12TOK", "HUTOK", "RETTOK", "QTOK", "RESTOK", "PTOK",
+ "FTOK", "TTOK", "TATOK", "TPTOK", "ATOK", "VTOK", "OTOK", "LTOK", "MTOK",
+ "NTOK", "NSTOK", "RTOK", "R01TOK", "ITOK", "I1TOK", "GTOK", "JTOK",
+ "J0TOK", "KTOK", "UTOK", "ZTOK", "NONETOK", "A0TOK", "P0TOK", "WTOK",
+ "XTOK", "CB3TOK", "C02TOK", "$accept", "start", "$@1", "header", "hline",
+ "enc", "flag", "body", "bline", YY_NULLPTR
};
static const char *
@@ -629,7 +630,7 @@ yysymbol_name (yysymbol_kind_t yysymbol)
}
#endif
-#define YYPACT_NINF (-114)
+#define YYPACT_NINF (-115)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
@@ -643,26 +644,27 @@ yysymbol_name (yysymbol_kind_t yysymbol)
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 10, -114, 10, 16, 90, -114, -114, 6, 13, 7,
- 9, 26, 65, 15, 30, 32, 42, 90, 44, 45,
- 46, 0, 48, 18, 49, -3, 50, 55, 59, 63,
- 66, 67, 69, 57, 29, 90, -114, 70, 73, -114,
- -114, 75, 77, 86, 87, 91, 93, 94, 104, 113,
- 118, -114, 121, 122, -114, 123, 124, 98, 126, 127,
- 128, -114, 129, -114, -114, -114, -114, -114, -114, 130,
- 119, -114, -114, 141, -114, 133, 134, 135, 136, 137,
- 138, 139, 140, 142, 143, -114, -114, -114, -114, 70,
- 149, -114, -114, -114, 144, -4, -114, -114, -114, -114,
- -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
- 145, 146, 155, 148, 2, 150, 151, 152, 153, 154,
- -4, 157, 156, 158, 159, 160, 161, -114, 162, 163,
- 47, -114, 164, 165, 166, -114, 167, 168, 169, 114,
- -4, -114, 170, 70, 171, -114, -114, -114, -114, -114,
- -114, -114, -114, -114, -114, -114, 172, 173, -114, 174,
- 175, -114, -114, -114, -114, -114, -114, -114, -114, -114,
- -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
- -114, -114, -114, -114, 176, 177, 178, -114, -114, -114,
- -114, -114, -114, -114, -114, -114, -114, -114, -114, -114
+ 9, -115, 9, 16, 91, -115, -115, 5, 14, 7,
+ 10, 33, 65, 8, 15, 41, 42, 91, 44, 45,
+ 46, -1, 48, 55, 49, 11, 50, 59, 60, 66,
+ 67, 68, 70, 57, 30, 91, -115, 71, 74, -115,
+ -115, 76, 78, 87, 88, 92, 94, 95, 96, 106,
+ 115, -115, 120, 123, -115, 124, 125, 99, 126, 128,
+ 129, -115, 130, -115, -115, -115, -115, -115, -115, 131,
+ 119, -115, -115, 142, -115, 134, 135, 136, 137, 138,
+ 139, 140, 141, 143, 144, -115, -115, -115, -115, 142,
+ 150, -115, -115, -115, 145, -5, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, 71, -115,
+ 146, 147, 156, 149, 1, 151, 152, 153, 154, 155,
+ 157, -5, 158, 159, 160, 161, 162, 163, -115, 164,
+ 165, 47, -115, 166, 167, 168, -115, 169, 170, 171,
+ 114, -5, -115, -115, 172, 71, 173, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, 174,
+ 175, -115, 176, 177, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115, -115, -115, -115, -115, 178, 179, 180,
+ -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
+ -115, -115, -115
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -678,30 +680,31 @@ static const yytype_int8 yydefact[] =
0, 6, 0, 0, 9, 0, 0, 0, 0, 0,
0, 16, 0, 13, 24, 25, 26, 27, 28, 0,
0, 5, 42, 45, 18, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 29, 11, 22, 23, 43,
+ 0, 0, 0, 0, 0, 29, 11, 22, 23, 45,
0, 12, 15, 17, 0, 48, 44, 31, 35, 41,
- 38, 37, 39, 36, 32, 33, 40, 34, 21, 20,
+ 38, 37, 39, 36, 32, 33, 40, 34, 43, 20,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 48, 0, 97, 0, 0, 0, 98, 99, 0, 0,
- 0, 95, 0, 0, 0, 100, 0, 0, 0, 0,
- 48, 14, 0, 43, 0, 49, 53, 50, 51, 84,
- 88, 85, 47, 54, 96, 86, 0, 90, 91, 0,
- 0, 55, 56, 71, 58, 59, 62, 69, 68, 60,
- 72, 57, 67, 73, 74, 66, 70, 63, 61, 64,
- 65, 75, 76, 52, 92, 0, 0, 87, 3, 46,
- 80, 94, 81, 83, 89, 78, 79, 93, 77, 82
+ 0, 48, 0, 98, 0, 0, 0, 99, 100, 0,
+ 0, 0, 96, 0, 0, 0, 101, 0, 0, 0,
+ 0, 48, 21, 14, 0, 43, 0, 49, 54, 51,
+ 50, 52, 85, 89, 86, 47, 55, 97, 87, 0,
+ 91, 92, 0, 0, 56, 57, 72, 59, 60, 63,
+ 70, 69, 61, 73, 58, 68, 74, 75, 67, 71,
+ 64, 62, 65, 66, 76, 77, 53, 93, 0, 0,
+ 88, 3, 46, 81, 95, 82, 84, 90, 79, 80,
+ 94, 78, 83
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -114, 189, -114, -9, -114, -89, -114, -113, -114
+ -115, 191, -115, -9, -115, -102, 81, -114, -115
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_uint8 yydefgoto[] =
{
- 0, 3, 4, 34, 35, 73, 97, 139, 140
+ 0, 3, 4, 34, 35, 73, 97, 140, 141
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -709,92 +712,93 @@ static const yytype_uint8 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_uint8 yytable[] =
{
- 108, 111, 112, 113, 55, 114, 145, 152, 51, 60,
- 36, 115, 116, 117, 118, 119, 6, 37, 1, 38,
- 120, 39, 58, 61, 121, 122, 71, 189, 47, 123,
- 124, 125, 126, 127, 2, 128, 129, 130, 40, 131,
- 132, 133, 134, 48, 135, 49, 136, 137, 138, 56,
- 161, 146, 162, 163, 191, 50, 52, 53, 54, 63,
- 57, 59, 62, 64, 164, 165, 166, 65, 41, 69,
- 66, 67, 167, 68, 168, 169, 170, 70, 42, 171,
- 72, 172, 173, 174, 175, 74, 176, 75, 177, 76,
- 178, 179, 43, 180, 181, 7, 8, 44, 77, 78,
- 45, 9, 89, 79, 46, 80, 81, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 82, 19, 20, 21,
- 22, 23, 24, 25, 26, 83, 27, 28, 29, 30,
- 84, 31, 32, 85, 86, 87, 88, 33, 90, 91,
- 92, 93, 94, 95, 96, 98, 99, 100, 101, 102,
- 103, 104, 105, 109, 106, 107, 110, 141, 142, 143,
- 144, 153, 147, 148, 149, 150, 151, 188, 154, 0,
- 155, 156, 157, 158, 159, 160, 182, 183, 184, 185,
- 186, 187, 190, 192, 193, 194, 195, 196, 197, 198,
- 199, 5
+ 111, 112, 113, 55, 114, 147, 142, 155, 51, 36,
+ 115, 116, 117, 118, 119, 120, 6, 1, 37, 38,
+ 121, 47, 39, 60, 122, 123, 71, 192, 48, 124,
+ 125, 126, 127, 128, 2, 129, 130, 131, 61, 132,
+ 133, 134, 135, 194, 136, 40, 137, 138, 139, 56,
+ 164, 148, 165, 166, 49, 50, 52, 53, 54, 58,
+ 57, 59, 62, 63, 64, 167, 168, 169, 41, 69,
+ 65, 66, 67, 170, 68, 171, 172, 173, 42, 70,
+ 174, 72, 175, 176, 177, 178, 74, 179, 75, 180,
+ 76, 181, 182, 43, 183, 184, 7, 8, 44, 77,
+ 78, 45, 9, 89, 79, 46, 80, 81, 82, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 83, 19,
+ 20, 21, 22, 23, 24, 25, 26, 84, 27, 28,
+ 29, 30, 85, 31, 32, 86, 87, 88, 90, 33,
+ 91, 92, 93, 94, 95, 96, 98, 99, 100, 101,
+ 102, 103, 104, 105, 109, 106, 107, 110, 143, 144,
+ 145, 146, 156, 149, 150, 151, 152, 153, 191, 154,
+ 108, 157, 158, 159, 160, 161, 162, 163, 185, 186,
+ 187, 188, 189, 190, 193, 195, 196, 197, 198, 199,
+ 200, 201, 202, 5
};
-static const yytype_int16 yycheck[] =
+static const yytype_uint8 yycheck[] =
{
- 89, 5, 6, 7, 4, 9, 4, 120, 17, 12,
- 4, 15, 16, 17, 18, 19, 0, 4, 8, 12,
- 24, 12, 4, 26, 28, 29, 35, 140, 13, 33,
- 34, 35, 36, 37, 24, 39, 40, 41, 12, 43,
- 44, 45, 46, 13, 48, 13, 50, 51, 52, 49,
- 3, 49, 5, 6, 143, 13, 12, 12, 12, 4,
- 12, 12, 12, 4, 17, 18, 19, 4, 3, 12,
- 4, 4, 25, 4, 27, 28, 29, 48, 13, 32,
- 10, 34, 35, 36, 37, 12, 39, 12, 41, 12,
- 43, 44, 27, 46, 47, 5, 6, 32, 12, 12,
- 35, 11, 4, 12, 39, 12, 12, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 12, 27, 28, 29,
- 30, 31, 32, 33, 34, 12, 36, 37, 38, 39,
- 12, 41, 42, 12, 12, 12, 12, 47, 12, 12,
- 12, 12, 12, 24, 3, 12, 12, 12, 12, 12,
- 12, 12, 12, 4, 12, 12, 12, 12, 12, 4,
- 12, 4, 12, 12, 12, 12, 12, 53, 12, -1,
+ 5, 6, 7, 4, 9, 4, 108, 121, 17, 4,
+ 15, 16, 17, 18, 19, 20, 0, 8, 4, 12,
+ 25, 13, 12, 12, 29, 30, 35, 141, 13, 34,
+ 35, 36, 37, 38, 25, 40, 41, 42, 27, 44,
+ 45, 46, 47, 145, 49, 12, 51, 52, 53, 50,
+ 3, 50, 5, 6, 13, 13, 12, 12, 12, 4,
+ 12, 12, 12, 4, 4, 18, 19, 20, 3, 12,
+ 4, 4, 4, 26, 4, 28, 29, 30, 13, 49,
+ 33, 10, 35, 36, 37, 38, 12, 40, 12, 42,
+ 12, 44, 45, 28, 47, 48, 5, 6, 33, 12,
+ 12, 36, 11, 4, 12, 40, 12, 12, 12, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 12, 28,
+ 29, 30, 31, 32, 33, 34, 35, 12, 37, 38,
+ 39, 40, 12, 42, 43, 12, 12, 12, 12, 48,
+ 12, 12, 12, 12, 25, 3, 12, 12, 12, 12,
+ 12, 12, 12, 12, 4, 12, 12, 12, 12, 12,
+ 4, 12, 4, 12, 12, 12, 12, 12, 54, 12,
+ 89, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 2
+ 12, 12, 12, 2
};
/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
state STATE-NUM. */
static const yytype_int8 yystos[] =
{
- 0, 8, 24, 57, 58, 57, 0, 5, 6, 11,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 27,
- 28, 29, 30, 31, 32, 33, 34, 36, 37, 38,
- 39, 41, 42, 47, 59, 60, 4, 4, 12, 12,
- 12, 3, 13, 27, 32, 35, 39, 13, 13, 13,
- 13, 59, 12, 12, 12, 4, 49, 12, 4, 12,
- 12, 26, 12, 4, 4, 4, 4, 4, 4, 12,
- 48, 59, 10, 61, 12, 12, 12, 12, 12, 12,
+ 0, 8, 25, 58, 59, 58, 0, 5, 6, 11,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 28,
+ 29, 30, 31, 32, 33, 34, 35, 37, 38, 39,
+ 40, 42, 43, 48, 60, 61, 4, 4, 12, 12,
+ 12, 3, 13, 28, 33, 36, 40, 13, 13, 13,
+ 13, 60, 12, 12, 12, 4, 50, 12, 4, 12,
+ 12, 27, 12, 4, 4, 4, 4, 4, 4, 12,
+ 49, 60, 10, 62, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 4,
- 12, 12, 12, 12, 12, 24, 3, 62, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 12, 61, 4,
+ 12, 12, 12, 12, 12, 25, 3, 63, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 63, 4,
12, 5, 6, 7, 9, 15, 16, 17, 18, 19,
- 24, 28, 29, 33, 34, 35, 36, 37, 39, 40,
- 41, 43, 44, 45, 46, 48, 50, 51, 52, 63,
- 64, 12, 12, 4, 12, 4, 49, 12, 12, 12,
- 12, 12, 63, 4, 12, 12, 12, 12, 12, 12,
- 12, 3, 5, 6, 17, 18, 19, 25, 27, 28,
- 29, 32, 34, 35, 36, 37, 39, 41, 43, 44,
- 46, 47, 12, 12, 12, 12, 12, 12, 53, 63,
- 12, 61, 12, 12, 12, 12, 12, 12, 12, 12
+ 20, 25, 29, 30, 34, 35, 36, 37, 38, 40,
+ 41, 42, 44, 45, 46, 47, 49, 51, 52, 53,
+ 64, 65, 62, 12, 12, 4, 12, 4, 50, 12,
+ 12, 12, 12, 12, 12, 64, 4, 12, 12, 12,
+ 12, 12, 12, 12, 3, 5, 6, 18, 19, 20,
+ 26, 28, 29, 30, 33, 35, 36, 37, 38, 40,
+ 42, 44, 45, 47, 48, 12, 12, 12, 12, 12,
+ 12, 54, 64, 12, 62, 12, 12, 12, 12, 12,
+ 12, 12, 12
};
/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
static const yytype_int8 yyr1[] =
{
- 0, 56, 58, 57, 57, 59, 59, 59, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 61, 61, 62, 62, 63, 63, 63, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64
+ 0, 57, 59, 58, 58, 60, 60, 60, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 62, 62, 63, 63, 64, 64, 64, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65
};
/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
@@ -802,15 +806,15 @@ static const yytype_int8 yyr2[] =
{
0, 2, 0, 7, 2, 2, 2, 0, 2, 2,
2, 3, 3, 2, 5, 3, 2, 3, 3, 2,
- 4, 4, 3, 3, 2, 2, 2, 2, 2, 3,
+ 4, 5, 3, 3, 2, 2, 2, 2, 2, 3,
2, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 1, 0, 1, 0, 2, 2, 0, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3, 3, 3,
- 3, 3, 3, 3, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 3, 3, 1, 2, 1, 1, 1,
- 1
+ 2, 2, 2, 2, 2, 2, 2, 2, 3, 3,
+ 3, 3, 3, 3, 3, 2, 2, 2, 2, 2,
+ 3, 2, 2, 2, 3, 3, 1, 2, 1, 1,
+ 1, 1
};
@@ -1276,7 +1280,7 @@ yyreduce:
case 2: /* $@1: %empty */
#line 78 "engines/hypno/grammar_arc.y"
{ g_parsedArc->mode = (yyvsp[0].s); }
-#line 1280 "engines/hypno/grammar_arc.cpp"
+#line 1284 "engines/hypno/grammar_arc.cpp"
break;
case 8: /* hline: CTOK NUM */
@@ -1285,7 +1289,7 @@ yyreduce:
g_parsedArc->id = (yyvsp[0].i);
HYPNO_ARC_default_sound_rate = 0;
debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i)); }
-#line 1289 "engines/hypno/grammar_arc.cpp"
+#line 1293 "engines/hypno/grammar_arc.cpp"
break;
case 9: /* hline: FTOK NUM */
@@ -1294,7 +1298,7 @@ yyreduce:
HYPNO_ARC_default_sound_rate = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "F %d", (yyvsp[0].i));
}
-#line 1298 "engines/hypno/grammar_arc.cpp"
+#line 1302 "engines/hypno/grammar_arc.cpp"
break;
case 10: /* hline: DTOK NUM */
@@ -1303,19 +1307,19 @@ yyreduce:
g_parsedArc->frameDelay = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
}
-#line 1307 "engines/hypno/grammar_arc.cpp"
+#line 1311 "engines/hypno/grammar_arc.cpp"
break;
case 11: /* hline: PTOK NUM NUM */
#line 99 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "P %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1313 "engines/hypno/grammar_arc.cpp"
+#line 1317 "engines/hypno/grammar_arc.cpp"
break;
case 12: /* hline: ATOK NUM NUM */
#line 100 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "A %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1319 "engines/hypno/grammar_arc.cpp"
+#line 1323 "engines/hypno/grammar_arc.cpp"
break;
case 13: /* hline: MTOK FILENAME */
@@ -1324,7 +1328,7 @@ yyreduce:
debugC(1, kHypnoDebugParser, "M %s", (yyvsp[0].s));
g_parsedArc->maskVideo = (yyvsp[0].s);
}
-#line 1328 "engines/hypno/grammar_arc.cpp"
+#line 1332 "engines/hypno/grammar_arc.cpp"
break;
case 14: /* hline: UTOK NUM NUM NUM NUM */
@@ -1334,19 +1338,19 @@ yyreduce:
ScriptInfo si((yyvsp[-3].i), (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
g_parsedArc->script.push_back(si);
}
-#line 1338 "engines/hypno/grammar_arc.cpp"
+#line 1342 "engines/hypno/grammar_arc.cpp"
break;
case 15: /* hline: VTOK NUM NUM */
#line 110 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1344 "engines/hypno/grammar_arc.cpp"
+#line 1348 "engines/hypno/grammar_arc.cpp"
break;
case 16: /* hline: VTOK RESTOK */
#line 111 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V 320,200"); }
-#line 1350 "engines/hypno/grammar_arc.cpp"
+#line 1354 "engines/hypno/grammar_arc.cpp"
break;
case 17: /* hline: OTOK NUM NUM */
@@ -1356,7 +1360,7 @@ yyreduce:
g_parsedArc->objMissesAllowed[0] = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "O %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1360 "engines/hypno/grammar_arc.cpp"
+#line 1364 "engines/hypno/grammar_arc.cpp"
break;
case 18: /* hline: ONTOK NUM NUM */
@@ -1371,7 +1375,7 @@ yyreduce:
} else
error("Invalid objective: '%s'", (yyvsp[-2].s));
debugC(1, kHypnoDebugParser, "ON %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1375 "engines/hypno/grammar_arc.cpp"
+#line 1379 "engines/hypno/grammar_arc.cpp"
break;
case 19: /* hline: ONTOK NUM */
@@ -1385,7 +1389,7 @@ yyreduce:
error("Invalid objective: '%s'", (yyvsp[-1].s));
debugC(1, kHypnoDebugParser, "ON %d", (yyvsp[0].i));
}
-#line 1389 "engines/hypno/grammar_arc.cpp"
+#line 1393 "engines/hypno/grammar_arc.cpp"
break;
case 20: /* hline: TPTOK FILENAME NUM FILENAME */
@@ -1395,17 +1399,17 @@ yyreduce:
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "Tp %s %d %s", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].s));
}
-#line 1399 "engines/hypno/grammar_arc.cpp"
+#line 1403 "engines/hypno/grammar_arc.cpp"
break;
- case 21: /* hline: TATOK NUM FILENAME enc */
+ case 21: /* hline: TATOK NUM FILENAME flag enc */
#line 141 "engines/hypno/grammar_arc.y"
- {
- ArcadeTransition at("", "", (yyvsp[-1].s), (yyvsp[-2].i));
+ {
+ ArcadeTransition at("", "", (yyvsp[-2].s), (yyvsp[-3].i));
g_parsedArc->transitions.push_back(at);
- debugC(1, kHypnoDebugParser, "Ta %d %s", (yyvsp[-2].i), (yyvsp[-1].s));
+ debugC(1, kHypnoDebugParser, "Ta %d %s", (yyvsp[-3].i), (yyvsp[-2].s));
}
-#line 1409 "engines/hypno/grammar_arc.cpp"
+#line 1413 "engines/hypno/grammar_arc.cpp"
break;
case 22: /* hline: TTOK FILENAME NUM */
@@ -1415,13 +1419,13 @@ yyreduce:
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "T %s %d", (yyvsp[-1].s), (yyvsp[0].i));
}
-#line 1419 "engines/hypno/grammar_arc.cpp"
+#line 1423 "engines/hypno/grammar_arc.cpp"
break;
case 23: /* hline: TTOK NONETOK NUM */
#line 151 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "T NONE %d", (yyvsp[0].i)); }
-#line 1425 "engines/hypno/grammar_arc.cpp"
+#line 1429 "engines/hypno/grammar_arc.cpp"
break;
case 24: /* hline: NTOK FILENAME */
@@ -1430,7 +1434,7 @@ yyreduce:
g_parsedArc->backgroundVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "N %s", (yyvsp[0].s));
}
-#line 1434 "engines/hypno/grammar_arc.cpp"
+#line 1438 "engines/hypno/grammar_arc.cpp"
break;
case 25: /* hline: NSTOK FILENAME */
@@ -1439,7 +1443,7 @@ yyreduce:
g_parsedArc->backgroundVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "N* %s", (yyvsp[0].s));
}
-#line 1443 "engines/hypno/grammar_arc.cpp"
+#line 1447 "engines/hypno/grammar_arc.cpp"
break;
case 26: /* hline: RTOK FILENAME */
@@ -1447,7 +1451,7 @@ yyreduce:
{
g_parsedArc->backgroundPalette = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "R %s", (yyvsp[0].s)); }
-#line 1451 "engines/hypno/grammar_arc.cpp"
+#line 1455 "engines/hypno/grammar_arc.cpp"
break;
case 27: /* hline: ITOK FILENAME */
@@ -1456,7 +1460,7 @@ yyreduce:
g_parsedArc->player = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1460 "engines/hypno/grammar_arc.cpp"
+#line 1464 "engines/hypno/grammar_arc.cpp"
break;
case 28: /* hline: I1TOK FILENAME */
@@ -1464,13 +1468,13 @@ yyreduce:
{
debugC(1, kHypnoDebugParser, "I1 %s", (yyvsp[0].s));
}
-#line 1468 "engines/hypno/grammar_arc.cpp"
+#line 1472 "engines/hypno/grammar_arc.cpp"
break;
case 29: /* hline: QTOK NUM NUM */
#line 170 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "Q %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1474 "engines/hypno/grammar_arc.cpp"
+#line 1478 "engines/hypno/grammar_arc.cpp"
break;
case 30: /* hline: BNTOK FILENAME */
@@ -1501,7 +1505,7 @@ yyreduce:
debugC(1, kHypnoDebugParser, "BN %s", (yyvsp[0].s));
}
-#line 1505 "engines/hypno/grammar_arc.cpp"
+#line 1509 "engines/hypno/grammar_arc.cpp"
break;
case 31: /* hline: SNTOK FILENAME enc flag */
@@ -1528,7 +1532,7 @@ yyreduce:
}
debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-2].s));
}
-#line 1532 "engines/hypno/grammar_arc.cpp"
+#line 1536 "engines/hypno/grammar_arc.cpp"
break;
case 32: /* hline: HETOK BYTE NUM NUM */
@@ -1539,7 +1543,7 @@ yyreduce:
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "HE %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1543 "engines/hypno/grammar_arc.cpp"
+#line 1547 "engines/hypno/grammar_arc.cpp"
break;
case 33: /* hline: HLTOK BYTE NUM NUM */
@@ -1549,7 +1553,7 @@ yyreduce:
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "HL %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1553 "engines/hypno/grammar_arc.cpp"
+#line 1557 "engines/hypno/grammar_arc.cpp"
break;
case 34: /* hline: HUTOK BYTE NUM NUM */
@@ -1559,7 +1563,7 @@ yyreduce:
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "HU %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1563 "engines/hypno/grammar_arc.cpp"
+#line 1567 "engines/hypno/grammar_arc.cpp"
break;
case 35: /* hline: HTOK NAME NUM NUM */
@@ -1570,7 +1574,7 @@ yyreduce:
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H %s %d %d", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1574 "engines/hypno/grammar_arc.cpp"
+#line 1578 "engines/hypno/grammar_arc.cpp"
break;
case 36: /* hline: HTOK RTOK NUM NUM */
@@ -1580,7 +1584,7 @@ yyreduce:
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H R %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1584 "engines/hypno/grammar_arc.cpp"
+#line 1588 "engines/hypno/grammar_arc.cpp"
break;
case 37: /* hline: HTOK ATOK NUM NUM */
@@ -1590,7 +1594,7 @@ yyreduce:
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H A %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1594 "engines/hypno/grammar_arc.cpp"
+#line 1598 "engines/hypno/grammar_arc.cpp"
break;
case 38: /* hline: HTOK PTOK NUM NUM */
@@ -1600,7 +1604,7 @@ yyreduce:
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H P %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1604 "engines/hypno/grammar_arc.cpp"
+#line 1608 "engines/hypno/grammar_arc.cpp"
break;
case 39: /* hline: HTOK LTOK NUM NUM */
@@ -1610,7 +1614,7 @@ yyreduce:
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H P %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1614 "engines/hypno/grammar_arc.cpp"
+#line 1618 "engines/hypno/grammar_arc.cpp"
break;
case 40: /* hline: H12TOK BYTE NUM NUM */
@@ -1620,7 +1624,7 @@ yyreduce:
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "HN %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1624 "engines/hypno/grammar_arc.cpp"
+#line 1628 "engines/hypno/grammar_arc.cpp"
break;
case 41: /* hline: HTOK BYTE NUM NUM */
@@ -1630,31 +1634,31 @@ yyreduce:
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H %x %d %d", (yyvsp[-2].i), (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1634 "engines/hypno/grammar_arc.cpp"
+#line 1638 "engines/hypno/grammar_arc.cpp"
break;
case 42: /* enc: ENCTOK */
#line 273 "engines/hypno/grammar_arc.y"
{ (yyval.s) = (yyvsp[0].s); }
-#line 1640 "engines/hypno/grammar_arc.cpp"
+#line 1644 "engines/hypno/grammar_arc.cpp"
break;
case 43: /* enc: %empty */
#line 274 "engines/hypno/grammar_arc.y"
{ (yyval.s) = scumm_strdup(""); }
-#line 1646 "engines/hypno/grammar_arc.cpp"
+#line 1650 "engines/hypno/grammar_arc.cpp"
break;
case 44: /* flag: NAME */
#line 277 "engines/hypno/grammar_arc.y"
{ (yyval.s) = (yyvsp[0].s); }
-#line 1652 "engines/hypno/grammar_arc.cpp"
+#line 1656 "engines/hypno/grammar_arc.cpp"
break;
case 45: /* flag: %empty */
#line 278 "engines/hypno/grammar_arc.y"
{ (yyval.s) = scumm_strdup(""); }
-#line 1658 "engines/hypno/grammar_arc.cpp"
+#line 1662 "engines/hypno/grammar_arc.cpp"
break;
case 49: /* bline: FNTOK FILENAME */
@@ -1667,7 +1671,7 @@ yyreduce:
shoot->explosionAnimation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1671 "engines/hypno/grammar_arc.cpp"
+#line 1675 "engines/hypno/grammar_arc.cpp"
break;
case 50: /* bline: AVTOK NUM */
@@ -1675,396 +1679,404 @@ yyreduce:
{
debugC(1, kHypnoDebugParser, "AV %d", (yyvsp[0].i));
}
-#line 1679 "engines/hypno/grammar_arc.cpp"
+#line 1683 "engines/hypno/grammar_arc.cpp"
break;
- case 51: /* bline: ABTOK NUM */
+ case 51: /* bline: ALTOK NUM */
#line 297 "engines/hypno/grammar_arc.y"
{
- debugC(1, kHypnoDebugParser, "AB %d", (yyvsp[0].i));
+ debugC(1, kHypnoDebugParser, "AL %d", (yyvsp[0].i));
}
-#line 1687 "engines/hypno/grammar_arc.cpp"
+#line 1691 "engines/hypno/grammar_arc.cpp"
break;
- case 52: /* bline: J0TOK NUM */
+ case 52: /* bline: ABTOK NUM */
#line 300 "engines/hypno/grammar_arc.y"
{
- debugC(1, kHypnoDebugParser, "J0 %d", (yyvsp[0].i));
+ debugC(1, kHypnoDebugParser, "AB %d", (yyvsp[0].i));
}
-#line 1695 "engines/hypno/grammar_arc.cpp"
+#line 1699 "engines/hypno/grammar_arc.cpp"
break;
- case 53: /* bline: FNTOK NONETOK */
+ case 53: /* bline: J0TOK NUM */
#line 303 "engines/hypno/grammar_arc.y"
+ {
+ debugC(1, kHypnoDebugParser, "J0 %d", (yyvsp[0].i));
+ }
+#line 1707 "engines/hypno/grammar_arc.cpp"
+ break;
+
+ case 54: /* bline: FNTOK NONETOK */
+#line 306 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = "NONE";
debugC(1, kHypnoDebugParser, "FN NONE");
}
-#line 1705 "engines/hypno/grammar_arc.cpp"
+#line 1717 "engines/hypno/grammar_arc.cpp"
break;
- case 54: /* bline: FTOK FILENAME */
-#line 308 "engines/hypno/grammar_arc.y"
+ case 55: /* bline: FTOK FILENAME */
+#line 311 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1715 "engines/hypno/grammar_arc.cpp"
+#line 1727 "engines/hypno/grammar_arc.cpp"
break;
- case 55: /* bline: ITOK NAME */
-#line 313 "engines/hypno/grammar_arc.y"
+ case 56: /* bline: ITOK NAME */
+#line 316 "engines/hypno/grammar_arc.y"
{
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1724 "engines/hypno/grammar_arc.cpp"
+#line 1736 "engines/hypno/grammar_arc.cpp"
break;
- case 56: /* bline: ITOK BNTOK */
-#line 317 "engines/hypno/grammar_arc.y"
+ case 57: /* bline: ITOK BNTOK */
+#line 320 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == B1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1733 "engines/hypno/grammar_arc.cpp"
+#line 1745 "engines/hypno/grammar_arc.cpp"
break;
- case 57: /* bline: ITOK ATOK */
-#line 321 "engines/hypno/grammar_arc.y"
+ case 58: /* bline: ITOK ATOK */
+#line 324 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == A
shoot->name = "A";
debugC(1, kHypnoDebugParser, "I A");
}
-#line 1742 "engines/hypno/grammar_arc.cpp"
+#line 1754 "engines/hypno/grammar_arc.cpp"
break;
- case 58: /* bline: ITOK CTOK */
-#line 325 "engines/hypno/grammar_arc.y"
+ case 59: /* bline: ITOK CTOK */
+#line 328 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == C
shoot->name = "C";
debugC(1, kHypnoDebugParser, "I C");
}
-#line 1751 "engines/hypno/grammar_arc.cpp"
+#line 1763 "engines/hypno/grammar_arc.cpp"
break;
- case 59: /* bline: ITOK DTOK */
-#line 329 "engines/hypno/grammar_arc.y"
+ case 60: /* bline: ITOK DTOK */
+#line 332 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == D
shoot->name = "D";
debugC(1, kHypnoDebugParser, "I D");
}
-#line 1760 "engines/hypno/grammar_arc.cpp"
+#line 1772 "engines/hypno/grammar_arc.cpp"
break;
- case 60: /* bline: ITOK FTOK */
-#line 333 "engines/hypno/grammar_arc.y"
+ case 61: /* bline: ITOK FTOK */
+#line 336 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == F
shoot->name = "F";
debugC(1, kHypnoDebugParser, "I F");
}
-#line 1769 "engines/hypno/grammar_arc.cpp"
+#line 1781 "engines/hypno/grammar_arc.cpp"
break;
- case 61: /* bline: ITOK GTOK */
-#line 337 "engines/hypno/grammar_arc.y"
+ case 62: /* bline: ITOK GTOK */
+#line 340 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == G
shoot->name = "G";
debugC(1, kHypnoDebugParser, "I G");
}
-#line 1778 "engines/hypno/grammar_arc.cpp"
+#line 1790 "engines/hypno/grammar_arc.cpp"
break;
- case 62: /* bline: ITOK HTOK */
-#line 341 "engines/hypno/grammar_arc.y"
+ case 63: /* bline: ITOK HTOK */
+#line 344 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == H
shoot->name = "H";
debugC(1, kHypnoDebugParser, "I H");
}
-#line 1787 "engines/hypno/grammar_arc.cpp"
+#line 1799 "engines/hypno/grammar_arc.cpp"
break;
- case 63: /* bline: ITOK ITOK */
-#line 345 "engines/hypno/grammar_arc.y"
+ case 64: /* bline: ITOK ITOK */
+#line 348 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == I
shoot->name = "I";
debugC(1, kHypnoDebugParser, "I I");
}
-#line 1796 "engines/hypno/grammar_arc.cpp"
+#line 1808 "engines/hypno/grammar_arc.cpp"
break;
- case 64: /* bline: ITOK JTOK */
-#line 349 "engines/hypno/grammar_arc.y"
+ case 65: /* bline: ITOK JTOK */
+#line 352 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == J
shoot->name = "J";
debugC(1, kHypnoDebugParser, "I J");
}
-#line 1805 "engines/hypno/grammar_arc.cpp"
+#line 1817 "engines/hypno/grammar_arc.cpp"
break;
- case 65: /* bline: ITOK KTOK */
-#line 353 "engines/hypno/grammar_arc.y"
+ case 66: /* bline: ITOK KTOK */
+#line 356 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == K
shoot->name = "K";
debugC(1, kHypnoDebugParser, "I K");
}
-#line 1814 "engines/hypno/grammar_arc.cpp"
+#line 1826 "engines/hypno/grammar_arc.cpp"
break;
- case 66: /* bline: ITOK NTOK */
-#line 357 "engines/hypno/grammar_arc.y"
+ case 67: /* bline: ITOK NTOK */
+#line 360 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == N
shoot->name = "N";
debugC(1, kHypnoDebugParser, "I N");
}
-#line 1823 "engines/hypno/grammar_arc.cpp"
+#line 1835 "engines/hypno/grammar_arc.cpp"
break;
- case 67: /* bline: ITOK OTOK */
-#line 361 "engines/hypno/grammar_arc.y"
+ case 68: /* bline: ITOK OTOK */
+#line 364 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == O
shoot->name = "O";
debugC(1, kHypnoDebugParser, "I O");
}
-#line 1832 "engines/hypno/grammar_arc.cpp"
+#line 1844 "engines/hypno/grammar_arc.cpp"
break;
- case 68: /* bline: ITOK PTOK */
-#line 365 "engines/hypno/grammar_arc.y"
+ case 69: /* bline: ITOK PTOK */
+#line 368 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == P
shoot->name = "P";
debugC(1, kHypnoDebugParser, "I P");
}
-#line 1841 "engines/hypno/grammar_arc.cpp"
+#line 1853 "engines/hypno/grammar_arc.cpp"
break;
- case 69: /* bline: ITOK QTOK */
-#line 369 "engines/hypno/grammar_arc.y"
+ case 70: /* bline: ITOK QTOK */
+#line 372 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == Q
shoot->name = "Q";
debugC(1, kHypnoDebugParser, "I Q");
}
-#line 1850 "engines/hypno/grammar_arc.cpp"
+#line 1862 "engines/hypno/grammar_arc.cpp"
break;
- case 70: /* bline: ITOK RTOK */
-#line 373 "engines/hypno/grammar_arc.y"
+ case 71: /* bline: ITOK RTOK */
+#line 376 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == R
shoot->name = "R";
debugC(1, kHypnoDebugParser, "I R");
}
-#line 1859 "engines/hypno/grammar_arc.cpp"
+#line 1871 "engines/hypno/grammar_arc.cpp"
break;
- case 71: /* bline: ITOK SNTOK */
-#line 377 "engines/hypno/grammar_arc.y"
+ case 72: /* bline: ITOK SNTOK */
+#line 380 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == S1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1868 "engines/hypno/grammar_arc.cpp"
+#line 1880 "engines/hypno/grammar_arc.cpp"
break;
- case 72: /* bline: ITOK TTOK */
-#line 381 "engines/hypno/grammar_arc.y"
+ case 73: /* bline: ITOK TTOK */
+#line 384 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == T
shoot->name = "T";
debugC(1, kHypnoDebugParser, "I T");
}
-#line 1877 "engines/hypno/grammar_arc.cpp"
+#line 1889 "engines/hypno/grammar_arc.cpp"
break;
- case 73: /* bline: ITOK LTOK */
-#line 385 "engines/hypno/grammar_arc.y"
+ case 74: /* bline: ITOK LTOK */
+#line 388 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == L
shoot->name = "L";
debugC(1, kHypnoDebugParser, "I L");
}
-#line 1886 "engines/hypno/grammar_arc.cpp"
+#line 1898 "engines/hypno/grammar_arc.cpp"
break;
- case 74: /* bline: ITOK MTOK */
-#line 389 "engines/hypno/grammar_arc.y"
+ case 75: /* bline: ITOK MTOK */
+#line 392 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == M
shoot->name = "M";
debugC(1, kHypnoDebugParser, "I M");
}
-#line 1895 "engines/hypno/grammar_arc.cpp"
+#line 1907 "engines/hypno/grammar_arc.cpp"
break;
- case 75: /* bline: ITOK UTOK */
-#line 393 "engines/hypno/grammar_arc.y"
+ case 76: /* bline: ITOK UTOK */
+#line 396 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == U
shoot->name = "U";
debugC(1, kHypnoDebugParser, "I U");
}
-#line 1904 "engines/hypno/grammar_arc.cpp"
+#line 1916 "engines/hypno/grammar_arc.cpp"
break;
- case 76: /* bline: JTOK NUM */
-#line 397 "engines/hypno/grammar_arc.y"
+ case 77: /* bline: JTOK NUM */
+#line 400 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "J %d", (yyvsp[0].i));
}
-#line 1912 "engines/hypno/grammar_arc.cpp"
+#line 1924 "engines/hypno/grammar_arc.cpp"
break;
- case 77: /* bline: A0TOK NUM NUM */
-#line 400 "engines/hypno/grammar_arc.y"
+ case 78: /* bline: A0TOK NUM NUM */
+#line 403 "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 1921 "engines/hypno/grammar_arc.cpp"
+#line 1933 "engines/hypno/grammar_arc.cpp"
break;
- case 78: /* bline: RTOK NUM NUM */
-#line 404 "engines/hypno/grammar_arc.y"
+ case 79: /* bline: RTOK NUM NUM */
+#line 407 "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 1931 "engines/hypno/grammar_arc.cpp"
+#line 1943 "engines/hypno/grammar_arc.cpp"
break;
- case 79: /* bline: R01TOK NUM NUM */
-#line 409 "engines/hypno/grammar_arc.y"
+ case 80: /* bline: R01TOK NUM NUM */
+#line 412 "engines/hypno/grammar_arc.y"
{
shoot->objKillsCount = (yyvsp[-1].i);
shoot->objMissesCount = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "R0/1 %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1940 "engines/hypno/grammar_arc.cpp"
+#line 1952 "engines/hypno/grammar_arc.cpp"
break;
- case 80: /* bline: BNTOK NUM NUM */
-#line 413 "engines/hypno/grammar_arc.y"
+ case 81: /* bline: BNTOK NUM NUM */
+#line 416 "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 1950 "engines/hypno/grammar_arc.cpp"
+#line 1962 "engines/hypno/grammar_arc.cpp"
break;
- case 81: /* bline: KNTOK NUM NUM */
-#line 418 "engines/hypno/grammar_arc.y"
+ case 82: /* bline: KNTOK NUM NUM */
+#line 421 "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 1960 "engines/hypno/grammar_arc.cpp"
+#line 1972 "engines/hypno/grammar_arc.cpp"
break;
- case 82: /* bline: P0TOK NUM NUM */
-#line 423 "engines/hypno/grammar_arc.y"
+ case 83: /* bline: P0TOK NUM NUM */
+#line 426 "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 1969 "engines/hypno/grammar_arc.cpp"
+#line 1981 "engines/hypno/grammar_arc.cpp"
break;
- case 83: /* bline: OTOK NUM NUM */
-#line 427 "engines/hypno/grammar_arc.y"
+ case 84: /* bline: OTOK NUM NUM */
+#line 430 "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 1980 "engines/hypno/grammar_arc.cpp"
+#line 1992 "engines/hypno/grammar_arc.cpp"
break;
- case 84: /* bline: CTOK NUM */
-#line 433 "engines/hypno/grammar_arc.y"
+ case 85: /* bline: CTOK NUM */
+#line 436 "engines/hypno/grammar_arc.y"
{
shoot->timesToShoot = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i));
}
-#line 1989 "engines/hypno/grammar_arc.cpp"
+#line 2001 "engines/hypno/grammar_arc.cpp"
break;
- case 85: /* bline: HTOK NUM */
-#line 437 "engines/hypno/grammar_arc.y"
+ case 86: /* bline: HTOK NUM */
+#line 440 "engines/hypno/grammar_arc.y"
{
shoot->attackFrames.push_back((yyvsp[0].i));
debugC(1, kHypnoDebugParser, "H %d", (yyvsp[0].i)); }
-#line 1997 "engines/hypno/grammar_arc.cpp"
+#line 2009 "engines/hypno/grammar_arc.cpp"
break;
- case 86: /* bline: VTOK NUM */
-#line 440 "engines/hypno/grammar_arc.y"
+ case 87: /* bline: VTOK NUM */
+#line 443 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V %d", (yyvsp[0].i)); }
-#line 2003 "engines/hypno/grammar_arc.cpp"
+#line 2015 "engines/hypno/grammar_arc.cpp"
break;
- case 87: /* bline: WTOK NUM */
-#line 441 "engines/hypno/grammar_arc.y"
+ case 88: /* bline: WTOK NUM */
+#line 444 "engines/hypno/grammar_arc.y"
{
shoot->attackWeight = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "W %d", (yyvsp[0].i)); }
-#line 2011 "engines/hypno/grammar_arc.cpp"
+#line 2023 "engines/hypno/grammar_arc.cpp"
break;
- case 88: /* bline: DTOK NUM */
-#line 444 "engines/hypno/grammar_arc.y"
+ case 89: /* bline: DTOK NUM */
+#line 447 "engines/hypno/grammar_arc.y"
{
shoot->pointsToShoot = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
}
-#line 2020 "engines/hypno/grammar_arc.cpp"
+#line 2032 "engines/hypno/grammar_arc.cpp"
break;
- case 89: /* bline: LTOK NUM NUM */
-#line 448 "engines/hypno/grammar_arc.y"
+ case 90: /* bline: LTOK NUM NUM */
+#line 451 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "L %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 2028 "engines/hypno/grammar_arc.cpp"
+#line 2040 "engines/hypno/grammar_arc.cpp"
break;
- case 90: /* bline: LTOK NUM */
-#line 451 "engines/hypno/grammar_arc.y"
+ case 91: /* bline: LTOK NUM */
+#line 454 "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 2038 "engines/hypno/grammar_arc.cpp"
+#line 2050 "engines/hypno/grammar_arc.cpp"
break;
- case 91: /* bline: MTOK NUM */
-#line 456 "engines/hypno/grammar_arc.y"
+ case 92: /* bline: MTOK NUM */
+#line 459 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "M %d", (yyvsp[0].i));
shoot->missedAnimation = (yyvsp[0].i);
}
-#line 2046 "engines/hypno/grammar_arc.cpp"
+#line 2058 "engines/hypno/grammar_arc.cpp"
break;
- case 92: /* bline: KTOK NUM */
-#line 459 "engines/hypno/grammar_arc.y"
+ case 93: /* bline: KTOK NUM */
+#line 462 "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 2055 "engines/hypno/grammar_arc.cpp"
+#line 2067 "engines/hypno/grammar_arc.cpp"
break;
- case 93: /* bline: KTOK NUM NUM */
-#line 463 "engines/hypno/grammar_arc.y"
+ case 94: /* bline: KTOK NUM NUM */
+#line 466 "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 2064 "engines/hypno/grammar_arc.cpp"
+#line 2076 "engines/hypno/grammar_arc.cpp"
break;
- case 94: /* bline: SNTOK FILENAME enc */
-#line 467 "engines/hypno/grammar_arc.y"
+ case 95: /* bline: SNTOK FILENAME enc */
+#line 470 "engines/hypno/grammar_arc.y"
{
if (Common::String("S0") == (yyvsp[-2].s))
shoot->enemySound = (yyvsp[-1].s);
@@ -2074,60 +2086,60 @@ yyreduce:
shoot->hitSound = (yyvsp[-1].s);
debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s)); }
-#line 2078 "engines/hypno/grammar_arc.cpp"
+#line 2090 "engines/hypno/grammar_arc.cpp"
break;
- case 95: /* bline: GTOK */
-#line 476 "engines/hypno/grammar_arc.y"
+ case 96: /* bline: GTOK */
+#line 479 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "G"); }
-#line 2084 "engines/hypno/grammar_arc.cpp"
+#line 2096 "engines/hypno/grammar_arc.cpp"
break;
- case 96: /* bline: TTOK NUM */
-#line 477 "engines/hypno/grammar_arc.y"
+ case 97: /* bline: TTOK NUM */
+#line 480 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "T %d", (yyvsp[0].i));
}
-#line 2092 "engines/hypno/grammar_arc.cpp"
+#line 2104 "engines/hypno/grammar_arc.cpp"
break;
- case 97: /* bline: TTOK */
-#line 480 "engines/hypno/grammar_arc.y"
+ case 98: /* bline: TTOK */
+#line 483 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "T");
}
-#line 2100 "engines/hypno/grammar_arc.cpp"
+#line 2112 "engines/hypno/grammar_arc.cpp"
break;
- case 98: /* bline: MTOK */
-#line 483 "engines/hypno/grammar_arc.y"
+ case 99: /* bline: MTOK */
+#line 486 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "M");
}
-#line 2108 "engines/hypno/grammar_arc.cpp"
+#line 2120 "engines/hypno/grammar_arc.cpp"
break;
- case 99: /* bline: NTOK */
-#line 486 "engines/hypno/grammar_arc.y"
+ case 100: /* bline: NTOK */
+#line 489 "engines/hypno/grammar_arc.y"
{
shoot->noEnemySound = true;
debugC(1, kHypnoDebugParser, "N"); }
-#line 2116 "engines/hypno/grammar_arc.cpp"
+#line 2128 "engines/hypno/grammar_arc.cpp"
break;
- case 100: /* bline: ZTOK */
-#line 489 "engines/hypno/grammar_arc.y"
+ case 101: /* bline: ZTOK */
+#line 492 "engines/hypno/grammar_arc.y"
{
g_parsedArc->shoots.push_back(*shoot);
//delete shoot;
//shoot = nullptr;
debugC(1, kHypnoDebugParser, "Z");
}
-#line 2127 "engines/hypno/grammar_arc.cpp"
+#line 2139 "engines/hypno/grammar_arc.cpp"
break;
-#line 2131 "engines/hypno/grammar_arc.cpp"
+#line 2143 "engines/hypno/grammar_arc.cpp"
default: break;
}
diff --git a/engines/hypno/grammar_arc.y b/engines/hypno/grammar_arc.y
index 225117c19a1..6cb8442edfd 100644
--- a/engines/hypno/grammar_arc.y
+++ b/engines/hypno/grammar_arc.y
@@ -58,7 +58,7 @@ using namespace Hypno;
%token<s> NAME FILENAME BNTOK SNTOK KNTOK YXTOK FNTOK ENCTOK ONTOK
%token<i> NUM BYTE
// header
-%token COMMENT AVTOK ABTOK CTOK DTOK HTOK HETOK HLTOK H12TOK HUTOK RETTOK QTOK RESTOK
+%token COMMENT ALTOK AVTOK ABTOK CTOK DTOK HTOK HETOK HLTOK H12TOK HUTOK RETTOK QTOK RESTOK
%token PTOK FTOK TTOK TATOK TPTOK ATOK VTOK OTOK LTOK MTOK NTOK NSTOK RTOK R01TOK
%token ITOK I1TOK GTOK JTOK J0TOK KTOK UTOK ZTOK
@@ -138,7 +138,7 @@ hline: CTOK NUM {
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "Tp %s %d %s", $2, $3, $4);
}
- | TATOK NUM FILENAME enc {
+ | TATOK NUM FILENAME flag enc {
ArcadeTransition at("", "", $3, $2);
g_parsedArc->transitions.push_back(at);
debugC(1, kHypnoDebugParser, "Ta %d %s", $2, $3);
@@ -294,6 +294,9 @@ bline: FNTOK FILENAME {
| AVTOK NUM {
debugC(1, kHypnoDebugParser, "AV %d", $2);
}
+ | ALTOK NUM {
+ debugC(1, kHypnoDebugParser, "AL %d", $2);
+ }
| ABTOK NUM {
debugC(1, kHypnoDebugParser, "AB %d", $2);
}
diff --git a/engines/hypno/lexer_arc.cpp b/engines/hypno/lexer_arc.cpp
index f0f0a0a68c4..2e9b822f657 100644
--- a/engines/hypno/lexer_arc.cpp
+++ b/engines/hypno/lexer_arc.cpp
@@ -633,8 +633,8 @@ static void yynoreturn yy_fatal_error ( const char* msg );
(yy_hold_char) = *yy_cp; \
*yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 55
-#define YY_END_OF_BUFFER 56
+#define YY_NUM_RULES 56
+#define YY_END_OF_BUFFER 57
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -642,18 +642,18 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[92] =
+static const flex_int16_t yy_accept[93] =
{ 0,
- 0, 0, 56, 54, 53, 51, 51, 54, 46, 46,
- 46, 46, 54, 12, 47, 2, 3, 47, 37, 27,
- 8, 22, 25, 26, 16, 19, 17, 14, 9, 28,
- 20, 47, 33, 29, 13, 31, 32, 47, 30, 47,
- 53, 46, 49, 46, 46, 46, 46, 0, 47, 39,
- 47, 47, 10, 11, 48, 40, 40, 36, 7, 4,
- 5, 6, 23, 24, 41, 18, 47, 15, 42, 21,
- 38, 35, 34, 43, 43, 47, 47, 47, 45, 45,
- 44, 44, 46, 52, 47, 0, 1, 0, 0, 50,
- 0
+ 0, 0, 57, 55, 54, 52, 52, 55, 47, 47,
+ 47, 47, 55, 13, 48, 2, 3, 48, 38, 28,
+ 8, 23, 26, 27, 17, 20, 18, 15, 9, 29,
+ 21, 48, 34, 30, 14, 32, 33, 48, 31, 48,
+ 54, 47, 50, 47, 47, 47, 47, 0, 48, 40,
+ 48, 48, 10, 11, 12, 49, 41, 41, 37, 7,
+ 4, 5, 6, 24, 25, 42, 19, 48, 16, 43,
+ 22, 39, 36, 35, 44, 44, 48, 48, 48, 46,
+ 46, 45, 45, 47, 53, 48, 0, 1, 0, 0,
+ 51, 0
} ;
@@ -698,37 +698,37 @@ static const YY_CHAR yy_meta[48] =
5, 4, 4, 4, 4, 4, 1
} ;
-static const flex_int16_t yy_base[98] =
+static const flex_int16_t yy_base[99] =
{ 0,
- 0, 0, 157, 616, 153, 616, 616, 39, 44, 49,
- 54, 59, 0, 65, 99, 79, 85, 119, 125, 133,
- 167, 137, 172, 201, 205, 208, 218, 239, 245, 241,
- 259, 278, 282, 285, 287, 304, 316, 344, 339, 141,
- 137, 73, 0, 112, 382, 55, 159, 109, 335, 349,
- 386, 389, 391, 409, 0, 412, 422, 426, 432, 443,
- 445, 449, 455, 466, 472, 616, 476, 486, 489, 499,
- 503, 509, 520, 522, 526, 368, 554, 560, 0, 616,
- 0, 616, 214, 101, 564, 93, 566, 94, 90, 616,
- 616, 599, 604, 606, 608, 75, 610
+ 0, 0, 105, 625, 102, 625, 625, 39, 44, 49,
+ 54, 59, 0, 65, 99, 84, 118, 124, 133, 139,
+ 173, 143, 178, 207, 211, 214, 224, 245, 251, 247,
+ 265, 284, 288, 291, 293, 310, 322, 350, 345, 74,
+ 101, 111, 0, 340, 388, 55, 130, 95, 357, 392,
+ 395, 397, 415, 418, 428, 0, 432, 438, 449, 451,
+ 455, 461, 472, 478, 482, 484, 625, 495, 501, 505,
+ 515, 518, 528, 532, 538, 549, 364, 373, 568, 0,
+ 625, 0, 625, 151, 94, 572, 79, 575, 80, 79,
+ 625, 625, 608, 613, 615, 617, 75, 619
} ;
-static const flex_int16_t yy_def[98] =
+static const flex_int16_t yy_def[99] =
{ 0,
- 91, 1, 91, 91, 91, 91, 91, 91, 92, 92,
- 92, 92, 93, 94, 94, 94, 94, 94, 94, 94,
- 94, 21, 21, 94, 21, 21, 21, 21, 21, 21,
- 21, 94, 21, 21, 21, 21, 21, 95, 21, 96,
- 91, 91, 92, 92, 92, 45, 45, 93, 97, 21,
- 21, 21, 21, 21, 97, 21, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 91, 21, 21, 21, 21,
- 21, 21, 21, 21, 21, 91, 96, 96, 92, 91,
- 92, 91, 45, 93, 21, 91, 21, 91, 91, 91,
- 0, 91, 91, 91, 91, 91, 91
+ 92, 1, 92, 92, 92, 92, 92, 92, 93, 93,
+ 93, 93, 94, 95, 95, 95, 95, 95, 95, 95,
+ 95, 21, 21, 95, 21, 21, 21, 21, 21, 21,
+ 21, 95, 21, 21, 21, 21, 21, 96, 21, 97,
+ 92, 92, 93, 93, 93, 45, 45, 94, 98, 21,
+ 21, 21, 21, 21, 21, 98, 21, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 92, 21, 21, 21,
+ 21, 21, 21, 21, 21, 21, 92, 97, 97, 93,
+ 92, 93, 92, 45, 94, 21, 92, 21, 92, 92,
+ 92, 0, 92, 92, 92, 92, 92, 92
} ;
-static const flex_int16_t yy_nxt[664] =
+static const flex_int16_t yy_nxt[673] =
{ 0,
4, 5, 6, 7, 4, 4, 8, 4, 9, 10,
11, 12, 9, 13, 14, 15, 16, 17, 18, 19,
@@ -737,75 +737,76 @@ static const flex_int16_t yy_nxt[664] =
4, 40, 18, 18, 18, 18, 7, 42, 42, 42,
42, 42, 44, 44, 44, 44, 44, 44, 45, 44,
44, 44, 44, 44, 46, 44, 44, 44, 44, 47,
- 44, 44, 49, 50, 51, 51, 51, 51, 78, 81,
- 53, 42, 42, 42, 42, 42, 49, 51, 51, 51,
- 51, 51, 49, 51, 51, 51, 51, 51, 90, 81,
-
- 54, 82, 89, 88, 84, 55, 49, 56, 56, 56,
- 56, 56, 84, 57, 57, 57, 57, 57, 57, 55,
- 44, 44, 44, 44, 44, 55, 49, 51, 51, 51,
- 51, 51, 49, 58, 58, 58, 58, 58, 41, 55,
- 49, 51, 51, 51, 51, 51, 63, 51, 76, 77,
- 77, 77, 77, 77, 41, 52, 91, 91, 91, 55,
- 91, 91, 52, 91, 91, 55, 91, 83, 91, 91,
- 91, 52, 91, 55, 49, 51, 59, 59, 51, 51,
- 64, 51, 51, 43, 91, 60, 91, 91, 91, 91,
- 52, 91, 61, 91, 91, 91, 91, 52, 91, 91,
-
- 91, 62, 91, 43, 91, 91, 52, 55, 49, 65,
- 65, 65, 65, 65, 51, 51, 91, 51, 51, 86,
- 91, 91, 66, 52, 91, 91, 52, 51, 51, 91,
- 52, 91, 91, 52, 91, 91, 52, 91, 43, 52,
- 91, 55, 52, 52, 91, 91, 67, 68, 68, 51,
- 51, 51, 52, 69, 51, 51, 91, 52, 43, 52,
- 91, 91, 91, 52, 52, 91, 52, 70, 70, 51,
- 52, 91, 91, 52, 91, 52, 91, 52, 91, 52,
- 91, 91, 91, 91, 52, 49, 71, 71, 71, 71,
- 71, 51, 51, 52, 51, 51, 51, 51, 91, 91,
-
- 52, 91, 91, 52, 91, 52, 91, 52, 91, 91,
- 52, 91, 52, 51, 51, 91, 52, 91, 55, 52,
- 91, 52, 52, 91, 72, 51, 51, 73, 91, 52,
- 91, 91, 91, 91, 52, 91, 91, 91, 52, 91,
- 91, 52, 49, 49, 49, 49, 49, 49, 51, 51,
- 52, 49, 74, 74, 74, 74, 74, 52, 51, 51,
- 91, 91, 91, 91, 52, 91, 91, 52, 91, 91,
- 91, 91, 91, 52, 52, 76, 76, 76, 76, 76,
- 76, 91, 91, 52, 55, 52, 52, 52, 52, 52,
- 44, 44, 44, 44, 44, 51, 51, 91, 51, 51,
-
- 51, 51, 91, 91, 52, 91, 79, 52, 91, 52,
- 91, 52, 91, 91, 52, 91, 52, 91, 51, 51,
- 52, 51, 51, 52, 91, 52, 79, 52, 80, 91,
- 52, 51, 51, 91, 52, 51, 51, 52, 91, 91,
- 52, 51, 51, 52, 52, 91, 52, 52, 91, 91,
- 52, 52, 51, 51, 51, 51, 52, 52, 51, 51,
- 52, 52, 91, 52, 51, 51, 52, 52, 52, 91,
- 52, 91, 91, 52, 52, 51, 51, 52, 91, 52,
- 52, 51, 51, 52, 52, 51, 51, 91, 91, 52,
- 52, 52, 91, 91, 52, 51, 51, 52, 51, 51,
-
- 52, 52, 91, 85, 52, 91, 52, 52, 51, 51,
- 52, 52, 51, 51, 52, 91, 91, 52, 51, 51,
- 52, 52, 91, 52, 52, 91, 91, 52, 52, 51,
- 51, 51, 51, 52, 52, 51, 51, 52, 52, 91,
- 52, 91, 91, 52, 52, 52, 91, 52, 91, 91,
- 91, 52, 91, 91, 52, 91, 52, 91, 91, 91,
- 52, 76, 77, 77, 77, 77, 77, 76, 77, 77,
- 77, 77, 77, 51, 51, 51, 51, 91, 91, 91,
- 91, 91, 87, 91, 52, 91, 91, 91, 91, 52,
- 91, 52, 91, 91, 91, 91, 91, 91, 52, 91,
-
- 52, 43, 43, 43, 48, 91, 48, 48, 48, 52,
- 52, 75, 75, 55, 55, 3, 91, 91, 91, 91,
- 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
- 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
- 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
- 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
- 91, 91, 91
+ 44, 44, 49, 50, 51, 51, 51, 51, 79, 82,
+ 53, 77, 78, 78, 78, 78, 78, 91, 90, 89,
+ 54, 49, 51, 51, 51, 51, 51, 85, 85, 82,
+
+ 55, 83, 41, 41, 92, 56, 49, 57, 57, 57,
+ 57, 57, 92, 58, 58, 58, 58, 58, 58, 42,
+ 42, 42, 42, 42, 56, 49, 51, 51, 51, 51,
+ 51, 49, 51, 51, 51, 51, 51, 92, 84, 56,
+ 49, 59, 59, 59, 59, 59, 49, 51, 51, 51,
+ 51, 51, 64, 51, 43, 92, 87, 92, 56, 92,
+ 92, 52, 92, 92, 56, 92, 92, 92, 52, 92,
+ 92, 92, 92, 56, 43, 43, 92, 52, 92, 56,
+ 49, 51, 60, 60, 51, 51, 65, 51, 51, 92,
+ 92, 61, 92, 92, 92, 43, 52, 92, 62, 92,
+
+ 92, 92, 92, 52, 92, 92, 92, 63, 92, 92,
+ 92, 92, 52, 56, 49, 66, 66, 66, 66, 66,
+ 51, 51, 92, 51, 51, 92, 92, 92, 67, 52,
+ 92, 92, 52, 51, 51, 92, 52, 92, 92, 52,
+ 92, 92, 52, 92, 92, 52, 92, 56, 52, 52,
+ 92, 92, 68, 69, 69, 51, 51, 51, 52, 70,
+ 51, 51, 92, 52, 92, 52, 92, 92, 92, 52,
+ 52, 92, 52, 71, 71, 51, 52, 92, 92, 52,
+ 92, 52, 92, 52, 92, 52, 92, 92, 92, 92,
+ 52, 49, 72, 72, 72, 72, 72, 51, 51, 52,
+
+ 51, 51, 51, 51, 92, 92, 52, 92, 92, 52,
+ 92, 52, 92, 52, 92, 92, 52, 92, 52, 51,
+ 51, 92, 52, 92, 56, 52, 92, 52, 52, 92,
+ 73, 51, 51, 74, 92, 52, 92, 92, 92, 92,
+ 52, 92, 92, 92, 52, 92, 92, 52, 44, 44,
+ 44, 44, 44, 92, 51, 51, 52, 49, 75, 75,
+ 75, 75, 75, 52, 49, 49, 49, 49, 49, 49,
+ 52, 77, 77, 77, 77, 77, 77, 92, 92, 52,
+ 77, 78, 78, 78, 78, 78, 92, 92, 92, 92,
+ 56, 52, 52, 52, 52, 52, 44, 44, 44, 44,
+
+ 44, 51, 51, 92, 51, 51, 51, 51, 92, 92,
+ 52, 92, 80, 52, 92, 52, 92, 52, 92, 92,
+ 52, 92, 52, 92, 51, 51, 52, 51, 51, 52,
+ 92, 52, 80, 52, 81, 92, 52, 51, 51, 92,
+ 52, 51, 51, 52, 92, 92, 52, 51, 51, 52,
+ 52, 92, 52, 52, 92, 92, 52, 52, 51, 51,
+ 51, 51, 52, 52, 51, 51, 52, 52, 92, 52,
+ 51, 51, 52, 52, 52, 92, 52, 92, 92, 52,
+ 52, 51, 51, 52, 92, 52, 52, 51, 51, 52,
+ 52, 51, 51, 51, 51, 52, 52, 52, 92, 92,
+
+ 52, 92, 52, 52, 51, 51, 52, 52, 92, 52,
+ 51, 51, 52, 52, 51, 51, 52, 92, 52, 52,
+ 52, 92, 86, 52, 51, 51, 52, 51, 51, 52,
+ 52, 92, 92, 52, 92, 52, 52, 51, 51, 52,
+ 52, 51, 51, 52, 92, 92, 52, 51, 51, 52,
+ 52, 92, 52, 52, 92, 92, 52, 52, 51, 51,
+ 92, 92, 52, 52, 92, 92, 52, 52, 92, 92,
+ 92, 92, 52, 92, 52, 77, 78, 78, 78, 78,
+ 78, 51, 51, 52, 51, 51, 92, 92, 92, 92,
+ 88, 92, 92, 52, 92, 92, 92, 52, 92, 92,
+
+ 52, 92, 92, 92, 92, 92, 52, 92, 92, 52,
+ 43, 43, 43, 48, 92, 48, 48, 48, 52, 52,
+ 76, 76, 56, 56, 3, 92, 92, 92, 92, 92,
+ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
+ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
+ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
+ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
+ 92, 92
} ;
-static const flex_int16_t yy_chk[664] =
+static const flex_int16_t yy_chk[673] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -814,80 +815,81 @@ static const flex_int16_t yy_chk[664] =
1, 1, 1, 1, 1, 1, 1, 8, 8, 8,
8, 8, 9, 9, 9, 9, 9, 10, 10, 10,
10, 10, 11, 11, 11, 11, 11, 12, 12, 12,
- 12, 12, 14, 14, 14, 14, 14, 14, 96, 46,
- 14, 42, 42, 42, 42, 42, 16, 16, 16, 16,
- 16, 16, 17, 17, 17, 17, 17, 17, 89, 46,
-
- 14, 46, 88, 86, 84, 14, 15, 15, 15, 15,
- 15, 15, 48, 15, 15, 15, 15, 15, 15, 16,
- 44, 44, 44, 44, 44, 17, 18, 18, 18, 18,
- 18, 18, 19, 19, 19, 19, 19, 19, 41, 15,
- 20, 20, 20, 20, 20, 20, 22, 22, 40, 40,
- 40, 40, 40, 40, 5, 22, 3, 0, 0, 18,
- 0, 0, 22, 0, 0, 19, 0, 47, 0, 0,
- 0, 22, 0, 20, 21, 21, 21, 21, 21, 21,
- 23, 23, 23, 47, 0, 21, 0, 0, 0, 0,
- 23, 0, 21, 0, 0, 0, 0, 23, 0, 0,
-
- 0, 21, 0, 47, 0, 47, 23, 21, 24, 24,
- 24, 24, 24, 24, 25, 25, 0, 26, 26, 83,
- 0, 0, 27, 25, 0, 0, 26, 27, 27, 0,
- 25, 0, 0, 26, 0, 0, 27, 0, 83, 25,
- 0, 24, 26, 27, 0, 0, 27, 28, 28, 28,
- 30, 30, 27, 29, 29, 29, 0, 28, 83, 30,
- 83, 0, 0, 29, 28, 0, 30, 31, 31, 31,
- 29, 0, 0, 28, 0, 30, 0, 31, 0, 29,
- 0, 0, 0, 0, 31, 32, 32, 32, 32, 32,
- 32, 33, 33, 31, 34, 34, 35, 35, 0, 0,
-
- 33, 0, 0, 34, 0, 35, 0, 33, 0, 0,
- 34, 0, 35, 36, 36, 0, 33, 0, 32, 34,
- 0, 35, 36, 0, 33, 37, 37, 33, 0, 36,
- 0, 0, 0, 0, 37, 0, 0, 0, 36, 0,
- 0, 37, 49, 49, 49, 49, 49, 49, 39, 39,
- 37, 38, 38, 38, 38, 38, 38, 39, 50, 50,
- 0, 0, 0, 0, 39, 0, 0, 50, 0, 0,
- 0, 0, 0, 39, 50, 76, 76, 76, 76, 76,
- 76, 0, 0, 50, 38, 38, 38, 38, 38, 38,
- 45, 45, 45, 45, 45, 51, 51, 0, 52, 52,
-
- 53, 53, 0, 0, 51, 0, 45, 52, 0, 53,
- 0, 51, 0, 0, 52, 0, 53, 0, 54, 54,
- 51, 56, 56, 52, 0, 53, 45, 54, 45, 0,
- 56, 57, 57, 0, 54, 58, 58, 56, 0, 0,
- 57, 59, 59, 54, 58, 0, 56, 57, 0, 0,
- 59, 58, 60, 60, 61, 61, 57, 59, 62, 62,
- 58, 60, 0, 61, 63, 63, 59, 62, 60, 0,
- 61, 0, 0, 63, 62, 64, 64, 60, 0, 61,
- 63, 65, 65, 62, 64, 67, 67, 0, 0, 63,
- 65, 64, 0, 0, 67, 68, 68, 65, 69, 69,
-
- 64, 67, 0, 67, 68, 0, 65, 69, 70, 70,
- 67, 68, 71, 71, 69, 0, 0, 70, 72, 72,
- 68, 71, 0, 69, 70, 0, 0, 72, 71, 73,
- 73, 74, 74, 70, 72, 75, 75, 71, 73, 0,
- 74, 0, 0, 72, 75, 73, 0, 74, 0, 0,
- 0, 75, 0, 0, 73, 0, 74, 0, 0, 0,
- 75, 77, 77, 77, 77, 77, 77, 78, 78, 78,
- 78, 78, 78, 85, 85, 87, 87, 0, 0, 0,
- 0, 0, 85, 0, 87, 0, 0, 0, 0, 85,
- 0, 87, 0, 0, 0, 0, 0, 0, 85, 0,
-
- 87, 92, 92, 92, 93, 0, 93, 93, 93, 94,
- 94, 95, 95, 97, 97, 91, 91, 91, 91, 91,
- 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
- 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
- 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
- 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
- 91, 91, 91
+ 12, 12, 14, 14, 14, 14, 14, 14, 97, 46,
+ 14, 40, 40, 40, 40, 40, 40, 90, 89, 87,
+ 14, 16, 16, 16, 16, 16, 16, 85, 48, 46,
+
+ 14, 46, 41, 5, 3, 14, 15, 15, 15, 15,
+ 15, 15, 0, 15, 15, 15, 15, 15, 15, 42,
+ 42, 42, 42, 42, 16, 17, 17, 17, 17, 17,
+ 17, 18, 18, 18, 18, 18, 18, 0, 47, 15,
+ 19, 19, 19, 19, 19, 19, 20, 20, 20, 20,
+ 20, 20, 22, 22, 47, 0, 84, 0, 17, 0,
+ 0, 22, 0, 0, 18, 0, 0, 0, 22, 0,
+ 0, 0, 0, 19, 47, 84, 47, 22, 0, 20,
+ 21, 21, 21, 21, 21, 21, 23, 23, 23, 0,
+ 0, 21, 0, 0, 0, 84, 23, 84, 21, 0,
+
+ 0, 0, 0, 23, 0, 0, 0, 21, 0, 0,
+ 0, 0, 23, 21, 24, 24, 24, 24, 24, 24,
+ 25, 25, 0, 26, 26, 0, 0, 0, 27, 25,
+ 0, 0, 26, 27, 27, 0, 25, 0, 0, 26,
+ 0, 0, 27, 0, 0, 25, 0, 24, 26, 27,
+ 0, 0, 27, 28, 28, 28, 30, 30, 27, 29,
+ 29, 29, 0, 28, 0, 30, 0, 0, 0, 29,
+ 28, 0, 30, 31, 31, 31, 29, 0, 0, 28,
+ 0, 30, 0, 31, 0, 29, 0, 0, 0, 0,
+ 31, 32, 32, 32, 32, 32, 32, 33, 33, 31,
+
+ 34, 34, 35, 35, 0, 0, 33, 0, 0, 34,
+ 0, 35, 0, 33, 0, 0, 34, 0, 35, 36,
+ 36, 0, 33, 0, 32, 34, 0, 35, 36, 0,
+ 33, 37, 37, 33, 0, 36, 0, 0, 0, 0,
+ 37, 0, 0, 0, 36, 0, 0, 37, 44, 44,
+ 44, 44, 44, 0, 39, 39, 37, 38, 38, 38,
+ 38, 38, 38, 39, 49, 49, 49, 49, 49, 49,
+ 39, 77, 77, 77, 77, 77, 77, 0, 0, 39,
+ 78, 78, 78, 78, 78, 78, 0, 0, 0, 0,
+ 38, 38, 38, 38, 38, 38, 45, 45, 45, 45,
+
+ 45, 50, 50, 0, 51, 51, 52, 52, 0, 0,
+ 50, 0, 45, 51, 0, 52, 0, 50, 0, 0,
+ 51, 0, 52, 0, 53, 53, 50, 54, 54, 51,
+ 0, 52, 45, 53, 45, 0, 54, 55, 55, 0,
+ 53, 57, 57, 54, 0, 0, 55, 58, 58, 53,
+ 57, 0, 54, 55, 0, 0, 58, 57, 59, 59,
+ 60, 60, 55, 58, 61, 61, 57, 59, 0, 60,
+ 62, 62, 58, 61, 59, 0, 60, 0, 0, 62,
+ 61, 63, 63, 59, 0, 60, 62, 64, 64, 61,
+ 63, 65, 65, 66, 66, 62, 64, 63, 0, 0,
+
+ 65, 0, 66, 64, 68, 68, 63, 65, 0, 66,
+ 69, 69, 64, 68, 70, 70, 65, 0, 66, 69,
+ 68, 0, 68, 70, 71, 71, 69, 72, 72, 68,
+ 70, 0, 0, 71, 0, 69, 72, 73, 73, 70,
+ 71, 74, 74, 72, 0, 0, 73, 75, 75, 71,
+ 74, 0, 72, 73, 0, 0, 75, 74, 76, 76,
+ 0, 0, 73, 75, 0, 0, 74, 76, 0, 0,
+ 0, 0, 75, 0, 76, 79, 79, 79, 79, 79,
+ 79, 86, 86, 76, 88, 88, 0, 0, 0, 0,
+ 86, 0, 0, 88, 0, 0, 0, 86, 0, 0,
+
+ 88, 0, 0, 0, 0, 0, 86, 0, 0, 88,
+ 93, 93, 93, 94, 0, 94, 94, 94, 95, 95,
+ 96, 96, 98, 98, 92, 92, 92, 92, 92, 92,
+ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
+ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
+ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
+ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
+ 92, 92
} ;
/* Table of booleans, true if rule could match eol. */
-static const flex_int32_t yy_rule_can_match_eol[56] =
+static const flex_int32_t yy_rule_can_match_eol[57] =
{ 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, };
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, };
static yy_state_type yy_last_accepting_state;
static char *yy_last_accepting_cpos;
@@ -934,8 +936,8 @@ char *yytext;
#include "hypno/grammar.h"
#include "hypno/tokens_arc.h"
-#line 937 "engines/hypno/lexer_arc.cpp"
-#line 938 "engines/hypno/lexer_arc.cpp"
+#line 939 "engines/hypno/lexer_arc.cpp"
+#line 940 "engines/hypno/lexer_arc.cpp"
#define INITIAL 0
@@ -1152,7 +1154,7 @@ YY_DECL
{
#line 42 "engines/hypno/lexer_arc.l"
-#line 1155 "engines/hypno/lexer_arc.cpp"
+#line 1157 "engines/hypno/lexer_arc.cpp"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -1179,13 +1181,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 92 )
+ if ( yy_current_state >= 93 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_current_state != 91 );
+ while ( yy_current_state != 92 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
@@ -1268,172 +1270,172 @@ return ABTOK;
case 11:
YY_RULE_SETUP
#line 53 "engines/hypno/lexer_arc.l"
-return AVTOK;
+return ALTOK;
YY_BREAK
case 12:
YY_RULE_SETUP
#line 54 "engines/hypno/lexer_arc.l"
-return ATOK;
+return AVTOK;
YY_BREAK
case 13:
YY_RULE_SETUP
#line 55 "engines/hypno/lexer_arc.l"
-return VTOK;
+return ATOK;
YY_BREAK
case 14:
YY_RULE_SETUP
#line 56 "engines/hypno/lexer_arc.l"
-return OTOK;
+return VTOK;
YY_BREAK
case 15:
YY_RULE_SETUP
#line 57 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ONTOK;
+return OTOK;
YY_BREAK
case 16:
YY_RULE_SETUP
#line 58 "engines/hypno/lexer_arc.l"
-return LTOK;
+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"
-return NTOK;
+return LTOK;
YY_BREAK
case 18:
YY_RULE_SETUP
#line 60 "engines/hypno/lexer_arc.l"
-return NSTOK;
+return NTOK;
YY_BREAK
case 19:
YY_RULE_SETUP
#line 61 "engines/hypno/lexer_arc.l"
-return MTOK;
+return NSTOK;
YY_BREAK
case 20:
YY_RULE_SETUP
#line 62 "engines/hypno/lexer_arc.l"
-return RTOK;
+return MTOK;
YY_BREAK
case 21:
YY_RULE_SETUP
#line 63 "engines/hypno/lexer_arc.l"
-return R01TOK;
+return RTOK;
YY_BREAK
case 22:
YY_RULE_SETUP
#line 64 "engines/hypno/lexer_arc.l"
-return ITOK;
+return R01TOK;
YY_BREAK
case 23:
YY_RULE_SETUP
#line 65 "engines/hypno/lexer_arc.l"
-return I1TOK;
+return ITOK;
YY_BREAK
case 24:
YY_RULE_SETUP
#line 66 "engines/hypno/lexer_arc.l"
-return J0TOK;
+return I1TOK;
YY_BREAK
case 25:
YY_RULE_SETUP
#line 67 "engines/hypno/lexer_arc.l"
-return JTOK;
+return J0TOK;
YY_BREAK
case 26:
YY_RULE_SETUP
#line 68 "engines/hypno/lexer_arc.l"
-return KTOK;
+return JTOK;
YY_BREAK
case 27:
YY_RULE_SETUP
#line 69 "engines/hypno/lexer_arc.l"
-return GTOK;
+return KTOK;
YY_BREAK
case 28:
YY_RULE_SETUP
#line 70 "engines/hypno/lexer_arc.l"
-return QTOK;
+return GTOK;
YY_BREAK
case 29:
YY_RULE_SETUP
#line 71 "engines/hypno/lexer_arc.l"
-return UTOK;
+return QTOK;
YY_BREAK
case 30:
YY_RULE_SETUP
#line 72 "engines/hypno/lexer_arc.l"
-return ZTOK;
+return UTOK;
YY_BREAK
case 31:
YY_RULE_SETUP
#line 73 "engines/hypno/lexer_arc.l"
-return WTOK;
+return ZTOK;
YY_BREAK
case 32:
YY_RULE_SETUP
#line 74 "engines/hypno/lexer_arc.l"
-return XTOK;
+return WTOK;
YY_BREAK
case 33:
YY_RULE_SETUP
#line 75 "engines/hypno/lexer_arc.l"
-return TTOK;
+return XTOK;
YY_BREAK
case 34:
YY_RULE_SETUP
#line 76 "engines/hypno/lexer_arc.l"
-return TPTOK;
+return TTOK;
YY_BREAK
case 35:
YY_RULE_SETUP
#line 77 "engines/hypno/lexer_arc.l"
-return TATOK;
+return TPTOK;
YY_BREAK
case 36:
YY_RULE_SETUP
#line 78 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FNTOK;
+return TATOK;
YY_BREAK
case 37:
YY_RULE_SETUP
#line 79 "engines/hypno/lexer_arc.l"
-return FTOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FNTOK;
YY_BREAK
case 38:
YY_RULE_SETUP
#line 80 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return SNTOK;
+return FTOK;
YY_BREAK
case 39:
YY_RULE_SETUP
#line 81 "engines/hypno/lexer_arc.l"
-return A0TOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return SNTOK;
YY_BREAK
case 40:
YY_RULE_SETUP
#line 82 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return BNTOK;
+return A0TOK;
YY_BREAK
case 41:
YY_RULE_SETUP
#line 83 "engines/hypno/lexer_arc.l"
-return KNTOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return BNTOK;
YY_BREAK
case 42:
YY_RULE_SETUP
#line 84 "engines/hypno/lexer_arc.l"
-return P0TOK;
+return KNTOK;
YY_BREAK
case 43:
YY_RULE_SETUP
#line 85 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return YXTOK;
+return P0TOK;
YY_BREAK
case 44:
YY_RULE_SETUP
#line 86 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ENCTOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return YXTOK;
YY_BREAK
case 45:
YY_RULE_SETUP
@@ -1443,17 +1445,17 @@ HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ENCTOK;
case 46:
YY_RULE_SETUP
#line 88 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.i = atoi(HYPNO_ARC_text); return NUM;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ENCTOK;
YY_BREAK
case 47:
YY_RULE_SETUP
#line 89 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return NAME;
+HYPNO_ARC_lval.i = atoi(HYPNO_ARC_text); return NUM;
YY_BREAK
case 48:
YY_RULE_SETUP
#line 90 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return NAME;
YY_BREAK
case 49:
YY_RULE_SETUP
@@ -1463,35 +1465,40 @@ HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
case 50:
YY_RULE_SETUP
#line 92 "engines/hypno/lexer_arc.l"
-return RESTOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
YY_BREAK
case 51:
-/* rule 51 can match eol */
YY_RULE_SETUP
#line 93 "engines/hypno/lexer_arc.l"
-return RETTOK;
+return RESTOK;
YY_BREAK
case 52:
+/* rule 52 can match eol */
YY_RULE_SETUP
#line 94 "engines/hypno/lexer_arc.l"
-/* ignore comment */
+return RETTOK;
YY_BREAK
case 53:
YY_RULE_SETUP
#line 95 "engines/hypno/lexer_arc.l"
-/* ignore whitespace */;
+/* ignore comment */
YY_BREAK
case 54:
YY_RULE_SETUP
#line 96 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.i = HYPNO_ARC_text[0]; return BYTE;
+/* ignore whitespace */;
YY_BREAK
case 55:
YY_RULE_SETUP
#line 97 "engines/hypno/lexer_arc.l"
+HYPNO_ARC_lval.i = HYPNO_ARC_text[0]; return BYTE;
+ YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 98 "engines/hypno/lexer_arc.l"
ECHO;
YY_BREAK
-#line 1494 "engines/hypno/lexer_arc.cpp"
+#line 1501 "engines/hypno/lexer_arc.cpp"
case YY_STATE_EOF(INITIAL):
yyterminate();
@@ -1789,7 +1796,7 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 92 )
+ if ( yy_current_state >= 93 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -1817,11 +1824,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 92 )
+ if ( yy_current_state >= 93 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 91);
+ yy_is_jam = (yy_current_state == 92);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -2468,7 +2475,7 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 97 "engines/hypno/lexer_arc.l"
+#line 98 "engines/hypno/lexer_arc.l"
namespace Hypno {
diff --git a/engines/hypno/lexer_arc.l b/engines/hypno/lexer_arc.l
index 4796325dd9e..59800c0cbf5 100644
--- a/engines/hypno/lexer_arc.l
+++ b/engines/hypno/lexer_arc.l
@@ -50,6 +50,7 @@ H[1-2] return H12TOK;
H return HTOK;
P return PTOK;
AB return ABTOK;
+AL return ALTOK;
AV return AVTOK;
A return ATOK;
V return VTOK;
diff --git a/engines/hypno/tokens_arc.h b/engines/hypno/tokens_arc.h
index 89c00812ec1..16afaeeabe3 100644
--- a/engines/hypno/tokens_arc.h
+++ b/engines/hypno/tokens_arc.h
@@ -74,47 +74,48 @@ extern int HYPNO_ARC_debug;
NUM = 267, /* NUM */
BYTE = 268, /* BYTE */
COMMENT = 269, /* COMMENT */
- AVTOK = 270, /* AVTOK */
- ABTOK = 271, /* ABTOK */
- CTOK = 272, /* CTOK */
- DTOK = 273, /* DTOK */
- HTOK = 274, /* HTOK */
- HETOK = 275, /* HETOK */
- HLTOK = 276, /* HLTOK */
- H12TOK = 277, /* H12TOK */
- HUTOK = 278, /* HUTOK */
- RETTOK = 279, /* RETTOK */
- QTOK = 280, /* QTOK */
- RESTOK = 281, /* RESTOK */
- PTOK = 282, /* PTOK */
- FTOK = 283, /* FTOK */
- TTOK = 284, /* TTOK */
- TATOK = 285, /* TATOK */
- TPTOK = 286, /* TPTOK */
- ATOK = 287, /* ATOK */
- VTOK = 288, /* VTOK */
- OTOK = 289, /* OTOK */
- LTOK = 290, /* LTOK */
- MTOK = 291, /* MTOK */
- NTOK = 292, /* NTOK */
- NSTOK = 293, /* NSTOK */
- RTOK = 294, /* RTOK */
- R01TOK = 295, /* R01TOK */
- ITOK = 296, /* ITOK */
- I1TOK = 297, /* I1TOK */
- GTOK = 298, /* GTOK */
- JTOK = 299, /* JTOK */
- J0TOK = 300, /* J0TOK */
- KTOK = 301, /* KTOK */
- UTOK = 302, /* UTOK */
- ZTOK = 303, /* ZTOK */
- NONETOK = 304, /* NONETOK */
- A0TOK = 305, /* A0TOK */
- P0TOK = 306, /* P0TOK */
- WTOK = 307, /* WTOK */
- XTOK = 308, /* XTOK */
- CB3TOK = 309, /* CB3TOK */
- C02TOK = 310 /* C02TOK */
+ ALTOK = 270, /* ALTOK */
+ AVTOK = 271, /* AVTOK */
+ ABTOK = 272, /* ABTOK */
+ CTOK = 273, /* CTOK */
+ DTOK = 274, /* DTOK */
+ HTOK = 275, /* HTOK */
+ HETOK = 276, /* HETOK */
+ HLTOK = 277, /* HLTOK */
+ H12TOK = 278, /* H12TOK */
+ HUTOK = 279, /* HUTOK */
+ RETTOK = 280, /* RETTOK */
+ QTOK = 281, /* QTOK */
+ RESTOK = 282, /* RESTOK */
+ PTOK = 283, /* PTOK */
+ FTOK = 284, /* FTOK */
+ TTOK = 285, /* TTOK */
+ TATOK = 286, /* TATOK */
+ TPTOK = 287, /* TPTOK */
+ ATOK = 288, /* ATOK */
+ VTOK = 289, /* VTOK */
+ OTOK = 290, /* OTOK */
+ LTOK = 291, /* LTOK */
+ MTOK = 292, /* MTOK */
+ NTOK = 293, /* NTOK */
+ NSTOK = 294, /* NSTOK */
+ RTOK = 295, /* RTOK */
+ R01TOK = 296, /* R01TOK */
+ ITOK = 297, /* ITOK */
+ I1TOK = 298, /* I1TOK */
+ GTOK = 299, /* GTOK */
+ JTOK = 300, /* JTOK */
+ J0TOK = 301, /* J0TOK */
+ KTOK = 302, /* KTOK */
+ UTOK = 303, /* UTOK */
+ ZTOK = 304, /* ZTOK */
+ NONETOK = 305, /* NONETOK */
+ A0TOK = 306, /* A0TOK */
+ P0TOK = 307, /* P0TOK */
+ WTOK = 308, /* WTOK */
+ XTOK = 309, /* XTOK */
+ CB3TOK = 310, /* CB3TOK */
+ C02TOK = 311 /* C02TOK */
};
typedef enum HYPNO_ARC_tokentype HYPNO_ARC_token_kind_t;
#endif
@@ -128,7 +129,7 @@ union HYPNO_ARC_STYPE
char *s; /* string value */
int i; /* integer value */
-#line 132 "engines/hypno/tokens_arc.h"
+#line 133 "engines/hypno/tokens_arc.h"
};
typedef union HYPNO_ARC_STYPE HYPNO_ARC_STYPE;
Commit: 5d0b07c86c99b617364df41ea019b94b70ccf298
https://github.com/scummvm/scummvm/commit/5d0b07c86c99b617364df41ea019b94b70ccf298
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-04-11T21:17:34+02:00
Commit Message:
HYPNO: fixed ui offsets in last level of wet
Changed paths:
engines/hypno/wet/wet.cpp
diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index 6b1306a93a9..a0829d5085a 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -46,8 +46,8 @@ static const chapterEntry rawChapterTable[] = {
{51, {60, 167}, {190, 167}, {135, 187}}, // c51
{52, {60, 167}, {190, 167}, {135, 187}}, // c52
{50, {19, 3}, {246, 3}, {246, 11}}, // c50 (fixed)
- {61, {44, 172}, {218, 172}, {0, 0}}, // c61
- {60, {44, 172}, {218, 172}, {0, 0}}, // c60
+ {61, {63, 167}, {187, 167}, {192, 188}}, // c61
+ {60, {63, 167}, {187, 167}, {192, 188}}, // c60
{0, {0, 0}, {0, 0}, {0, 0}} // NULL
};
Commit: 1e8343b95621c26137e409a926d2e4631b8be8dc
https://github.com/scummvm/scummvm/commit/1e8343b95621c26137e409a926d2e4631b8be8dc
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-04-11T21:17:34+02:00
Commit Message:
HYPNO: refactor code for handling player frames to allow changes during levels in wet
Changed paths:
engines/hypno/arcade.cpp
engines/hypno/hypno.h
engines/hypno/wet/arcade.cpp
diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index ef1bfcdb830..ab76f30de87 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -340,6 +340,23 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
if (_background->decoder->getCurFrame() > (int) at.time) {
transition = true;
+ if (_playerFrameSeps.size() == 1) {
+ _playerFrameStart = _playerFrameEnd + 1;
+ _playerFrameSep = *_playerFrameSeps.begin();
+ _playerFrameSeps.pop_front();
+ _playerFrameEnd = _playerFrames.size();
+ _playerFrameIdx = _playerFrameStart;
+ debugC(1, kHypnoDebugArcade, "New separator frames %d %d %d", _playerFrameStart, _playerFrameSep, _playerFrameEnd);
+ } else if (_playerFrameSeps.size() >= 2) {
+ _playerFrameStart = _playerFrameEnd + 1;
+ _playerFrameSep = *_playerFrameSeps.begin();
+ _playerFrameSeps.pop_front();
+ _playerFrameEnd = *_playerFrameSeps.begin();
+ _playerFrameSeps.pop_front();
+ _playerFrameIdx = _playerFrameStart;
+ debugC(1, kHypnoDebugArcade, "New separator frames %d %d %d", _playerFrameStart, _playerFrameSep, _playerFrameEnd);
+ }
+
if (!at.video.empty()) {
_background->decoder->pauseVideo(true);
debugC(1, kHypnoDebugArcade, "Playing transition %s", at.video.c_str());
@@ -352,6 +369,7 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
loadPalette(currentPalette);
_background->decoder->pauseVideo(false);
+ drawPlayer();
updateScreen(*_background);
drawScreen();
drawCursorArcade(mousePos);
diff --git a/engines/hypno/hypno.h b/engines/hypno/hypno.h
index b49477a7ef1..9e94b619f1c 100644
--- a/engines/hypno/hypno.h
+++ b/engines/hypno/hypno.h
@@ -284,7 +284,10 @@ public:
Shoots _shoots;
Frames _playerFrames;
int _playerFrameIdx;
+ Common::List<int> _playerFrameSeps;
+ int _playerFrameStart;
int _playerFrameSep;
+ int _playerFrameEnd;
// Objectives
uint32 _objIdx;
diff --git a/engines/hypno/wet/arcade.cpp b/engines/hypno/wet/arcade.cpp
index 82c9b6a0d27..ac277ff8ded 100644
--- a/engines/hypno/wet/arcade.cpp
+++ b/engines/hypno/wet/arcade.cpp
@@ -414,22 +414,32 @@ void WetEngine::runBeforeArcade(ArcadeShooting *arc) {
}
}
- _playerFrameSep = 0;
- for (Frames::iterator it =_playerFrames.begin(); it != _playerFrames.end(); ++it) {
- if ((*it)->getPixel(0, 0) == 255)
- break;
- if ((*it)->getPixel(0, 0) == 252)
- break;
-
- _playerFrameSep++;
+ for (int i = 0; i < int(_playerFrames.size()); i++) {
+ if (_playerFrames[i]->getPixel(0, 0) == 255)
+ _playerFrameSeps.push_back(i);
+ else if (_playerFrames[i]->getPixel(0, 0) == 252)
+ _playerFrameSeps.push_back(i);
}
- if (_playerFrameSep == (int)_playerFrames.size()) {
+ if (_playerFrameSeps.size() == 0) {
debugC(1, kHypnoDebugArcade, "No player separator frame found in %s! (size: %d)", arc->player.c_str(), _playerFrames.size());
- //_playerFrameSep = -1;
} else
- debugC(1, kHypnoDebugArcade, "Separator frame found at %d", _playerFrameSep);
+ debugC(1, kHypnoDebugArcade, "Number of separator frames: %d", _playerFrameSeps.size());
+
+ _playerFrameStart = 0;
+
+ if (_playerFrameSeps.size() > 0) {
+ _playerFrameSep = *_playerFrameSeps.begin();
+ _playerFrameSeps.pop_front();
+ }
+
+ if (_playerFrameSeps.size() > 0) {
+ _playerFrameEnd = *_playerFrameSeps.begin();
+ _playerFrameSeps.pop_front();
+ } else {
+ _playerFrameEnd = _playerFrames.size();
+ }
_playerFrameIdx = -1;
}
@@ -573,13 +583,9 @@ void WetEngine::drawPlayer() {
if (_arcadeMode == "Y1" || _arcadeMode == "Y3")
return;
- if (_playerFrameIdx < _playerFrameSep) {
- _playerFrameIdx++;
- _playerFrameIdx = _playerFrameIdx % _playerFrameSep;
- } else {
- _playerFrameIdx++;
- if (_playerFrameIdx >= (int)_playerFrames.size())
- _playerFrameIdx = 0;
+ _playerFrameIdx++;
+ if (_playerFrameIdx == _playerFrameSep || _playerFrameIdx >= _playerFrameEnd) {
+ _playerFrameIdx = _playerFrameStart;
}
if (_arcadeMode == "Y5")
Commit: 606dbe60f105738795217327a9f38983226ce44b
https://github.com/scummvm/scummvm/commit/606dbe60f105738795217327a9f38983226ce44b
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-04-11T21:17:34+02:00
Commit Message:
HYPNO: correctly play explosions animations avoiding separator frames in wet
Changed paths:
engines/hypno/arcade.cpp
diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index ab76f30de87..a11feac0282 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -665,7 +665,9 @@ void HypnoEngine::shoot(const Common::Point &mousePos, ArcadeShooting *arc, MVid
playVideo(*_shoots[i].video);
int w = _shoots[i].video->decoder->getWidth();
int h = _shoots[i].video->decoder->getHeight();
+ uint32 explosionLastFrame = _shoots[i].video->decoder->getFrameCount() - 1;
_shoots[i].video->position = Common::Point(position.x - w / 2, position.y - h / 2);
+ _shoots[i].lastFrame = explosionLastFrame - 1;
} else if (_objIdx == 0 && !arc->hitBoss1Video.empty()) {
background.decoder->pauseVideo(true);
MVideo video(arc->hitBoss1Video, Common::Point(0, 0), false, true, false);
Commit: baa7d670daf723997bfaa86bd386d5377988b9d9
https://github.com/scummvm/scummvm/commit/baa7d670daf723997bfaa86bd386d5377988b9d9
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-04-11T21:17:34+02:00
Commit Message:
HYPNO: set a better default value for frame separator in wet
Changed paths:
engines/hypno/wet/arcade.cpp
diff --git a/engines/hypno/wet/arcade.cpp b/engines/hypno/wet/arcade.cpp
index ac277ff8ded..f24d5690144 100644
--- a/engines/hypno/wet/arcade.cpp
+++ b/engines/hypno/wet/arcade.cpp
@@ -428,6 +428,7 @@ void WetEngine::runBeforeArcade(ArcadeShooting *arc) {
debugC(1, kHypnoDebugArcade, "Number of separator frames: %d", _playerFrameSeps.size());
_playerFrameStart = 0;
+ _playerFrameSep = _playerFrames.size();
if (_playerFrameSeps.size() > 0) {
_playerFrameSep = *_playerFrameSeps.begin();
Commit: 99044b349ba26877b348166dc66206318abc5471
https://github.com/scummvm/scummvm/commit/99044b349ba26877b348166dc66206318abc5471
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-04-11T21:17:34+02:00
Commit Message:
HYPNO: refactor to use color constants loaded from the current palette
Changed paths:
engines/hypno/arcade.cpp
engines/hypno/boyz/arcade.cpp
engines/hypno/hypno.cpp
engines/hypno/hypno.h
engines/hypno/spider/arcade.cpp
engines/hypno/wet/arcade.cpp
diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index a11feac0282..0db30aa2538 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -463,9 +463,9 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
_health = _health - it->attackWeight;
hitPlayer();
}
- byte p[3] = {0xff, 0x00, 0x00}; // Always red?
+ byte *c = getPalette(kHypnoColorRed);
assert(s.paletteSize == 1 || s.paletteSize == 0);
- loadPalette((byte *) &p, s.paletteOffset, s.paletteSize);
+ loadPalette(c, s.paletteOffset, s.paletteSize);
_shoots.push_back(s);
} else {
s.video = new MVideo(it->animation, offset + it->position, true, false, false);
diff --git a/engines/hypno/boyz/arcade.cpp b/engines/hypno/boyz/arcade.cpp
index 7652eb485bc..6c37210f841 100644
--- a/engines/hypno/boyz/arcade.cpp
+++ b/engines/hypno/boyz/arcade.cpp
@@ -96,18 +96,18 @@ void BoyzEngine::drawHealth() {
// Health
Common::Rect healthBarBox(0, 0, _healthBar[_currentActor].w, _healthBar[_currentActor].h/2);
- uint32 c = 252; // white
+ uint32 c = kHypnoColorWhite; // white
_compositeSurface->fillRect(healthBarBox, c);
drawImage(_healthBar[_currentActor], 0, 0, true);
// Ammo
Common::Rect ammoBarBox(320 - _ammoBar[_currentActor].w, 0, 320, _ammoBar[_currentActor].h/2);
- c = 251; // green
+ c = kHypnoColorGreen; // green
_compositeSurface->fillRect(ammoBarBox, c);
drawImage(_ammoBar[_currentActor], 320 - _ammoBar[_currentActor].w, 0, true);
}
void BoyzEngine::hitPlayer() {
- uint32 c = 250; // red
+ uint32 c = kHypnoColorRed; // red
_compositeSurface->fillRect(Common::Rect(0, 0, _screenW, _screenH), c);
drawScreen();
if (!_hitSound.empty())
diff --git a/engines/hypno/hypno.cpp b/engines/hypno/hypno.cpp
index da05be2e8a3..dba13b95174 100644
--- a/engines/hypno/hypno.cpp
+++ b/engines/hypno/hypno.cpp
@@ -433,6 +433,13 @@ void HypnoEngine::loadPalette(const byte *palette, uint32 offset, uint32 size) {
g_system->getPaletteManager()->setPalette(palette, offset, size);
}
+
+byte *HypnoEngine::getPalette(uint idx) {
+ byte *videoPalette = (byte *)malloc(3);
+ g_system->getPaletteManager()->grabPalette(videoPalette, idx, 1);
+ return videoPalette;
+}
+
void HypnoEngine::updateVideo(MVideo &video) {
video.decoder->decodeNextFrame();
}
diff --git a/engines/hypno/hypno.h b/engines/hypno/hypno.h
index 9e94b619f1c..bc29e28b746 100644
--- a/engines/hypno/hypno.h
+++ b/engines/hypno/hypno.h
@@ -68,6 +68,21 @@ enum PlayerPosition {
kPlayerRight = 'R'
};
+// Common colors
+enum HypnoColors {
+ kHypnoColorRed = 250,
+ kHypnoColorGreen = 251,
+ kHypnoColorWhite = 252,
+ kHypnoColorYellow = 253,
+};
+
+// Spider colors
+enum SpiderColors {
+ kSpiderColorWhite = 248,
+ kSpiderColorBlue = 252,
+};
+
+
class HypnoEngine : public Engine {
private:
Image::ImageDecoder *_image;
@@ -144,6 +159,7 @@ public:
void drawImage(Graphics::Surface &image, int x, int y, bool transparent);
void loadPalette(const Common::String &fname);
void loadPalette(const byte *palette, uint32 offset, uint32 size);
+ byte *getPalette(uint32 idx);
// Cursors
Common::String _defaultCursor;
diff --git a/engines/hypno/spider/arcade.cpp b/engines/hypno/spider/arcade.cpp
index eb3cc0e3393..6df9bdb9e83 100644
--- a/engines/hypno/spider/arcade.cpp
+++ b/engines/hypno/spider/arcade.cpp
@@ -88,7 +88,7 @@ void SpiderEngine::hitPlayer() {
if (_playerFrameIdx < _playerFrameSep)
_playerFrameIdx = _playerFrameSep;
} else {
- uint32 c = 250; // red
+ uint32 c = kHypnoColorRed; // red
_compositeSurface->fillRect(Common::Rect(0, 0, 640, 480), c);
drawScreen();
}
@@ -97,7 +97,7 @@ void SpiderEngine::hitPlayer() {
}
void SpiderEngine::drawShoot(const Common::Point &target) {
- uint32 c = 248; // white
+ uint32 c = kSpiderColorWhite; // white
uint32 ox = 0;
uint32 oy = 0;
@@ -270,14 +270,14 @@ void SpiderEngine::drawHealth() {
return;
r = Common::Rect(256, 152 + d, 272, 174);
if (d >= 11)
- c = 250; // red
+ c = kHypnoColorRed; // red
else
- c = 251; // green
+ c = kHypnoColorGreen; // green
_compositeSurface->fillRect(r, c);
r = Common::Rect(256, 152, 272, 174);
- c = 252; // blue
+ c = kSpiderColorBlue; // blue
_compositeSurface->frameRect(r, c);
drawString("block05.fgx", "ENERGY", 248, 180, 38, c);
diff --git a/engines/hypno/wet/arcade.cpp b/engines/hypno/wet/arcade.cpp
index f24d5690144..12dd96858ad 100644
--- a/engines/hypno/wet/arcade.cpp
+++ b/engines/hypno/wet/arcade.cpp
@@ -232,7 +232,7 @@ void WetEngine::runAfterArcade(ArcadeShooting *arc) {
byte *palette;
Graphics::Surface *frame = decodeFrame("c_misc/zones.smk", 12, &palette);
loadPalette(palette, 0, 256);
- uint32 c = 251; // green
+ uint32 c = kHypnoColorGreen; // green
int bonusCounter = 0;
int scoreCounter = _score - _bonus;
assert(scoreCounter >= 0);
@@ -357,7 +357,7 @@ void WetEngine::runBeforeArcade(ArcadeShooting *arc) {
bool endedBriefing = false;
Common::Event event;
- uint32 c = 251; // green
+ uint32 c = kHypnoColorGreen; // green
drawString("scifi08.fgx", Common::String::format("Lives : %d", _lives), 36, 2, 0, c);
while (!shouldQuit() && !endedBriefing) {
@@ -544,7 +544,7 @@ Common::Point WetEngine::computeTargetPosition(const Common::Point &mousePos) {
}
void WetEngine::drawShoot(const Common::Point &mousePos) {
- uint32 c = 253;
+ uint32 c = kHypnoColorYellow;
if (_arcadeMode == "YT") {
_compositeSurface->drawLine(mousePos.x, mousePos.y - 20, mousePos.x, mousePos.y + 1, c);
@@ -565,7 +565,7 @@ void WetEngine::drawShoot(const Common::Point &mousePos) {
void WetEngine::drawPlayer() {
// TARGET ACQUIRED frame
- uint32 c = 251; // green
+ uint32 c = kHypnoColorGreen; // green
_compositeSurface->drawLine(113, 1, 119, 1, c);
_compositeSurface->drawLine(200, 1, 206, 1, c);
@@ -575,7 +575,7 @@ void WetEngine::drawPlayer() {
_compositeSurface->drawLine(113, 9, 119, 9, c);
_compositeSurface->drawLine(200, 9, 206, 9, c);
- c = 250; // red ?
+ c = kHypnoColorRed; // red ?
Common::Point mousePos = g_system->getEventManager()->getMousePos();
int i = detectTarget(mousePos);
if (i > 0)
@@ -605,7 +605,7 @@ void WetEngine::drawPlayer() {
}
void WetEngine::drawHealth() {
- uint32 c = 253;
+ uint32 c = kHypnoColorYellow;
int p = (100 * _health) / _maxHealth;
int s = _score;
int mo = _objKillsCount[_objIdx];
More information about the Scummvm-git-logs
mailing list