[Scummvm-git-logs] scummvm master -> 7d788fefa7f8e72c93d5b1d368b24fd06b453c0c
neuromancer
noreply at scummvm.org
Thu Feb 24 17:12:28 UTC 2022
This automated email contains information about 8 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
9da95b6e0d HYPNO: load H1 and H2 segments in wet
13f53c83a1 HYPNO: load last two levels in wet (but not playing them correctly)
a226d1e7be HYPNO: finally load all the levels in wet
5e6c3af2b3 HYPNO: refactor runBeforeArcade code to include image flipping, if necessary
ebe066bcb5 HYPNO: fixed c400.mi_ id from the original in wet
dddf26620b HYPNO: fixed ids from c401.mi_ and c402.mi_ in wet
26463305d9 HYPNO: allow c40 levels to load player images in wet
7d788fefa7 HYPNO: avoid crashing on level c30 in wet
Commit: 9da95b6e0d608fa75882cbfdbf4e9d6ff90b1038
https://github.com/scummvm/scummvm/commit/9da95b6e0d608fa75882cbfdbf4e9d6ff90b1038
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-02-24T18:12:29+01:00
Commit Message:
HYPNO: load H1 and H2 segments in wet
Changed paths:
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
engines/hypno/wet/wet.cpp
diff --git a/engines/hypno/grammar_arc.cpp b/engines/hypno/grammar_arc.cpp
index 66d0731f864..0681f1590e9 100644
--- a/engines/hypno/grammar_arc.cpp
+++ b/engines/hypno/grammar_arc.cpp
@@ -150,40 +150,41 @@ enum yysymbol_kind_t
YYSYMBOL_HTOK = 17, /* HTOK */
YYSYMBOL_HETOK = 18, /* HETOK */
YYSYMBOL_HLTOK = 19, /* HLTOK */
- YYSYMBOL_HUTOK = 20, /* HUTOK */
- YYSYMBOL_RETTOK = 21, /* RETTOK */
- YYSYMBOL_QTOK = 22, /* QTOK */
- YYSYMBOL_RESTOK = 23, /* RESTOK */
- YYSYMBOL_PTOK = 24, /* PTOK */
- YYSYMBOL_FTOK = 25, /* FTOK */
- YYSYMBOL_TTOK = 26, /* TTOK */
- YYSYMBOL_TPTOK = 27, /* TPTOK */
- YYSYMBOL_ATOK = 28, /* ATOK */
- YYSYMBOL_VTOK = 29, /* VTOK */
- YYSYMBOL_OTOK = 30, /* OTOK */
- YYSYMBOL_NTOK = 31, /* NTOK */
- YYSYMBOL_NSTOK = 32, /* NSTOK */
- YYSYMBOL_RTOK = 33, /* RTOK */
- YYSYMBOL_R01TOK = 34, /* R01TOK */
- YYSYMBOL_ITOK = 35, /* ITOK */
- YYSYMBOL_I1TOK = 36, /* I1TOK */
- YYSYMBOL_JTOK = 37, /* JTOK */
- YYSYMBOL_ZTOK = 38, /* ZTOK */
- YYSYMBOL_NONETOK = 39, /* NONETOK */
- YYSYMBOL_A0TOK = 40, /* A0TOK */
- YYSYMBOL_P0TOK = 41, /* P0TOK */
- YYSYMBOL_WTOK = 42, /* WTOK */
- YYSYMBOL_XTOK = 43, /* XTOK */
- YYSYMBOL_CB3TOK = 44, /* CB3TOK */
- YYSYMBOL_C02TOK = 45, /* C02TOK */
- YYSYMBOL_YYACCEPT = 46, /* $accept */
- YYSYMBOL_start = 47, /* start */
- YYSYMBOL_48_1 = 48, /* $@1 */
- YYSYMBOL_header = 49, /* header */
- YYSYMBOL_hline = 50, /* hline */
- YYSYMBOL_enc = 51, /* enc */
- YYSYMBOL_body = 52, /* body */
- YYSYMBOL_bline = 53 /* bline */
+ YYSYMBOL_H12TOK = 20, /* H12TOK */
+ YYSYMBOL_HUTOK = 21, /* HUTOK */
+ YYSYMBOL_RETTOK = 22, /* RETTOK */
+ YYSYMBOL_QTOK = 23, /* QTOK */
+ YYSYMBOL_RESTOK = 24, /* RESTOK */
+ YYSYMBOL_PTOK = 25, /* PTOK */
+ YYSYMBOL_FTOK = 26, /* FTOK */
+ YYSYMBOL_TTOK = 27, /* TTOK */
+ YYSYMBOL_TPTOK = 28, /* TPTOK */
+ YYSYMBOL_ATOK = 29, /* ATOK */
+ YYSYMBOL_VTOK = 30, /* VTOK */
+ YYSYMBOL_OTOK = 31, /* OTOK */
+ YYSYMBOL_NTOK = 32, /* NTOK */
+ YYSYMBOL_NSTOK = 33, /* NSTOK */
+ YYSYMBOL_RTOK = 34, /* RTOK */
+ YYSYMBOL_R01TOK = 35, /* R01TOK */
+ YYSYMBOL_ITOK = 36, /* ITOK */
+ YYSYMBOL_I1TOK = 37, /* I1TOK */
+ YYSYMBOL_JTOK = 38, /* JTOK */
+ YYSYMBOL_ZTOK = 39, /* ZTOK */
+ YYSYMBOL_NONETOK = 40, /* NONETOK */
+ YYSYMBOL_A0TOK = 41, /* A0TOK */
+ YYSYMBOL_P0TOK = 42, /* P0TOK */
+ YYSYMBOL_WTOK = 43, /* WTOK */
+ YYSYMBOL_XTOK = 44, /* XTOK */
+ YYSYMBOL_CB3TOK = 45, /* CB3TOK */
+ YYSYMBOL_C02TOK = 46, /* C02TOK */
+ YYSYMBOL_YYACCEPT = 47, /* $accept */
+ YYSYMBOL_start = 48, /* start */
+ YYSYMBOL_49_1 = 49, /* $@1 */
+ YYSYMBOL_header = 50, /* header */
+ YYSYMBOL_hline = 51, /* hline */
+ YYSYMBOL_enc = 52, /* enc */
+ YYSYMBOL_body = 53, /* body */
+ YYSYMBOL_bline = 54 /* bline */
};
typedef enum yysymbol_kind_t yysymbol_kind_t;
@@ -511,19 +512,19 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 6
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 149
+#define YYLAST 162
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 46
+#define YYNTOKENS 47
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 8
/* YYNRULES -- Number of rules. */
-#define YYNRULES 76
+#define YYNRULES 77
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 158
+#define YYNSTATES 162
/* YYMAXUTOK -- Last valid token kind. */
-#define YYMAXUTOK 300
+#define YYMAXUTOK 301
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -567,7 +568,7 @@ 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
+ 45, 46
};
#if HYPNO_ARC_DEBUG
@@ -577,11 +578,11 @@ static const yytype_int16 yyrline[] =
0, 78, 78, 78, 79, 82, 83, 84, 87, 91,
95, 99, 100, 101, 102, 103, 108, 118, 127, 133,
138, 139, 143, 147, 150, 154, 157, 158, 176, 198,
- 204, 209, 214, 220, 225, 230, 235, 242, 243, 246,
- 247, 248, 251, 259, 264, 269, 273, 277, 281, 285,
- 289, 293, 297, 301, 305, 309, 313, 317, 321, 325,
- 329, 333, 336, 340, 345, 349, 354, 359, 363, 369,
- 370, 373, 374, 377, 381, 388, 389
+ 204, 209, 214, 220, 225, 230, 235, 240, 247, 248,
+ 251, 252, 253, 256, 264, 269, 274, 278, 282, 286,
+ 290, 294, 298, 302, 306, 310, 314, 318, 322, 326,
+ 330, 334, 338, 341, 345, 350, 354, 359, 364, 368,
+ 374, 375, 378, 379, 382, 386, 393, 394
};
#endif
@@ -599,12 +600,12 @@ static const char *const yytname[] =
{
"\"end of file\"", "error", "\"invalid token\"", "NAME", "FILENAME",
"BNTOK", "SNTOK", "KNTOK", "YXTOK", "FNTOK", "ENCTOK", "ONTOK", "NUM",
- "BYTE", "COMMENT", "CTOK", "DTOK", "HTOK", "HETOK", "HLTOK", "HUTOK",
- "RETTOK", "QTOK", "RESTOK", "PTOK", "FTOK", "TTOK", "TPTOK", "ATOK",
- "VTOK", "OTOK", "NTOK", "NSTOK", "RTOK", "R01TOK", "ITOK", "I1TOK",
- "JTOK", "ZTOK", "NONETOK", "A0TOK", "P0TOK", "WTOK", "XTOK", "CB3TOK",
- "C02TOK", "$accept", "start", "$@1", "header", "hline", "enc", "body",
- "bline", YY_NULLPTR
+ "BYTE", "COMMENT", "CTOK", "DTOK", "HTOK", "HETOK", "HLTOK", "H12TOK",
+ "HUTOK", "RETTOK", "QTOK", "RESTOK", "PTOK", "FTOK", "TTOK", "TPTOK",
+ "ATOK", "VTOK", "OTOK", "NTOK", "NSTOK", "RTOK", "R01TOK", "ITOK",
+ "I1TOK", "JTOK", "ZTOK", "NONETOK", "A0TOK", "P0TOK", "WTOK", "XTOK",
+ "CB3TOK", "C02TOK", "$accept", "start", "$@1", "header", "hline", "enc",
+ "body", "bline", YY_NULLPTR
};
static const char *
@@ -614,7 +615,7 @@ yysymbol_name (yysymbol_kind_t yysymbol)
}
#endif
-#define YYPACT_NINF (-92)
+#define YYPACT_NINF (-95)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
@@ -628,22 +629,23 @@ yysymbol_name (yysymbol_kind_t yysymbol)
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 6, -92, 6, 7, 69, -92, -92, 5, 9, 3,
- 19, 31, 44, 4, 32, 33, 69, 37, 38, 42,
- -1, 14, 43, 11, 47, 15, 40, 52, 59, 61,
- 10, 69, -92, 60, 64, -92, -92, 66, 67, 70,
- 71, 80, 91, 94, 95, -92, 96, 97, -92, 98,
- 99, 100, 101, 102, -92, 103, -92, -92, -92, -92,
- -92, 104, -92, -92, -92, -92, 105, 106, 107, 108,
- 109, 110, 111, 112, -92, -92, -92, -92, 77, -92,
- -92, -92, -5, -92, -92, -92, -92, -92, -92, -92,
- -92, -92, 114, 123, 116, 1, 117, 118, 119, -5,
- 128, 121, 122, -92, 124, 125, 36, 126, -92, 127,
- 129, 130, 73, -5, 131, 60, 132, -92, -92, -92,
- -92, -92, -92, -92, -92, 133, 134, 135, -92, -92,
- -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
- -92, -92, -92, -92, -92, 136, 137, -92, -92, -92,
- -92, -92, -92, -92, -92, -92, -92, -92
+ -2, -95, -2, 8, 71, -95, -95, 9, 10, 3,
+ 6, 7, 45, 11, 19, 22, 31, 71, 33, 34,
+ 35, -1, 46, 39, 4, 43, 52, 53, 55, 57,
+ 61, 28, 71, -95, 62, 66, -95, -95, 68, 69,
+ 72, 73, 83, 94, 97, 98, 99, -95, 100, 101,
+ -95, 102, 103, 104, 105, 106, -95, 107, -95, -95,
+ -95, -95, -95, 27, -95, -95, -95, -95, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, -95, -95, -95,
+ -95, 79, -95, -95, -95, -5, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, 117, 126, 119, 1,
+ 120, 121, 122, -5, 131, 124, 125, -95, 127, 128,
+ 37, 129, -95, 130, 132, 133, 118, -5, 134, 62,
+ 135, -95, -95, -95, -95, -95, -95, -95, -95, 136,
+ 137, 138, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95, -95, -95, -95, -95, -95, -95, -95, 139,
+ 140, -95, -95, -95, -95, -95, -95, -95, -95, -95,
+ -95, -95
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -652,33 +654,34 @@ static const yytype_int16 yypact[] =
static const yytype_int8 yydefact[] =
{
0, 2, 0, 0, 7, 4, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 7, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 7, 27, 38, 17, 8, 10, 0, 0, 0,
- 0, 0, 0, 0, 0, 6, 0, 0, 9, 0,
- 0, 0, 0, 0, 14, 0, 21, 22, 23, 24,
- 25, 0, 5, 37, 28, 16, 0, 0, 0, 0,
- 0, 0, 0, 0, 26, 11, 19, 20, 0, 12,
- 13, 15, 41, 32, 36, 35, 34, 33, 29, 30,
- 31, 18, 0, 0, 0, 0, 0, 0, 0, 41,
- 0, 0, 0, 75, 0, 0, 0, 0, 76, 0,
- 0, 0, 0, 41, 0, 38, 0, 42, 43, 69,
- 73, 70, 40, 44, 71, 0, 0, 0, 45, 46,
- 59, 48, 49, 51, 57, 56, 50, 60, 47, 55,
- 54, 58, 52, 53, 61, 0, 0, 72, 3, 39,
- 65, 74, 66, 68, 63, 64, 62, 67
+ 0, 0, 7, 27, 39, 17, 8, 10, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 0, 0,
+ 9, 0, 0, 0, 0, 0, 14, 0, 21, 22,
+ 23, 24, 25, 0, 5, 38, 28, 16, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 26, 11, 19,
+ 20, 0, 12, 13, 15, 42, 32, 37, 35, 34,
+ 33, 29, 30, 36, 31, 18, 0, 0, 0, 0,
+ 0, 0, 0, 42, 0, 0, 0, 76, 0, 0,
+ 0, 0, 77, 0, 0, 0, 0, 42, 0, 39,
+ 0, 43, 44, 70, 74, 71, 41, 45, 72, 0,
+ 0, 0, 46, 47, 60, 49, 50, 52, 58, 57,
+ 51, 61, 48, 56, 55, 59, 53, 54, 62, 0,
+ 0, 73, 3, 40, 66, 75, 67, 69, 64, 65,
+ 63, 68
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -92, 138, -92, -10, -92, 20, -91, -92
+ -95, 141, -95, -10, -95, 36, -94, -95
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int8 yydefgoto[] =
{
- 0, 3, 4, 30, 31, 64, 112, 113
+ 0, 3, 4, 31, 32, 66, 116, 117
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -686,75 +689,80 @@ static const yytype_int8 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_uint8 yytable[] =
{
- 92, 93, 94, 49, 95, 117, 45, 6, 122, 32,
- 96, 97, 98, 33, 1, 34, 99, 42, 51, 56,
- 100, 62, 149, 53, 101, 102, 103, 2, 104, 105,
- 106, 35, 107, 108, 54, 109, 110, 111, 50, 128,
- 118, 129, 130, 36, 57, 43, 44, 37, 61, 46,
- 47, 131, 132, 133, 48, 52, 58, 38, 134, 55,
- 135, 136, 137, 59, 138, 60, 139, 140, 39, 141,
- 63, 142, 40, 143, 7, 8, 65, 41, 66, 67,
- 9, 91, 68, 69, 10, 11, 12, 13, 14, 15,
- 16, 17, 70, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 71, 28, 29, 72, 73, 74, 75,
- 76, 77, 78, 79, 80, 81, 148, 83, 84, 85,
- 86, 87, 88, 89, 90, 82, 114, 115, 116, 119,
- 120, 121, 123, 124, 125, 151, 126, 127, 144, 145,
- 5, 146, 147, 150, 152, 153, 154, 155, 156, 157
+ 96, 97, 98, 51, 99, 121, 1, 47, 6, 126,
+ 100, 101, 102, 33, 34, 35, 55, 103, 36, 37,
+ 2, 104, 64, 153, 43, 105, 106, 107, 56, 108,
+ 109, 110, 44, 111, 112, 45, 113, 114, 115, 52,
+ 132, 122, 133, 134, 46, 48, 49, 50, 38, 85,
+ 53, 54, 135, 136, 137, 57, 58, 59, 39, 60,
+ 138, 61, 139, 140, 141, 62, 142, 63, 143, 144,
+ 40, 145, 65, 146, 41, 147, 7, 8, 67, 42,
+ 68, 69, 9, 95, 70, 71, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 72, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 73, 29, 30, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 118,
+ 119, 120, 123, 124, 125, 127, 128, 129, 0, 130,
+ 131, 148, 149, 5, 150, 151, 154, 156, 157, 158,
+ 159, 160, 161, 0, 0, 155, 0, 0, 0, 0,
+ 0, 0, 152
};
static const yytype_int8 yycheck[] =
{
- 5, 6, 7, 4, 9, 4, 16, 0, 99, 4,
- 15, 16, 17, 4, 8, 12, 21, 13, 4, 4,
- 25, 31, 113, 12, 29, 30, 31, 21, 33, 34,
- 35, 12, 37, 38, 23, 40, 41, 42, 39, 3,
- 39, 5, 6, 12, 4, 13, 13, 3, 38, 12,
- 12, 15, 16, 17, 12, 12, 4, 13, 22, 12,
- 24, 25, 26, 4, 28, 4, 30, 31, 24, 33,
- 10, 35, 28, 37, 5, 6, 12, 33, 12, 12,
- 11, 4, 12, 12, 15, 16, 17, 18, 19, 20,
- 21, 22, 12, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 12, 35, 36, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 43, 12, 12, 12,
- 12, 12, 12, 12, 12, 21, 12, 4, 12, 12,
- 12, 12, 4, 12, 12, 115, 12, 12, 12, 12,
- 2, 12, 12, 12, 12, 12, 12, 12, 12, 12
+ 5, 6, 7, 4, 9, 4, 8, 17, 0, 103,
+ 15, 16, 17, 4, 4, 12, 12, 22, 12, 12,
+ 22, 26, 32, 117, 13, 30, 31, 32, 24, 34,
+ 35, 36, 13, 38, 39, 13, 41, 42, 43, 40,
+ 3, 40, 5, 6, 13, 12, 12, 12, 3, 22,
+ 4, 12, 15, 16, 17, 12, 4, 4, 13, 4,
+ 23, 4, 25, 26, 27, 4, 29, 39, 31, 32,
+ 25, 34, 10, 36, 29, 38, 5, 6, 12, 34,
+ 12, 12, 11, 4, 12, 12, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 12, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 12, 36, 37, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 4, 12, 12, 12, 12, 4, 12, 12, -1, 12,
+ 12, 12, 12, 2, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, -1, -1, 119, -1, -1, -1, -1,
+ -1, -1, 44
};
/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
state STATE-NUM. */
static const yytype_int8 yystos[] =
{
- 0, 8, 21, 47, 48, 47, 0, 5, 6, 11,
- 15, 16, 17, 18, 19, 20, 21, 22, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 35, 36,
- 49, 50, 4, 4, 12, 12, 12, 3, 13, 24,
- 28, 33, 13, 13, 13, 49, 12, 12, 12, 4,
- 39, 4, 12, 12, 23, 12, 4, 4, 4, 4,
- 4, 38, 49, 10, 51, 12, 12, 12, 12, 12,
+ 0, 8, 22, 48, 49, 48, 0, 5, 6, 11,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 36,
+ 37, 50, 51, 4, 4, 12, 12, 12, 3, 13,
+ 25, 29, 34, 13, 13, 13, 13, 50, 12, 12,
+ 12, 4, 40, 4, 12, 12, 24, 12, 4, 4,
+ 4, 4, 4, 39, 50, 10, 52, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 21, 12, 12, 12, 12, 12, 12, 12,
- 12, 4, 5, 6, 7, 9, 15, 16, 17, 21,
- 25, 29, 30, 31, 33, 34, 35, 37, 38, 40,
- 41, 42, 52, 53, 12, 4, 12, 4, 39, 12,
- 12, 12, 52, 4, 12, 12, 12, 12, 3, 5,
- 6, 15, 16, 17, 22, 24, 25, 26, 28, 30,
- 31, 33, 35, 37, 12, 12, 12, 12, 43, 52,
- 12, 51, 12, 12, 12, 12, 12, 12
+ 12, 12, 12, 12, 12, 22, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 4, 5, 6, 7, 9,
+ 15, 16, 17, 22, 26, 30, 31, 32, 34, 35,
+ 36, 38, 39, 41, 42, 43, 53, 54, 12, 4,
+ 12, 4, 40, 12, 12, 12, 53, 4, 12, 12,
+ 12, 12, 3, 5, 6, 15, 16, 17, 23, 25,
+ 26, 27, 29, 31, 32, 34, 36, 38, 12, 12,
+ 12, 12, 44, 53, 12, 52, 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, 46, 48, 47, 47, 49, 49, 49, 50, 50,
- 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
- 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
- 50, 50, 50, 50, 50, 50, 50, 51, 51, 52,
- 52, 52, 53, 53, 53, 53, 53, 53, 53, 53,
- 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
- 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
- 53, 53, 53, 53, 53, 53, 53
+ 0, 47, 49, 48, 48, 50, 50, 50, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 52, 52,
+ 53, 53, 53, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54
};
/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
@@ -763,11 +771,11 @@ static const yytype_int8 yyr2[] =
0, 2, 0, 7, 2, 2, 2, 0, 2, 2,
2, 3, 3, 3, 2, 3, 3, 2, 4, 3,
3, 2, 2, 2, 2, 2, 3, 2, 3, 4,
- 4, 4, 4, 4, 4, 4, 4, 1, 0, 2,
- 2, 0, 2, 2, 2, 2, 2, 2, 2, 2,
+ 4, 4, 4, 4, 4, 4, 4, 4, 1, 0,
+ 2, 2, 0, 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, 1, 1
+ 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
+ 2, 2, 2, 2, 2, 3, 1, 1
};
@@ -1233,7 +1241,7 @@ yyreduce:
case 2: /* $@1: %empty */
#line 78 "engines/hypno/grammar_arc.y"
{ g_parsedArc->mode = (yyvsp[0].s); }
-#line 1237 "engines/hypno/grammar_arc.cpp"
+#line 1245 "engines/hypno/grammar_arc.cpp"
break;
case 8: /* hline: CTOK NUM */
@@ -1242,7 +1250,7 @@ yyreduce:
g_parsedArc->id = (yyvsp[0].i);
HYPNO_ARC_default_sound_rate = 0;
debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i)); }
-#line 1246 "engines/hypno/grammar_arc.cpp"
+#line 1254 "engines/hypno/grammar_arc.cpp"
break;
case 9: /* hline: FTOK NUM */
@@ -1251,7 +1259,7 @@ yyreduce:
HYPNO_ARC_default_sound_rate = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "F %d", (yyvsp[0].i));
}
-#line 1255 "engines/hypno/grammar_arc.cpp"
+#line 1263 "engines/hypno/grammar_arc.cpp"
break;
case 10: /* hline: DTOK NUM */
@@ -1260,31 +1268,31 @@ yyreduce:
g_parsedArc->frameDelay = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
}
-#line 1264 "engines/hypno/grammar_arc.cpp"
+#line 1272 "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 1270 "engines/hypno/grammar_arc.cpp"
+#line 1278 "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 1276 "engines/hypno/grammar_arc.cpp"
+#line 1284 "engines/hypno/grammar_arc.cpp"
break;
case 13: /* hline: VTOK NUM NUM */
#line 101 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1282 "engines/hypno/grammar_arc.cpp"
+#line 1290 "engines/hypno/grammar_arc.cpp"
break;
case 14: /* hline: VTOK RESTOK */
#line 102 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V 320,200"); }
-#line 1288 "engines/hypno/grammar_arc.cpp"
+#line 1296 "engines/hypno/grammar_arc.cpp"
break;
case 15: /* hline: OTOK NUM NUM */
@@ -1294,7 +1302,7 @@ yyreduce:
g_parsedArc->objMissesAllowed[0] = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "O %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1298 "engines/hypno/grammar_arc.cpp"
+#line 1306 "engines/hypno/grammar_arc.cpp"
break;
case 16: /* hline: ONTOK NUM NUM */
@@ -1309,7 +1317,7 @@ yyreduce:
} else
error("Invalid objective: '%s'", (yyvsp[-2].s));
debugC(1, kHypnoDebugParser, "ON %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1313 "engines/hypno/grammar_arc.cpp"
+#line 1321 "engines/hypno/grammar_arc.cpp"
break;
case 17: /* hline: ONTOK NUM */
@@ -1323,7 +1331,7 @@ yyreduce:
error("Invalid objective: '%s'", (yyvsp[-1].s));
debugC(1, kHypnoDebugParser, "ON %d", (yyvsp[0].i));
}
-#line 1327 "engines/hypno/grammar_arc.cpp"
+#line 1335 "engines/hypno/grammar_arc.cpp"
break;
case 18: /* hline: TPTOK FILENAME NUM FILENAME */
@@ -1334,7 +1342,7 @@ yyreduce:
g_parsedArc->transitionPalette = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "Tp %s %d %s", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].s));
}
-#line 1338 "engines/hypno/grammar_arc.cpp"
+#line 1346 "engines/hypno/grammar_arc.cpp"
break;
case 19: /* hline: TTOK FILENAME NUM */
@@ -1344,13 +1352,13 @@ yyreduce:
g_parsedArc->transitionTime = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "T %s %d", (yyvsp[-1].s), (yyvsp[0].i));
}
-#line 1348 "engines/hypno/grammar_arc.cpp"
+#line 1356 "engines/hypno/grammar_arc.cpp"
break;
case 20: /* hline: TTOK NONETOK NUM */
#line 138 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "T NONE %d", (yyvsp[0].i)); }
-#line 1354 "engines/hypno/grammar_arc.cpp"
+#line 1362 "engines/hypno/grammar_arc.cpp"
break;
case 21: /* hline: NTOK FILENAME */
@@ -1359,7 +1367,7 @@ yyreduce:
g_parsedArc->backgroundVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "N %s", (yyvsp[0].s));
}
-#line 1363 "engines/hypno/grammar_arc.cpp"
+#line 1371 "engines/hypno/grammar_arc.cpp"
break;
case 22: /* hline: NSTOK FILENAME */
@@ -1368,7 +1376,7 @@ yyreduce:
g_parsedArc->backgroundVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "N* %s", (yyvsp[0].s));
}
-#line 1372 "engines/hypno/grammar_arc.cpp"
+#line 1380 "engines/hypno/grammar_arc.cpp"
break;
case 23: /* hline: RTOK FILENAME */
@@ -1376,7 +1384,7 @@ yyreduce:
{
g_parsedArc->backgroundPalette = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "R %s", (yyvsp[0].s)); }
-#line 1380 "engines/hypno/grammar_arc.cpp"
+#line 1388 "engines/hypno/grammar_arc.cpp"
break;
case 24: /* hline: ITOK FILENAME */
@@ -1385,7 +1393,7 @@ yyreduce:
g_parsedArc->player = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1389 "engines/hypno/grammar_arc.cpp"
+#line 1397 "engines/hypno/grammar_arc.cpp"
break;
case 25: /* hline: I1TOK FILENAME */
@@ -1393,13 +1401,13 @@ yyreduce:
{
debugC(1, kHypnoDebugParser, "I1 %s", (yyvsp[0].s));
}
-#line 1397 "engines/hypno/grammar_arc.cpp"
+#line 1405 "engines/hypno/grammar_arc.cpp"
break;
case 26: /* hline: QTOK NUM NUM */
#line 157 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "Q %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1403 "engines/hypno/grammar_arc.cpp"
+#line 1411 "engines/hypno/grammar_arc.cpp"
break;
case 27: /* hline: BNTOK FILENAME */
@@ -1422,7 +1430,7 @@ yyreduce:
debugC(1, kHypnoDebugParser, "BN %s", (yyvsp[0].s));
}
-#line 1426 "engines/hypno/grammar_arc.cpp"
+#line 1434 "engines/hypno/grammar_arc.cpp"
break;
case 28: /* hline: SNTOK FILENAME enc */
@@ -1449,7 +1457,7 @@ yyreduce:
}
debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s));
}
-#line 1453 "engines/hypno/grammar_arc.cpp"
+#line 1461 "engines/hypno/grammar_arc.cpp"
break;
case 29: /* hline: HETOK BYTE NUM NUM */
@@ -1460,7 +1468,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 1464 "engines/hypno/grammar_arc.cpp"
+#line 1472 "engines/hypno/grammar_arc.cpp"
break;
case 30: /* hline: HLTOK BYTE NUM NUM */
@@ -1470,7 +1478,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 1474 "engines/hypno/grammar_arc.cpp"
+#line 1482 "engines/hypno/grammar_arc.cpp"
break;
case 31: /* hline: HUTOK BYTE NUM NUM */
@@ -1480,7 +1488,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 1484 "engines/hypno/grammar_arc.cpp"
+#line 1492 "engines/hypno/grammar_arc.cpp"
break;
case 32: /* hline: HTOK NAME NUM NUM */
@@ -1491,7 +1499,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 1495 "engines/hypno/grammar_arc.cpp"
+#line 1503 "engines/hypno/grammar_arc.cpp"
break;
case 33: /* hline: HTOK RTOK NUM NUM */
@@ -1501,7 +1509,7 @@ yyreduce:
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H R %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1505 "engines/hypno/grammar_arc.cpp"
+#line 1513 "engines/hypno/grammar_arc.cpp"
break;
case 34: /* hline: HTOK ATOK NUM NUM */
@@ -1511,7 +1519,7 @@ yyreduce:
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H A %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1515 "engines/hypno/grammar_arc.cpp"
+#line 1523 "engines/hypno/grammar_arc.cpp"
break;
case 35: /* hline: HTOK PTOK NUM NUM */
@@ -1521,33 +1529,43 @@ yyreduce:
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H P %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1525 "engines/hypno/grammar_arc.cpp"
+#line 1533 "engines/hypno/grammar_arc.cpp"
break;
- case 36: /* hline: HTOK BYTE NUM NUM */
+ case 36: /* hline: H12TOK BYTE NUM NUM */
#line 235 "engines/hypno/grammar_arc.y"
+ {
+ Segment segment('P', (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 1543 "engines/hypno/grammar_arc.cpp"
+ break;
+
+ case 37: /* hline: HTOK BYTE NUM NUM */
+#line 240 "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 1535 "engines/hypno/grammar_arc.cpp"
+#line 1553 "engines/hypno/grammar_arc.cpp"
break;
- case 37: /* enc: ENCTOK */
-#line 242 "engines/hypno/grammar_arc.y"
+ case 38: /* enc: ENCTOK */
+#line 247 "engines/hypno/grammar_arc.y"
{ (yyval.s) = (yyvsp[0].s); }
-#line 1541 "engines/hypno/grammar_arc.cpp"
+#line 1559 "engines/hypno/grammar_arc.cpp"
break;
- case 38: /* enc: %empty */
-#line 243 "engines/hypno/grammar_arc.y"
+ case 39: /* enc: %empty */
+#line 248 "engines/hypno/grammar_arc.y"
{ (yyval.s) = scumm_strdup(""); }
-#line 1547 "engines/hypno/grammar_arc.cpp"
+#line 1565 "engines/hypno/grammar_arc.cpp"
break;
- case 42: /* bline: FNTOK FILENAME */
-#line 251 "engines/hypno/grammar_arc.y"
+ case 43: /* bline: FNTOK FILENAME */
+#line 256 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
if (Common::String("F0") == (yyvsp[-1].s))
@@ -1556,288 +1574,288 @@ yyreduce:
shoot->explosionAnimation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1560 "engines/hypno/grammar_arc.cpp"
+#line 1578 "engines/hypno/grammar_arc.cpp"
break;
- case 43: /* bline: FNTOK NONETOK */
-#line 259 "engines/hypno/grammar_arc.y"
+ case 44: /* bline: FNTOK NONETOK */
+#line 264 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = "NONE";
debugC(1, kHypnoDebugParser, "FN NONE");
}
-#line 1570 "engines/hypno/grammar_arc.cpp"
+#line 1588 "engines/hypno/grammar_arc.cpp"
break;
- case 44: /* bline: FTOK FILENAME */
-#line 264 "engines/hypno/grammar_arc.y"
+ case 45: /* bline: FTOK FILENAME */
+#line 269 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1580 "engines/hypno/grammar_arc.cpp"
+#line 1598 "engines/hypno/grammar_arc.cpp"
break;
- case 45: /* bline: ITOK NAME */
-#line 269 "engines/hypno/grammar_arc.y"
+ case 46: /* bline: ITOK NAME */
+#line 274 "engines/hypno/grammar_arc.y"
{
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1589 "engines/hypno/grammar_arc.cpp"
+#line 1607 "engines/hypno/grammar_arc.cpp"
break;
- case 46: /* bline: ITOK BNTOK */
-#line 273 "engines/hypno/grammar_arc.y"
+ case 47: /* bline: ITOK BNTOK */
+#line 278 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == B1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1598 "engines/hypno/grammar_arc.cpp"
+#line 1616 "engines/hypno/grammar_arc.cpp"
break;
- case 47: /* bline: ITOK ATOK */
-#line 277 "engines/hypno/grammar_arc.y"
+ case 48: /* bline: ITOK ATOK */
+#line 282 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == A
shoot->name = "A";
debugC(1, kHypnoDebugParser, "I A");
}
-#line 1607 "engines/hypno/grammar_arc.cpp"
+#line 1625 "engines/hypno/grammar_arc.cpp"
break;
- case 48: /* bline: ITOK CTOK */
-#line 281 "engines/hypno/grammar_arc.y"
+ case 49: /* bline: ITOK CTOK */
+#line 286 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == C
shoot->name = "C";
debugC(1, kHypnoDebugParser, "I C");
}
-#line 1616 "engines/hypno/grammar_arc.cpp"
+#line 1634 "engines/hypno/grammar_arc.cpp"
break;
- case 49: /* bline: ITOK DTOK */
-#line 285 "engines/hypno/grammar_arc.y"
+ case 50: /* bline: ITOK DTOK */
+#line 290 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == D
shoot->name = "D";
debugC(1, kHypnoDebugParser, "I D");
}
-#line 1625 "engines/hypno/grammar_arc.cpp"
+#line 1643 "engines/hypno/grammar_arc.cpp"
break;
- case 50: /* bline: ITOK FTOK */
-#line 289 "engines/hypno/grammar_arc.y"
+ case 51: /* bline: ITOK FTOK */
+#line 294 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == F
shoot->name = "F";
debugC(1, kHypnoDebugParser, "I F");
}
-#line 1634 "engines/hypno/grammar_arc.cpp"
+#line 1652 "engines/hypno/grammar_arc.cpp"
break;
- case 51: /* bline: ITOK HTOK */
-#line 293 "engines/hypno/grammar_arc.y"
+ case 52: /* bline: ITOK HTOK */
+#line 298 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == H
shoot->name = "H";
debugC(1, kHypnoDebugParser, "I H");
}
-#line 1643 "engines/hypno/grammar_arc.cpp"
+#line 1661 "engines/hypno/grammar_arc.cpp"
break;
- case 52: /* bline: ITOK ITOK */
-#line 297 "engines/hypno/grammar_arc.y"
+ case 53: /* bline: ITOK ITOK */
+#line 302 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == I
shoot->name = "I";
debugC(1, kHypnoDebugParser, "I I");
}
-#line 1652 "engines/hypno/grammar_arc.cpp"
+#line 1670 "engines/hypno/grammar_arc.cpp"
break;
- case 53: /* bline: ITOK JTOK */
-#line 301 "engines/hypno/grammar_arc.y"
+ case 54: /* bline: ITOK JTOK */
+#line 306 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == I
shoot->name = "J";
debugC(1, kHypnoDebugParser, "I J");
}
-#line 1661 "engines/hypno/grammar_arc.cpp"
+#line 1679 "engines/hypno/grammar_arc.cpp"
break;
- case 54: /* bline: ITOK NTOK */
-#line 305 "engines/hypno/grammar_arc.y"
+ case 55: /* bline: ITOK NTOK */
+#line 310 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == N
shoot->name = "N";
debugC(1, kHypnoDebugParser, "I N");
}
-#line 1670 "engines/hypno/grammar_arc.cpp"
+#line 1688 "engines/hypno/grammar_arc.cpp"
break;
- case 55: /* bline: ITOK OTOK */
-#line 309 "engines/hypno/grammar_arc.y"
+ case 56: /* bline: ITOK OTOK */
+#line 314 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == O
shoot->name = "O";
debugC(1, kHypnoDebugParser, "I O");
}
-#line 1679 "engines/hypno/grammar_arc.cpp"
+#line 1697 "engines/hypno/grammar_arc.cpp"
break;
- case 56: /* bline: ITOK PTOK */
-#line 313 "engines/hypno/grammar_arc.y"
+ case 57: /* bline: ITOK PTOK */
+#line 318 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == P
shoot->name = "P";
debugC(1, kHypnoDebugParser, "I P");
}
-#line 1688 "engines/hypno/grammar_arc.cpp"
+#line 1706 "engines/hypno/grammar_arc.cpp"
break;
- case 57: /* bline: ITOK QTOK */
-#line 317 "engines/hypno/grammar_arc.y"
+ case 58: /* bline: ITOK QTOK */
+#line 322 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == Q
shoot->name = "Q";
debugC(1, kHypnoDebugParser, "I Q");
}
-#line 1697 "engines/hypno/grammar_arc.cpp"
+#line 1715 "engines/hypno/grammar_arc.cpp"
break;
- case 58: /* bline: ITOK RTOK */
-#line 321 "engines/hypno/grammar_arc.y"
+ case 59: /* bline: ITOK RTOK */
+#line 326 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == R
shoot->name = "R";
debugC(1, kHypnoDebugParser, "I R");
}
-#line 1706 "engines/hypno/grammar_arc.cpp"
+#line 1724 "engines/hypno/grammar_arc.cpp"
break;
- case 59: /* bline: ITOK SNTOK */
-#line 325 "engines/hypno/grammar_arc.y"
+ case 60: /* bline: ITOK SNTOK */
+#line 330 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == S1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1715 "engines/hypno/grammar_arc.cpp"
+#line 1733 "engines/hypno/grammar_arc.cpp"
break;
- case 60: /* bline: ITOK TTOK */
-#line 329 "engines/hypno/grammar_arc.y"
+ case 61: /* bline: ITOK TTOK */
+#line 334 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == T
shoot->name = "T";
debugC(1, kHypnoDebugParser, "I T");
}
-#line 1724 "engines/hypno/grammar_arc.cpp"
+#line 1742 "engines/hypno/grammar_arc.cpp"
break;
- case 61: /* bline: JTOK NUM */
-#line 333 "engines/hypno/grammar_arc.y"
+ case 62: /* bline: JTOK NUM */
+#line 338 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "J %d", (yyvsp[0].i));
}
-#line 1732 "engines/hypno/grammar_arc.cpp"
+#line 1750 "engines/hypno/grammar_arc.cpp"
break;
- case 62: /* bline: A0TOK NUM NUM */
-#line 336 "engines/hypno/grammar_arc.y"
+ case 63: /* bline: A0TOK NUM NUM */
+#line 341 "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 1741 "engines/hypno/grammar_arc.cpp"
+#line 1759 "engines/hypno/grammar_arc.cpp"
break;
- case 63: /* bline: RTOK NUM NUM */
-#line 340 "engines/hypno/grammar_arc.y"
+ case 64: /* bline: RTOK NUM NUM */
+#line 345 "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 1751 "engines/hypno/grammar_arc.cpp"
+#line 1769 "engines/hypno/grammar_arc.cpp"
break;
- case 64: /* bline: R01TOK NUM NUM */
-#line 345 "engines/hypno/grammar_arc.y"
+ case 65: /* bline: R01TOK NUM NUM */
+#line 350 "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 1760 "engines/hypno/grammar_arc.cpp"
+#line 1778 "engines/hypno/grammar_arc.cpp"
break;
- case 65: /* bline: BNTOK NUM NUM */
-#line 349 "engines/hypno/grammar_arc.y"
+ case 66: /* bline: BNTOK NUM NUM */
+#line 354 "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 1770 "engines/hypno/grammar_arc.cpp"
+#line 1788 "engines/hypno/grammar_arc.cpp"
break;
- case 66: /* bline: KNTOK NUM NUM */
-#line 354 "engines/hypno/grammar_arc.y"
+ case 67: /* bline: KNTOK NUM NUM */
+#line 359 "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 1780 "engines/hypno/grammar_arc.cpp"
+#line 1798 "engines/hypno/grammar_arc.cpp"
break;
- case 67: /* bline: P0TOK NUM NUM */
-#line 359 "engines/hypno/grammar_arc.y"
+ case 68: /* bline: P0TOK NUM NUM */
+#line 364 "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 1789 "engines/hypno/grammar_arc.cpp"
+#line 1807 "engines/hypno/grammar_arc.cpp"
break;
- case 68: /* bline: OTOK NUM NUM */
-#line 363 "engines/hypno/grammar_arc.y"
+ case 69: /* bline: OTOK NUM NUM */
+#line 368 "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 1800 "engines/hypno/grammar_arc.cpp"
+#line 1818 "engines/hypno/grammar_arc.cpp"
break;
- case 69: /* bline: CTOK NUM */
-#line 369 "engines/hypno/grammar_arc.y"
+ case 70: /* bline: CTOK NUM */
+#line 374 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i)); }
-#line 1806 "engines/hypno/grammar_arc.cpp"
+#line 1824 "engines/hypno/grammar_arc.cpp"
break;
- case 70: /* bline: HTOK NUM */
-#line 370 "engines/hypno/grammar_arc.y"
+ case 71: /* bline: HTOK NUM */
+#line 375 "engines/hypno/grammar_arc.y"
{
shoot->attackFrames.push_back((yyvsp[0].i));
debugC(1, kHypnoDebugParser, "H %d", (yyvsp[0].i)); }
-#line 1814 "engines/hypno/grammar_arc.cpp"
+#line 1832 "engines/hypno/grammar_arc.cpp"
break;
- case 71: /* bline: VTOK NUM */
-#line 373 "engines/hypno/grammar_arc.y"
+ case 72: /* bline: VTOK NUM */
+#line 378 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V %d", (yyvsp[0].i)); }
-#line 1820 "engines/hypno/grammar_arc.cpp"
+#line 1838 "engines/hypno/grammar_arc.cpp"
break;
- case 72: /* bline: WTOK NUM */
-#line 374 "engines/hypno/grammar_arc.y"
+ case 73: /* bline: WTOK NUM */
+#line 379 "engines/hypno/grammar_arc.y"
{
shoot->attackWeight = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "W %d", (yyvsp[0].i)); }
-#line 1828 "engines/hypno/grammar_arc.cpp"
+#line 1846 "engines/hypno/grammar_arc.cpp"
break;
- case 73: /* bline: DTOK NUM */
-#line 377 "engines/hypno/grammar_arc.y"
+ case 74: /* bline: DTOK NUM */
+#line 382 "engines/hypno/grammar_arc.y"
{
shoot->pointsToShoot = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
}
-#line 1837 "engines/hypno/grammar_arc.cpp"
+#line 1855 "engines/hypno/grammar_arc.cpp"
break;
- case 74: /* bline: SNTOK FILENAME enc */
-#line 381 "engines/hypno/grammar_arc.y"
+ case 75: /* bline: SNTOK FILENAME enc */
+#line 386 "engines/hypno/grammar_arc.y"
{
if (Common::String("S1") == (yyvsp[-2].s))
shoot->deathSound = (yyvsp[-1].s);
@@ -1845,28 +1863,28 @@ yyreduce:
shoot->hitSound = (yyvsp[-1].s);
debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s)); }
-#line 1849 "engines/hypno/grammar_arc.cpp"
+#line 1867 "engines/hypno/grammar_arc.cpp"
break;
- case 75: /* bline: NTOK */
-#line 388 "engines/hypno/grammar_arc.y"
+ case 76: /* bline: NTOK */
+#line 393 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "N"); }
-#line 1855 "engines/hypno/grammar_arc.cpp"
+#line 1873 "engines/hypno/grammar_arc.cpp"
break;
- case 76: /* bline: ZTOK */
-#line 389 "engines/hypno/grammar_arc.y"
+ case 77: /* bline: ZTOK */
+#line 394 "engines/hypno/grammar_arc.y"
{
g_parsedArc->shoots.push_back(*shoot);
//delete shoot;
//shoot = nullptr;
debugC(1, kHypnoDebugParser, "Z");
}
-#line 1866 "engines/hypno/grammar_arc.cpp"
+#line 1884 "engines/hypno/grammar_arc.cpp"
break;
-#line 1870 "engines/hypno/grammar_arc.cpp"
+#line 1888 "engines/hypno/grammar_arc.cpp"
default: break;
}
diff --git a/engines/hypno/grammar_arc.y b/engines/hypno/grammar_arc.y
index 866a2a4b4e7..523254598e9 100644
--- a/engines/hypno/grammar_arc.y
+++ b/engines/hypno/grammar_arc.y
@@ -59,7 +59,7 @@ using namespace Hypno;
%token<s> NAME FILENAME BNTOK SNTOK KNTOK YXTOK FNTOK ENCTOK ONTOK
%token<i> NUM BYTE
// header
-%token COMMENT CTOK DTOK HTOK HETOK HLTOK HUTOK RETTOK QTOK RESTOK
+%token COMMENT CTOK DTOK HTOK HETOK HLTOK H12TOK HUTOK RETTOK QTOK RESTOK
%token PTOK FTOK TTOK TPTOK ATOK VTOK OTOK NTOK NSTOK RTOK R01TOK ITOK I1TOK JTOK ZTOK
// body
@@ -232,6 +232,11 @@ hline: CTOK NUM {
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H P %d %d", $3, $4);
}
+ | H12TOK BYTE NUM NUM {
+ Segment segment('P', $4, $3);
+ g_parsedArc->segments.push_back(segment);
+ debugC(1, kHypnoDebugParser, "HN %x %d %d", $2, $3, $4);
+ }
| HTOK BYTE NUM NUM {
Segment segment($2, $4, $3);
g_parsedArc->segments.push_back(segment);
diff --git a/engines/hypno/lexer_arc.cpp b/engines/hypno/lexer_arc.cpp
index e7d9807c0aa..c0282dba904 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 45
-#define YY_END_OF_BUFFER 46
+#define YY_NUM_RULES 46
+#define YY_END_OF_BUFFER 47
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -642,16 +642,16 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[77] =
+static const flex_int16_t yy_accept[78] =
{ 0,
- 0, 0, 46, 44, 43, 41, 41, 44, 36, 36,
- 36, 36, 44, 9, 37, 2, 3, 37, 27, 7,
- 17, 19, 37, 13, 11, 8, 20, 15, 37, 24,
- 10, 22, 23, 37, 21, 37, 43, 36, 39, 36,
- 36, 36, 36, 0, 38, 29, 37, 30, 26, 4,
- 5, 6, 18, 31, 14, 37, 12, 32, 16, 28,
- 25, 33, 37, 35, 35, 34, 34, 36, 42, 37,
- 0, 1, 0, 0, 40, 0
+ 0, 0, 47, 45, 44, 42, 42, 45, 37, 37,
+ 37, 37, 45, 10, 38, 2, 3, 38, 28, 8,
+ 18, 20, 38, 14, 12, 9, 21, 16, 38, 25,
+ 11, 23, 24, 38, 22, 38, 44, 37, 40, 37,
+ 37, 37, 37, 0, 39, 30, 38, 31, 27, 7,
+ 4, 5, 6, 19, 32, 15, 38, 13, 33, 17,
+ 29, 26, 34, 38, 36, 36, 35, 35, 37, 43,
+ 38, 0, 1, 0, 0, 41, 0
} ;
static const YY_CHAR yy_ec[256] =
@@ -695,33 +695,33 @@ static const YY_CHAR yy_meta[45] =
4, 4, 4, 1
} ;
-static const flex_int16_t yy_base[83] =
+static const flex_int16_t yy_base[84] =
{ 0,
- 0, 0, 203, 204, 200, 204, 204, 36, 41, 46,
- 51, 56, 0, 62, 64, 185, 180, 178, 77, 83,
- 84, 177, 87, 96, 97, 102, 176, 104, 110, 85,
- 175, 174, 173, 95, 172, 0, 176, 120, 0, 130,
- 135, 83, 125, 172, 0, 167, 166, 165, 164, 163,
- 158, 157, 156, 155, 204, 141, 154, 153, 151, 150,
- 149, 148, 0, 0, 204, 0, 204, 145, 151, 107,
- 143, 145, 143, 107, 204, 204, 187, 191, 193, 195,
- 74, 197
+ 0, 0, 206, 207, 203, 207, 207, 36, 41, 46,
+ 51, 56, 0, 62, 64, 196, 195, 186, 77, 83,
+ 87, 181, 95, 91, 102, 92, 179, 105, 112, 84,
+ 177, 175, 174, 90, 173, 0, 178, 125, 0, 130,
+ 135, 124, 142, 174, 0, 168, 167, 166, 165, 164,
+ 162, 157, 156, 155, 154, 207, 142, 153, 151, 150,
+ 149, 148, 147, 0, 0, 207, 0, 207, 146, 150,
+ 110, 142, 120, 117, 107, 207, 207, 188, 192, 194,
+ 196, 74, 198
} ;
-static const flex_int16_t yy_def[83] =
+static const flex_int16_t yy_def[84] =
{ 0,
- 76, 1, 76, 76, 76, 76, 76, 76, 77, 77,
- 77, 77, 78, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 80, 79, 81, 76, 76, 77, 77,
- 77, 41, 41, 78, 82, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 76, 79, 79, 79, 79, 79,
- 79, 79, 81, 77, 76, 77, 76, 41, 78, 79,
- 76, 79, 76, 76, 76, 0, 76, 76, 76, 76,
- 76, 76
+ 77, 1, 77, 77, 77, 77, 77, 77, 78, 78,
+ 78, 78, 79, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 81, 80, 82, 77, 77, 78, 78,
+ 78, 41, 41, 79, 83, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 77, 80, 80, 80, 80,
+ 80, 80, 80, 82, 78, 77, 78, 77, 41, 79,
+ 80, 77, 80, 77, 77, 77, 0, 77, 77, 77,
+ 77, 77, 77
} ;
-static const flex_int16_t yy_nxt[249] =
+static const flex_int16_t yy_nxt[252] =
{ 0,
4, 5, 6, 7, 4, 4, 8, 4, 9, 10,
11, 12, 9, 13, 14, 15, 16, 17, 18, 19,
@@ -730,29 +730,30 @@ static const flex_int16_t yy_nxt[249] =
18, 18, 18, 7, 38, 38, 38, 38, 38, 40,
40, 40, 40, 40, 40, 41, 40, 40, 40, 40,
40, 42, 40, 40, 40, 40, 43, 40, 40, 45,
- 46, 45, 48, 48, 48, 48, 48, 63, 48, 48,
+ 46, 45, 48, 48, 48, 48, 48, 64, 48, 48,
48, 48, 48, 48, 45, 49, 49, 49, 49, 49,
- 45, 45, 45, 53, 45, 54, 54, 54, 54, 54,
-
- 55, 50, 45, 45, 45, 57, 57, 66, 51, 45,
- 58, 45, 59, 59, 45, 75, 52, 45, 60, 60,
- 60, 60, 60, 56, 66, 72, 67, 61, 38, 38,
- 38, 38, 38, 68, 47, 47, 47, 47, 40, 40,
- 40, 40, 40, 40, 40, 40, 40, 40, 45, 39,
- 71, 74, 45, 73, 69, 45, 45, 45, 45, 64,
- 45, 45, 45, 45, 45, 45, 39, 70, 76, 39,
- 45, 45, 45, 45, 45, 69, 64, 37, 65, 45,
- 45, 45, 45, 45, 45, 45, 39, 45, 76, 39,
- 39, 44, 45, 44, 44, 47, 47, 62, 62, 45,
-
- 45, 37, 76, 3, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 76
+ 45, 45, 50, 50, 45, 56, 54, 45, 45, 45,
+
+ 59, 51, 45, 55, 55, 55, 55, 55, 52, 45,
+ 58, 58, 45, 60, 60, 76, 53, 45, 57, 45,
+ 61, 61, 61, 61, 61, 75, 62, 45, 73, 47,
+ 47, 47, 47, 38, 38, 38, 38, 38, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40, 67, 45,
+ 69, 72, 74, 70, 45, 45, 45, 45, 45, 65,
+ 45, 45, 45, 45, 45, 67, 39, 68, 71, 45,
+ 39, 45, 45, 45, 45, 45, 65, 70, 66, 37,
+ 45, 45, 45, 39, 45, 77, 45, 39, 45, 77,
+ 39, 39, 44, 45, 44, 44, 47, 47, 63, 63,
+
+ 45, 45, 45, 45, 37, 77, 3, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77
} ;
-static const flex_int16_t yy_chk[249] =
+static const flex_int16_t yy_chk[252] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -761,34 +762,35 @@ static const flex_int16_t yy_chk[249] =
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, 15, 15, 15, 15, 15, 15, 81, 15, 15,
+ 14, 15, 15, 15, 15, 15, 15, 82, 15, 15,
15, 15, 15, 15, 19, 19, 19, 19, 19, 19,
- 20, 21, 30, 21, 23, 23, 23, 23, 23, 23,
-
- 24, 20, 34, 24, 25, 25, 25, 42, 20, 26,
- 26, 28, 28, 28, 70, 74, 20, 29, 29, 29,
- 29, 29, 29, 24, 42, 70, 42, 30, 38, 38,
- 38, 38, 38, 43, 34, 34, 34, 34, 40, 40,
- 40, 40, 40, 41, 41, 41, 41, 41, 56, 43,
- 68, 73, 72, 71, 69, 62, 61, 60, 59, 41,
- 58, 57, 54, 53, 52, 51, 43, 56, 43, 68,
- 50, 49, 48, 47, 46, 44, 41, 37, 41, 35,
- 33, 32, 31, 27, 22, 18, 68, 17, 68, 77,
- 77, 78, 16, 78, 78, 79, 79, 80, 80, 82,
-
- 82, 5, 3, 76, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 76
+ 20, 30, 20, 20, 21, 24, 21, 34, 24, 26,
+
+ 26, 20, 23, 23, 23, 23, 23, 23, 20, 25,
+ 25, 25, 28, 28, 28, 75, 20, 71, 24, 29,
+ 29, 29, 29, 29, 29, 74, 30, 73, 71, 34,
+ 34, 34, 34, 38, 38, 38, 38, 38, 40, 40,
+ 40, 40, 40, 41, 41, 41, 41, 41, 42, 57,
+ 43, 69, 72, 70, 63, 62, 61, 60, 59, 41,
+ 58, 55, 54, 53, 52, 42, 43, 42, 57, 51,
+ 69, 50, 49, 48, 47, 46, 41, 44, 41, 37,
+ 35, 33, 32, 43, 31, 43, 27, 69, 22, 69,
+ 78, 78, 79, 18, 79, 79, 80, 80, 81, 81,
+
+ 83, 83, 17, 16, 5, 3, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77
} ;
/* Table of booleans, true if rule could match eol. */
-static const flex_int32_t yy_rule_can_match_eol[46] =
+static const flex_int32_t yy_rule_can_match_eol[47] =
{ 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, 1, 0, 0, 0, 0, };
static yy_state_type yy_last_accepting_state;
static char *yy_last_accepting_cpos;
@@ -835,8 +837,8 @@ char *yytext;
#include "hypno/grammar.h"
#include "hypno/tokens_arc.h"
-#line 838 "engines/hypno/lexer_arc.cpp"
-#line 839 "engines/hypno/lexer_arc.cpp"
+#line 840 "engines/hypno/lexer_arc.cpp"
+#line 841 "engines/hypno/lexer_arc.cpp"
#define INITIAL 0
@@ -1053,7 +1055,7 @@ YY_DECL
{
#line 42 "engines/hypno/lexer_arc.l"
-#line 1056 "engines/hypno/lexer_arc.cpp"
+#line 1058 "engines/hypno/lexer_arc.cpp"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -1080,13 +1082,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 >= 77 )
+ if ( yy_current_state >= 78 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_current_state != 76 );
+ while ( yy_current_state != 77 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
@@ -1149,142 +1151,142 @@ return HUTOK;
case 7:
YY_RULE_SETUP
#line 49 "engines/hypno/lexer_arc.l"
-return HTOK;
+return H12TOK;
YY_BREAK
case 8:
YY_RULE_SETUP
#line 50 "engines/hypno/lexer_arc.l"
-return PTOK;
+return HTOK;
YY_BREAK
case 9:
YY_RULE_SETUP
#line 51 "engines/hypno/lexer_arc.l"
-return ATOK;
+return PTOK;
YY_BREAK
case 10:
YY_RULE_SETUP
#line 52 "engines/hypno/lexer_arc.l"
-return VTOK;
+return ATOK;
YY_BREAK
case 11:
YY_RULE_SETUP
#line 53 "engines/hypno/lexer_arc.l"
-return OTOK;
+return VTOK;
YY_BREAK
case 12:
YY_RULE_SETUP
#line 54 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ONTOK;
+return OTOK;
YY_BREAK
case 13:
YY_RULE_SETUP
#line 55 "engines/hypno/lexer_arc.l"
-return NTOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ONTOK;
YY_BREAK
case 14:
YY_RULE_SETUP
#line 56 "engines/hypno/lexer_arc.l"
-return NSTOK;
+return NTOK;
YY_BREAK
case 15:
YY_RULE_SETUP
#line 57 "engines/hypno/lexer_arc.l"
-return RTOK;
+return NSTOK;
YY_BREAK
case 16:
YY_RULE_SETUP
#line 58 "engines/hypno/lexer_arc.l"
-return R01TOK;
+return RTOK;
YY_BREAK
case 17:
YY_RULE_SETUP
#line 59 "engines/hypno/lexer_arc.l"
-return ITOK;
+return R01TOK;
YY_BREAK
case 18:
YY_RULE_SETUP
#line 60 "engines/hypno/lexer_arc.l"
-return I1TOK;
+return ITOK;
YY_BREAK
case 19:
YY_RULE_SETUP
#line 61 "engines/hypno/lexer_arc.l"
-return JTOK;
+return I1TOK;
YY_BREAK
case 20:
YY_RULE_SETUP
#line 62 "engines/hypno/lexer_arc.l"
-return QTOK;
+return JTOK;
YY_BREAK
case 21:
YY_RULE_SETUP
#line 63 "engines/hypno/lexer_arc.l"
-return ZTOK;
+return QTOK;
YY_BREAK
case 22:
YY_RULE_SETUP
#line 64 "engines/hypno/lexer_arc.l"
-return WTOK;
+return ZTOK;
YY_BREAK
case 23:
YY_RULE_SETUP
#line 65 "engines/hypno/lexer_arc.l"
-return XTOK;
+return WTOK;
YY_BREAK
case 24:
YY_RULE_SETUP
#line 66 "engines/hypno/lexer_arc.l"
-return TTOK;
+return XTOK;
YY_BREAK
case 25:
YY_RULE_SETUP
#line 67 "engines/hypno/lexer_arc.l"
-return TPTOK;
+return TTOK;
YY_BREAK
case 26:
YY_RULE_SETUP
#line 68 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FNTOK;
+return TPTOK;
YY_BREAK
case 27:
YY_RULE_SETUP
#line 69 "engines/hypno/lexer_arc.l"
-return FTOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FNTOK;
YY_BREAK
case 28:
YY_RULE_SETUP
#line 70 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return SNTOK;
+return FTOK;
YY_BREAK
case 29:
YY_RULE_SETUP
#line 71 "engines/hypno/lexer_arc.l"
-return A0TOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return SNTOK;
YY_BREAK
case 30:
YY_RULE_SETUP
#line 72 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return BNTOK;
+return A0TOK;
YY_BREAK
case 31:
YY_RULE_SETUP
#line 73 "engines/hypno/lexer_arc.l"
-return KNTOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return BNTOK;
YY_BREAK
case 32:
YY_RULE_SETUP
#line 74 "engines/hypno/lexer_arc.l"
-return P0TOK;
+return KNTOK;
YY_BREAK
case 33:
YY_RULE_SETUP
#line 75 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return YXTOK;
+return P0TOK;
YY_BREAK
case 34:
YY_RULE_SETUP
#line 76 "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 35:
YY_RULE_SETUP
@@ -1294,17 +1296,17 @@ HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ENCTOK;
case 36:
YY_RULE_SETUP
#line 78 "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 37:
YY_RULE_SETUP
#line 79 "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 38:
YY_RULE_SETUP
#line 80 "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 39:
YY_RULE_SETUP
@@ -1314,35 +1316,40 @@ HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
case 40:
YY_RULE_SETUP
#line 82 "engines/hypno/lexer_arc.l"
-return RESTOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
YY_BREAK
case 41:
-/* rule 41 can match eol */
YY_RULE_SETUP
#line 83 "engines/hypno/lexer_arc.l"
-return RETTOK;
+return RESTOK;
YY_BREAK
case 42:
+/* rule 42 can match eol */
YY_RULE_SETUP
#line 84 "engines/hypno/lexer_arc.l"
-/* ignore comment */
+return RETTOK;
YY_BREAK
case 43:
YY_RULE_SETUP
#line 85 "engines/hypno/lexer_arc.l"
-/* ignore whitespace */;
+/* ignore comment */
YY_BREAK
case 44:
YY_RULE_SETUP
#line 86 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.i = HYPNO_ARC_text[0]; return BYTE;
+/* ignore whitespace */;
YY_BREAK
case 45:
YY_RULE_SETUP
#line 87 "engines/hypno/lexer_arc.l"
+HYPNO_ARC_lval.i = HYPNO_ARC_text[0]; return BYTE;
+ YY_BREAK
+case 46:
+YY_RULE_SETUP
+#line 88 "engines/hypno/lexer_arc.l"
ECHO;
YY_BREAK
-#line 1345 "engines/hypno/lexer_arc.cpp"
+#line 1352 "engines/hypno/lexer_arc.cpp"
case YY_STATE_EOF(INITIAL):
yyterminate();
@@ -1640,7 +1647,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 >= 77 )
+ if ( yy_current_state >= 78 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -1668,11 +1675,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 >= 77 )
+ if ( yy_current_state >= 78 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 76);
+ yy_is_jam = (yy_current_state == 77);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -2319,7 +2326,7 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 87 "engines/hypno/lexer_arc.l"
+#line 88 "engines/hypno/lexer_arc.l"
namespace Hypno {
diff --git a/engines/hypno/lexer_arc.l b/engines/hypno/lexer_arc.l
index 22301614634..e0aafb8020f 100644
--- a/engines/hypno/lexer_arc.l
+++ b/engines/hypno/lexer_arc.l
@@ -46,6 +46,7 @@ D return DTOK;
HE return HETOK;
HL return HLTOK;
HU return HUTOK;
+H[1-2] return H12TOK;
H return HTOK;
P return PTOK;
A return ATOK;
diff --git a/engines/hypno/tokens_arc.h b/engines/hypno/tokens_arc.h
index b360758c5eb..80b175db597 100644
--- a/engines/hypno/tokens_arc.h
+++ b/engines/hypno/tokens_arc.h
@@ -79,32 +79,33 @@ extern int HYPNO_ARC_debug;
HTOK = 272, /* HTOK */
HETOK = 273, /* HETOK */
HLTOK = 274, /* HLTOK */
- HUTOK = 275, /* HUTOK */
- RETTOK = 276, /* RETTOK */
- QTOK = 277, /* QTOK */
- RESTOK = 278, /* RESTOK */
- PTOK = 279, /* PTOK */
- FTOK = 280, /* FTOK */
- TTOK = 281, /* TTOK */
- TPTOK = 282, /* TPTOK */
- ATOK = 283, /* ATOK */
- VTOK = 284, /* VTOK */
- OTOK = 285, /* OTOK */
- NTOK = 286, /* NTOK */
- NSTOK = 287, /* NSTOK */
- RTOK = 288, /* RTOK */
- R01TOK = 289, /* R01TOK */
- ITOK = 290, /* ITOK */
- I1TOK = 291, /* I1TOK */
- JTOK = 292, /* JTOK */
- ZTOK = 293, /* ZTOK */
- NONETOK = 294, /* NONETOK */
- A0TOK = 295, /* A0TOK */
- P0TOK = 296, /* P0TOK */
- WTOK = 297, /* WTOK */
- XTOK = 298, /* XTOK */
- CB3TOK = 299, /* CB3TOK */
- C02TOK = 300 /* C02TOK */
+ H12TOK = 275, /* H12TOK */
+ HUTOK = 276, /* HUTOK */
+ RETTOK = 277, /* RETTOK */
+ QTOK = 278, /* QTOK */
+ RESTOK = 279, /* RESTOK */
+ PTOK = 280, /* PTOK */
+ FTOK = 281, /* FTOK */
+ TTOK = 282, /* TTOK */
+ TPTOK = 283, /* TPTOK */
+ ATOK = 284, /* ATOK */
+ VTOK = 285, /* VTOK */
+ OTOK = 286, /* OTOK */
+ NTOK = 287, /* NTOK */
+ NSTOK = 288, /* NSTOK */
+ RTOK = 289, /* RTOK */
+ R01TOK = 290, /* R01TOK */
+ ITOK = 291, /* ITOK */
+ I1TOK = 292, /* I1TOK */
+ JTOK = 293, /* JTOK */
+ ZTOK = 294, /* ZTOK */
+ NONETOK = 295, /* NONETOK */
+ A0TOK = 296, /* A0TOK */
+ P0TOK = 297, /* P0TOK */
+ WTOK = 298, /* WTOK */
+ XTOK = 299, /* XTOK */
+ CB3TOK = 300, /* CB3TOK */
+ C02TOK = 301 /* C02TOK */
};
typedef enum HYPNO_ARC_tokentype HYPNO_ARC_token_kind_t;
#endif
@@ -118,7 +119,7 @@ union HYPNO_ARC_STYPE
char *s; /* string value */
int i; /* integer value */
-#line 122 "engines/hypno/tokens_arc.h"
+#line 123 "engines/hypno/tokens_arc.h"
};
typedef union HYPNO_ARC_STYPE HYPNO_ARC_STYPE;
diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index abb5e6c2d15..5b270e10a51 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -286,13 +286,13 @@ void WetEngine::loadAssetsFullGame() {
loadArcadeLevel("c321.mi_", "c41", "<check_lives>", "");
loadArcadeLevel("c322.mi_", "c41", "<check_lives>", "");
- //loadArcadeLevel("c330.mi_", "???", "", "");
- //loadArcadeLevel("c331.mi_", "???", "");
- //loadArcadeLevel("c332.mi_", "???", "");
+ loadArcadeLevel("c330.mi_", "c30", "<check_lives>", "");
+ loadArcadeLevel("c331.mi_", "c30", "<check_lives>", "");
+ loadArcadeLevel("c332.mi_", "c30", "<check_lives>", "");
- //loadArcadeLevel("c300.mi_", "???", "", "");
- //loadArcadeLevel("c301.mi_", "???", "");
- //loadArcadeLevel("c302.mi_", "???", "");
+ loadArcadeLevel("c300.mi_", "c41", "<check_lives>", "");
+ loadArcadeLevel("c301.mi_", "c41", "<check_lives>", "");
+ loadArcadeLevel("c302.mi_", "c41", "<check_lives>", "");
loadArcadeLevel("c410.mi_", "c42", "<check_lives>", "");
loadArcadeLevel("c411.mi_", "c42", "<check_lives>", "");
Commit: 13f53c83a17495c31159701b4e99b7c96bedbac9
https://github.com/scummvm/scummvm/commit/13f53c83a17495c31159701b4e99b7c96bedbac9
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-02-24T18:12:29+01:00
Commit Message:
HYPNO: load last two levels in wet (but not playing them correctly)
Changed paths:
engines/hypno/wet/wet.cpp
diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index 5b270e10a51..a156792c113 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -329,13 +329,13 @@ void WetEngine::loadAssetsFullGame() {
//loadArcadeLevel("c501.mi_", "???", "");
//loadArcadeLevel("c502.mi_", "???", "");
- loadArcadeLevel("c610.mi_", "<quit>", "<check_lives>", "");
- loadArcadeLevel("c611.mi_", "<quit>", "<check_lives>", "");
- loadArcadeLevel("c612.mi_", "<quit>", "<check_lives>", "");
+ loadArcadeLevel("c610.mi_", "c60", "<check_lives>", "");
+ loadArcadeLevel("c611.mi_", "c60", "<check_lives>", "");
+ loadArcadeLevel("c612.mi_", "c60", "<check_lives>", "");
- //loadArcadeLevel("c600.mi_", "???", "");
- //loadArcadeLevel("c601.mi_", "???", "");
- //loadArcadeLevel("c602.mi_", "???", "");
+ loadArcadeLevel("c600.mi_", "<quit>", "<check_lives>", "");
+ loadArcadeLevel("c601.mi_", "<quit>", "<check_lives>", "");
+ loadArcadeLevel("c602.mi_", "<quit>", "<check_lives>", "");
loadLib("", "c_misc/fonts.lib", true);
loadFonts();
Commit: a226d1e7bea77e72a894ce73a4c2cc09c60841e4
https://github.com/scummvm/scummvm/commit/a226d1e7bea77e72a894ce73a4c2cc09c60841e4
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-02-24T18:12:29+01:00
Commit Message:
HYPNO: finally load all the levels in wet
Changed paths:
engines/hypno/arcade.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
engines/hypno/wet/wet.cpp
diff --git a/engines/hypno/arcade.cpp b/engines/hypno/arcade.cpp
index 70d364b9d4a..96bd0420a2d 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -113,7 +113,7 @@ SegmentShootsSequence HypnoEngine::parseShootList(const Common::String &filename
si.name = n;
si.timestamp = atoi(t.c_str());
- if (si.timestamp == 0)
+ if (si.timestamp == 0 && si.name != "0") // 0,0 is a special case
error("Error at parsing '%s' with timestamp: %s", n.c_str(), t.c_str());
ss.shootSequence.push_back(si);
debugC(1, kHypnoDebugParser, "%d -> %s", si.timestamp, si.name.c_str());
diff --git a/engines/hypno/grammar_arc.cpp b/engines/hypno/grammar_arc.cpp
index 0681f1590e9..c27435382c4 100644
--- a/engines/hypno/grammar_arc.cpp
+++ b/engines/hypno/grammar_arc.cpp
@@ -162,29 +162,30 @@ enum yysymbol_kind_t
YYSYMBOL_ATOK = 29, /* ATOK */
YYSYMBOL_VTOK = 30, /* VTOK */
YYSYMBOL_OTOK = 31, /* OTOK */
- YYSYMBOL_NTOK = 32, /* NTOK */
- YYSYMBOL_NSTOK = 33, /* NSTOK */
- YYSYMBOL_RTOK = 34, /* RTOK */
- YYSYMBOL_R01TOK = 35, /* R01TOK */
- YYSYMBOL_ITOK = 36, /* ITOK */
- YYSYMBOL_I1TOK = 37, /* I1TOK */
- YYSYMBOL_JTOK = 38, /* JTOK */
- YYSYMBOL_ZTOK = 39, /* ZTOK */
- YYSYMBOL_NONETOK = 40, /* NONETOK */
- YYSYMBOL_A0TOK = 41, /* A0TOK */
- YYSYMBOL_P0TOK = 42, /* P0TOK */
- YYSYMBOL_WTOK = 43, /* WTOK */
- YYSYMBOL_XTOK = 44, /* XTOK */
- YYSYMBOL_CB3TOK = 45, /* CB3TOK */
- YYSYMBOL_C02TOK = 46, /* C02TOK */
- YYSYMBOL_YYACCEPT = 47, /* $accept */
- YYSYMBOL_start = 48, /* start */
- YYSYMBOL_49_1 = 49, /* $@1 */
- YYSYMBOL_header = 50, /* header */
- YYSYMBOL_hline = 51, /* hline */
- YYSYMBOL_enc = 52, /* enc */
- YYSYMBOL_body = 53, /* body */
- YYSYMBOL_bline = 54 /* bline */
+ YYSYMBOL_LTOK = 32, /* LTOK */
+ YYSYMBOL_NTOK = 33, /* NTOK */
+ YYSYMBOL_NSTOK = 34, /* NSTOK */
+ YYSYMBOL_RTOK = 35, /* RTOK */
+ YYSYMBOL_R01TOK = 36, /* R01TOK */
+ YYSYMBOL_ITOK = 37, /* ITOK */
+ YYSYMBOL_I1TOK = 38, /* I1TOK */
+ YYSYMBOL_JTOK = 39, /* JTOK */
+ YYSYMBOL_ZTOK = 40, /* ZTOK */
+ YYSYMBOL_NONETOK = 41, /* NONETOK */
+ YYSYMBOL_A0TOK = 42, /* A0TOK */
+ YYSYMBOL_P0TOK = 43, /* P0TOK */
+ YYSYMBOL_WTOK = 44, /* WTOK */
+ YYSYMBOL_XTOK = 45, /* XTOK */
+ YYSYMBOL_CB3TOK = 46, /* CB3TOK */
+ YYSYMBOL_C02TOK = 47, /* C02TOK */
+ YYSYMBOL_YYACCEPT = 48, /* $accept */
+ YYSYMBOL_start = 49, /* start */
+ YYSYMBOL_50_1 = 50, /* $@1 */
+ YYSYMBOL_header = 51, /* header */
+ YYSYMBOL_hline = 52, /* hline */
+ YYSYMBOL_enc = 53, /* enc */
+ YYSYMBOL_body = 54, /* body */
+ YYSYMBOL_bline = 55 /* bline */
};
typedef enum yysymbol_kind_t yysymbol_kind_t;
@@ -512,19 +513,19 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 6
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 162
+#define YYLAST 160
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 47
+#define YYNTOKENS 48
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 8
/* YYNRULES -- Number of rules. */
-#define YYNRULES 77
+#define YYNRULES 80
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 162
+#define YYNSTATES 169
/* YYMAXUTOK -- Last valid token kind. */
-#define YYMAXUTOK 301
+#define YYMAXUTOK 302
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -568,7 +569,7 @@ 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
+ 45, 46, 47
};
#if HYPNO_ARC_DEBUG
@@ -578,11 +579,12 @@ static const yytype_int16 yyrline[] =
0, 78, 78, 78, 79, 82, 83, 84, 87, 91,
95, 99, 100, 101, 102, 103, 108, 118, 127, 133,
138, 139, 143, 147, 150, 154, 157, 158, 176, 198,
- 204, 209, 214, 220, 225, 230, 235, 240, 247, 248,
- 251, 252, 253, 256, 264, 269, 274, 278, 282, 286,
- 290, 294, 298, 302, 306, 310, 314, 318, 322, 326,
- 330, 334, 338, 341, 345, 350, 354, 359, 364, 368,
- 374, 375, 378, 379, 382, 386, 393, 394
+ 204, 209, 214, 220, 225, 230, 235, 240, 245, 252,
+ 253, 256, 257, 258, 261, 269, 274, 279, 283, 287,
+ 291, 295, 299, 303, 307, 311, 315, 319, 323, 327,
+ 331, 335, 339, 343, 347, 350, 354, 359, 363, 368,
+ 373, 377, 383, 384, 387, 388, 391, 395, 398, 405,
+ 406
};
#endif
@@ -602,10 +604,10 @@ static const char *const yytname[] =
"BNTOK", "SNTOK", "KNTOK", "YXTOK", "FNTOK", "ENCTOK", "ONTOK", "NUM",
"BYTE", "COMMENT", "CTOK", "DTOK", "HTOK", "HETOK", "HLTOK", "H12TOK",
"HUTOK", "RETTOK", "QTOK", "RESTOK", "PTOK", "FTOK", "TTOK", "TPTOK",
- "ATOK", "VTOK", "OTOK", "NTOK", "NSTOK", "RTOK", "R01TOK", "ITOK",
- "I1TOK", "JTOK", "ZTOK", "NONETOK", "A0TOK", "P0TOK", "WTOK", "XTOK",
- "CB3TOK", "C02TOK", "$accept", "start", "$@1", "header", "hline", "enc",
- "body", "bline", YY_NULLPTR
+ "ATOK", "VTOK", "OTOK", "LTOK", "NTOK", "NSTOK", "RTOK", "R01TOK",
+ "ITOK", "I1TOK", "JTOK", "ZTOK", "NONETOK", "A0TOK", "P0TOK", "WTOK",
+ "XTOK", "CB3TOK", "C02TOK", "$accept", "start", "$@1", "header", "hline",
+ "enc", "body", "bline", YY_NULLPTR
};
static const char *
@@ -615,7 +617,7 @@ yysymbol_name (yysymbol_kind_t yysymbol)
}
#endif
-#define YYPACT_NINF (-95)
+#define YYPACT_NINF (-99)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
@@ -629,23 +631,23 @@ yysymbol_name (yysymbol_kind_t yysymbol)
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- -2, -95, -2, 8, 71, -95, -95, 9, 10, 3,
- 6, 7, 45, 11, 19, 22, 31, 71, 33, 34,
- 35, -1, 46, 39, 4, 43, 52, 53, 55, 57,
- 61, 28, 71, -95, 62, 66, -95, -95, 68, 69,
- 72, 73, 83, 94, 97, 98, 99, -95, 100, 101,
- -95, 102, 103, 104, 105, 106, -95, 107, -95, -95,
- -95, -95, -95, 27, -95, -95, -95, -95, 108, 109,
- 110, 111, 112, 113, 114, 115, 116, -95, -95, -95,
- -95, 79, -95, -95, -95, -5, -95, -95, -95, -95,
- -95, -95, -95, -95, -95, -95, 117, 126, 119, 1,
- 120, 121, 122, -5, 131, 124, 125, -95, 127, 128,
- 37, 129, -95, 130, 132, 133, 118, -5, 134, 62,
- 135, -95, -95, -95, -95, -95, -95, -95, -95, 136,
- 137, 138, -95, -95, -95, -95, -95, -95, -95, -95,
- -95, -95, -95, -95, -95, -95, -95, -95, -95, 139,
- 140, -95, -95, -95, -95, -95, -95, -95, -95, -95,
- -95, -95
+ -2, -99, -2, 9, 73, -99, -99, 10, 11, 4,
+ 6, 7, 84, 0, 16, 20, 32, 73, 34, 35,
+ 36, -1, 45, 39, 12, 40, 46, 52, 53, 54,
+ 55, 22, 73, -99, 50, 56, -99, -99, 60, 62,
+ 64, 68, 69, 70, 71, 74, 93, 100, -99, 102,
+ 103, -99, 105, 106, 108, 109, 110, -99, 111, -99,
+ -99, -99, -99, -99, 44, -99, -99, -99, -99, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, -99,
+ -99, -99, -99, 81, -99, -99, -99, -5, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, 122,
+ 131, 124, 1, 125, 126, 127, -5, 136, 129, 130,
+ 132, -99, 133, 134, 38, 135, -99, 137, 138, 139,
+ 98, -5, 140, 50, 141, -99, -99, -99, -99, -99,
+ -99, -99, -99, 142, 143, 144, 145, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, 146, 147, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -656,32 +658,32 @@ 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, 7, 27, 39, 17, 8, 10, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 6, 0, 0,
- 9, 0, 0, 0, 0, 0, 14, 0, 21, 22,
- 23, 24, 25, 0, 5, 38, 28, 16, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 26, 11, 19,
- 20, 0, 12, 13, 15, 42, 32, 37, 35, 34,
- 33, 29, 30, 36, 31, 18, 0, 0, 0, 0,
- 0, 0, 0, 42, 0, 0, 0, 76, 0, 0,
- 0, 0, 77, 0, 0, 0, 0, 42, 0, 39,
- 0, 43, 44, 70, 74, 71, 41, 45, 72, 0,
- 0, 0, 46, 47, 60, 49, 50, 52, 58, 57,
- 51, 61, 48, 56, 55, 59, 53, 54, 62, 0,
- 0, 73, 3, 40, 66, 75, 67, 69, 64, 65,
- 63, 68
+ 0, 0, 7, 27, 40, 17, 8, 10, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 6, 0,
+ 0, 9, 0, 0, 0, 0, 0, 14, 0, 21,
+ 22, 23, 24, 25, 0, 5, 39, 28, 16, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 26,
+ 11, 19, 20, 0, 12, 13, 15, 43, 32, 38,
+ 35, 34, 36, 33, 29, 30, 37, 31, 18, 0,
+ 0, 0, 0, 0, 0, 0, 43, 0, 0, 0,
+ 0, 79, 0, 0, 0, 0, 80, 0, 0, 0,
+ 0, 43, 0, 40, 0, 44, 45, 72, 76, 73,
+ 42, 46, 74, 0, 0, 0, 0, 47, 48, 61,
+ 50, 51, 53, 59, 58, 52, 62, 49, 57, 63,
+ 56, 60, 54, 55, 64, 0, 0, 75, 3, 41,
+ 68, 78, 69, 71, 77, 66, 67, 65, 70
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -95, 141, -95, -10, -95, 36, -94, -95
+ -99, 158, -99, -10, -99, 25, -98, -99
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int8 yydefgoto[] =
{
- 0, 3, 4, 31, 32, 66, 116, 117
+ 0, 3, 4, 31, 32, 67, 120, 121
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -689,80 +691,81 @@ static const yytype_int8 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_uint8 yytable[] =
{
- 96, 97, 98, 51, 99, 121, 1, 47, 6, 126,
- 100, 101, 102, 33, 34, 35, 55, 103, 36, 37,
- 2, 104, 64, 153, 43, 105, 106, 107, 56, 108,
- 109, 110, 44, 111, 112, 45, 113, 114, 115, 52,
- 132, 122, 133, 134, 46, 48, 49, 50, 38, 85,
- 53, 54, 135, 136, 137, 57, 58, 59, 39, 60,
- 138, 61, 139, 140, 141, 62, 142, 63, 143, 144,
- 40, 145, 65, 146, 41, 147, 7, 8, 67, 42,
- 68, 69, 9, 95, 70, 71, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 72, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 73, 29, 30, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 118,
- 119, 120, 123, 124, 125, 127, 128, 129, 0, 130,
- 131, 148, 149, 5, 150, 151, 154, 156, 157, 158,
- 159, 160, 161, 0, 0, 155, 0, 0, 0, 0,
- 0, 0, 152
+ 99, 100, 101, 52, 102, 125, 1, 48, 130, 6,
+ 103, 104, 105, 44, 33, 34, 35, 106, 36, 37,
+ 2, 107, 65, 159, 56, 108, 109, 110, 111, 45,
+ 112, 113, 114, 46, 115, 116, 57, 117, 118, 119,
+ 53, 137, 126, 138, 139, 47, 49, 50, 51, 54,
+ 59, 55, 58, 140, 141, 142, 60, 61, 62, 63,
+ 66, 143, 64, 144, 145, 146, 87, 147, 68, 148,
+ 149, 150, 69, 151, 70, 152, 71, 153, 7, 8,
+ 72, 73, 74, 75, 9, 98, 76, 38, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 39, 19, 20,
+ 21, 22, 23, 24, 25, 77, 26, 27, 28, 40,
+ 29, 30, 78, 41, 79, 80, 42, 81, 82, 43,
+ 83, 84, 85, 86, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 122, 123, 124, 127, 128, 129,
+ 131, 132, 133, 158, 134, 135, 136, 154, 161, 155,
+ 156, 157, 160, 162, 163, 164, 165, 166, 167, 168,
+ 5
};
static const yytype_int8 yycheck[] =
{
- 5, 6, 7, 4, 9, 4, 8, 17, 0, 103,
- 15, 16, 17, 4, 4, 12, 12, 22, 12, 12,
- 22, 26, 32, 117, 13, 30, 31, 32, 24, 34,
- 35, 36, 13, 38, 39, 13, 41, 42, 43, 40,
- 3, 40, 5, 6, 13, 12, 12, 12, 3, 22,
- 4, 12, 15, 16, 17, 12, 4, 4, 13, 4,
- 23, 4, 25, 26, 27, 4, 29, 39, 31, 32,
- 25, 34, 10, 36, 29, 38, 5, 6, 12, 34,
- 12, 12, 11, 4, 12, 12, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 12, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 12, 36, 37, 12,
+ 5, 6, 7, 4, 9, 4, 8, 17, 106, 0,
+ 15, 16, 17, 13, 4, 4, 12, 22, 12, 12,
+ 22, 26, 32, 121, 12, 30, 31, 32, 33, 13,
+ 35, 36, 37, 13, 39, 40, 24, 42, 43, 44,
+ 41, 3, 41, 5, 6, 13, 12, 12, 12, 4,
+ 4, 12, 12, 15, 16, 17, 4, 4, 4, 4,
+ 10, 23, 40, 25, 26, 27, 22, 29, 12, 31,
+ 32, 33, 12, 35, 12, 37, 12, 39, 5, 6,
+ 12, 12, 12, 12, 11, 4, 12, 3, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 13, 25, 26,
+ 27, 28, 29, 30, 31, 12, 33, 34, 35, 25,
+ 37, 38, 12, 29, 12, 12, 32, 12, 12, 35,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 4, 12, 12, 12, 12,
+ 4, 12, 12, 45, 12, 12, 12, 12, 123, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 4, 12, 12, 12, 12, 4, 12, 12, -1, 12,
- 12, 12, 12, 2, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, -1, -1, 119, -1, -1, -1, -1,
- -1, -1, 44
+ 2
};
/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
state STATE-NUM. */
static const yytype_int8 yystos[] =
{
- 0, 8, 22, 48, 49, 48, 0, 5, 6, 11,
+ 0, 8, 22, 49, 50, 49, 0, 5, 6, 11,
15, 16, 17, 18, 19, 20, 21, 22, 23, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 36,
- 37, 50, 51, 4, 4, 12, 12, 12, 3, 13,
- 25, 29, 34, 13, 13, 13, 13, 50, 12, 12,
- 12, 4, 40, 4, 12, 12, 24, 12, 4, 4,
- 4, 4, 4, 39, 50, 10, 52, 12, 12, 12,
+ 26, 27, 28, 29, 30, 31, 33, 34, 35, 37,
+ 38, 51, 52, 4, 4, 12, 12, 12, 3, 13,
+ 25, 29, 32, 35, 13, 13, 13, 13, 51, 12,
+ 12, 12, 4, 41, 4, 12, 12, 24, 12, 4,
+ 4, 4, 4, 4, 40, 51, 10, 53, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 22, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 4, 5, 6, 7, 9,
- 15, 16, 17, 22, 26, 30, 31, 32, 34, 35,
- 36, 38, 39, 41, 42, 43, 53, 54, 12, 4,
- 12, 4, 40, 12, 12, 12, 53, 4, 12, 12,
- 12, 12, 3, 5, 6, 15, 16, 17, 23, 25,
- 26, 27, 29, 31, 32, 34, 36, 38, 12, 12,
- 12, 12, 44, 53, 12, 52, 12, 12, 12, 12,
- 12, 12
+ 12, 12, 12, 12, 12, 12, 12, 22, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 12, 4, 5,
+ 6, 7, 9, 15, 16, 17, 22, 26, 30, 31,
+ 32, 33, 35, 36, 37, 39, 40, 42, 43, 44,
+ 54, 55, 12, 4, 12, 4, 41, 12, 12, 12,
+ 54, 4, 12, 12, 12, 12, 12, 3, 5, 6,
+ 15, 16, 17, 23, 25, 26, 27, 29, 31, 32,
+ 33, 35, 37, 39, 12, 12, 12, 12, 45, 54,
+ 12, 53, 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, 47, 49, 48, 48, 50, 50, 50, 51, 51,
- 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 51, 51, 52, 52,
- 53, 53, 53, 54, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 54
+ 0, 48, 50, 49, 49, 51, 51, 51, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52, 52, 53,
+ 53, 54, 54, 54, 55, 55, 55, 55, 55, 55,
+ 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
+ 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
+ 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
+ 55
};
/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
@@ -771,11 +774,12 @@ static const yytype_int8 yyr2[] =
0, 2, 0, 7, 2, 2, 2, 0, 2, 2,
2, 3, 3, 3, 2, 3, 3, 2, 4, 3,
3, 2, 2, 2, 2, 2, 3, 2, 3, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 1, 0,
- 2, 2, 0, 2, 2, 2, 2, 2, 2, 2,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 0, 2, 2, 0, 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, 1, 1
+ 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
+ 3, 3, 2, 2, 2, 2, 2, 3, 3, 1,
+ 1
};
@@ -1241,7 +1245,7 @@ yyreduce:
case 2: /* $@1: %empty */
#line 78 "engines/hypno/grammar_arc.y"
{ g_parsedArc->mode = (yyvsp[0].s); }
-#line 1245 "engines/hypno/grammar_arc.cpp"
+#line 1249 "engines/hypno/grammar_arc.cpp"
break;
case 8: /* hline: CTOK NUM */
@@ -1250,7 +1254,7 @@ yyreduce:
g_parsedArc->id = (yyvsp[0].i);
HYPNO_ARC_default_sound_rate = 0;
debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i)); }
-#line 1254 "engines/hypno/grammar_arc.cpp"
+#line 1258 "engines/hypno/grammar_arc.cpp"
break;
case 9: /* hline: FTOK NUM */
@@ -1259,7 +1263,7 @@ yyreduce:
HYPNO_ARC_default_sound_rate = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "F %d", (yyvsp[0].i));
}
-#line 1263 "engines/hypno/grammar_arc.cpp"
+#line 1267 "engines/hypno/grammar_arc.cpp"
break;
case 10: /* hline: DTOK NUM */
@@ -1268,31 +1272,31 @@ yyreduce:
g_parsedArc->frameDelay = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
}
-#line 1272 "engines/hypno/grammar_arc.cpp"
+#line 1276 "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 1278 "engines/hypno/grammar_arc.cpp"
+#line 1282 "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 1284 "engines/hypno/grammar_arc.cpp"
+#line 1288 "engines/hypno/grammar_arc.cpp"
break;
case 13: /* hline: VTOK NUM NUM */
#line 101 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1290 "engines/hypno/grammar_arc.cpp"
+#line 1294 "engines/hypno/grammar_arc.cpp"
break;
case 14: /* hline: VTOK RESTOK */
#line 102 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V 320,200"); }
-#line 1296 "engines/hypno/grammar_arc.cpp"
+#line 1300 "engines/hypno/grammar_arc.cpp"
break;
case 15: /* hline: OTOK NUM NUM */
@@ -1302,7 +1306,7 @@ yyreduce:
g_parsedArc->objMissesAllowed[0] = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "O %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1306 "engines/hypno/grammar_arc.cpp"
+#line 1310 "engines/hypno/grammar_arc.cpp"
break;
case 16: /* hline: ONTOK NUM NUM */
@@ -1317,7 +1321,7 @@ yyreduce:
} else
error("Invalid objective: '%s'", (yyvsp[-2].s));
debugC(1, kHypnoDebugParser, "ON %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1321 "engines/hypno/grammar_arc.cpp"
+#line 1325 "engines/hypno/grammar_arc.cpp"
break;
case 17: /* hline: ONTOK NUM */
@@ -1331,7 +1335,7 @@ yyreduce:
error("Invalid objective: '%s'", (yyvsp[-1].s));
debugC(1, kHypnoDebugParser, "ON %d", (yyvsp[0].i));
}
-#line 1335 "engines/hypno/grammar_arc.cpp"
+#line 1339 "engines/hypno/grammar_arc.cpp"
break;
case 18: /* hline: TPTOK FILENAME NUM FILENAME */
@@ -1342,7 +1346,7 @@ yyreduce:
g_parsedArc->transitionPalette = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "Tp %s %d %s", (yyvsp[-2].s), (yyvsp[-1].i), (yyvsp[0].s));
}
-#line 1346 "engines/hypno/grammar_arc.cpp"
+#line 1350 "engines/hypno/grammar_arc.cpp"
break;
case 19: /* hline: TTOK FILENAME NUM */
@@ -1352,13 +1356,13 @@ yyreduce:
g_parsedArc->transitionTime = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "T %s %d", (yyvsp[-1].s), (yyvsp[0].i));
}
-#line 1356 "engines/hypno/grammar_arc.cpp"
+#line 1360 "engines/hypno/grammar_arc.cpp"
break;
case 20: /* hline: TTOK NONETOK NUM */
#line 138 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "T NONE %d", (yyvsp[0].i)); }
-#line 1362 "engines/hypno/grammar_arc.cpp"
+#line 1366 "engines/hypno/grammar_arc.cpp"
break;
case 21: /* hline: NTOK FILENAME */
@@ -1367,7 +1371,7 @@ yyreduce:
g_parsedArc->backgroundVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "N %s", (yyvsp[0].s));
}
-#line 1371 "engines/hypno/grammar_arc.cpp"
+#line 1375 "engines/hypno/grammar_arc.cpp"
break;
case 22: /* hline: NSTOK FILENAME */
@@ -1376,7 +1380,7 @@ yyreduce:
g_parsedArc->backgroundVideo = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "N* %s", (yyvsp[0].s));
}
-#line 1380 "engines/hypno/grammar_arc.cpp"
+#line 1384 "engines/hypno/grammar_arc.cpp"
break;
case 23: /* hline: RTOK FILENAME */
@@ -1384,7 +1388,7 @@ yyreduce:
{
g_parsedArc->backgroundPalette = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "R %s", (yyvsp[0].s)); }
-#line 1388 "engines/hypno/grammar_arc.cpp"
+#line 1392 "engines/hypno/grammar_arc.cpp"
break;
case 24: /* hline: ITOK FILENAME */
@@ -1393,7 +1397,7 @@ yyreduce:
g_parsedArc->player = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1397 "engines/hypno/grammar_arc.cpp"
+#line 1401 "engines/hypno/grammar_arc.cpp"
break;
case 25: /* hline: I1TOK FILENAME */
@@ -1401,13 +1405,13 @@ yyreduce:
{
debugC(1, kHypnoDebugParser, "I1 %s", (yyvsp[0].s));
}
-#line 1405 "engines/hypno/grammar_arc.cpp"
+#line 1409 "engines/hypno/grammar_arc.cpp"
break;
case 26: /* hline: QTOK NUM NUM */
#line 157 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "Q %d %d", (yyvsp[-1].i), (yyvsp[0].i)); }
-#line 1411 "engines/hypno/grammar_arc.cpp"
+#line 1415 "engines/hypno/grammar_arc.cpp"
break;
case 27: /* hline: BNTOK FILENAME */
@@ -1430,7 +1434,7 @@ yyreduce:
debugC(1, kHypnoDebugParser, "BN %s", (yyvsp[0].s));
}
-#line 1434 "engines/hypno/grammar_arc.cpp"
+#line 1438 "engines/hypno/grammar_arc.cpp"
break;
case 28: /* hline: SNTOK FILENAME enc */
@@ -1457,7 +1461,7 @@ yyreduce:
}
debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s));
}
-#line 1461 "engines/hypno/grammar_arc.cpp"
+#line 1465 "engines/hypno/grammar_arc.cpp"
break;
case 29: /* hline: HETOK BYTE NUM NUM */
@@ -1468,7 +1472,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 1472 "engines/hypno/grammar_arc.cpp"
+#line 1476 "engines/hypno/grammar_arc.cpp"
break;
case 30: /* hline: HLTOK BYTE NUM NUM */
@@ -1478,7 +1482,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 1482 "engines/hypno/grammar_arc.cpp"
+#line 1486 "engines/hypno/grammar_arc.cpp"
break;
case 31: /* hline: HUTOK BYTE NUM NUM */
@@ -1488,7 +1492,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 1492 "engines/hypno/grammar_arc.cpp"
+#line 1496 "engines/hypno/grammar_arc.cpp"
break;
case 32: /* hline: HTOK NAME NUM NUM */
@@ -1499,7 +1503,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 1503 "engines/hypno/grammar_arc.cpp"
+#line 1507 "engines/hypno/grammar_arc.cpp"
break;
case 33: /* hline: HTOK RTOK NUM NUM */
@@ -1509,7 +1513,7 @@ yyreduce:
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H R %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1513 "engines/hypno/grammar_arc.cpp"
+#line 1517 "engines/hypno/grammar_arc.cpp"
break;
case 34: /* hline: HTOK ATOK NUM NUM */
@@ -1519,7 +1523,7 @@ yyreduce:
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H A %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1523 "engines/hypno/grammar_arc.cpp"
+#line 1527 "engines/hypno/grammar_arc.cpp"
break;
case 35: /* hline: HTOK PTOK NUM NUM */
@@ -1529,43 +1533,53 @@ yyreduce:
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H P %d %d", (yyvsp[-1].i), (yyvsp[0].i));
}
-#line 1533 "engines/hypno/grammar_arc.cpp"
+#line 1537 "engines/hypno/grammar_arc.cpp"
break;
- case 36: /* hline: H12TOK BYTE NUM NUM */
+ case 36: /* hline: HTOK LTOK NUM NUM */
#line 235 "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 1547 "engines/hypno/grammar_arc.cpp"
+ break;
+
+ case 37: /* hline: H12TOK BYTE NUM NUM */
+#line 240 "engines/hypno/grammar_arc.y"
{
Segment segment('P', (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 1543 "engines/hypno/grammar_arc.cpp"
+#line 1557 "engines/hypno/grammar_arc.cpp"
break;
- case 37: /* hline: HTOK BYTE NUM NUM */
-#line 240 "engines/hypno/grammar_arc.y"
+ case 38: /* hline: HTOK BYTE NUM NUM */
+#line 245 "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 1553 "engines/hypno/grammar_arc.cpp"
+#line 1567 "engines/hypno/grammar_arc.cpp"
break;
- case 38: /* enc: ENCTOK */
-#line 247 "engines/hypno/grammar_arc.y"
+ case 39: /* enc: ENCTOK */
+#line 252 "engines/hypno/grammar_arc.y"
{ (yyval.s) = (yyvsp[0].s); }
-#line 1559 "engines/hypno/grammar_arc.cpp"
+#line 1573 "engines/hypno/grammar_arc.cpp"
break;
- case 39: /* enc: %empty */
-#line 248 "engines/hypno/grammar_arc.y"
+ case 40: /* enc: %empty */
+#line 253 "engines/hypno/grammar_arc.y"
{ (yyval.s) = scumm_strdup(""); }
-#line 1565 "engines/hypno/grammar_arc.cpp"
+#line 1579 "engines/hypno/grammar_arc.cpp"
break;
- case 43: /* bline: FNTOK FILENAME */
-#line 256 "engines/hypno/grammar_arc.y"
+ case 44: /* bline: FNTOK FILENAME */
+#line 261 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
if (Common::String("F0") == (yyvsp[-1].s))
@@ -1574,288 +1588,305 @@ yyreduce:
shoot->explosionAnimation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1578 "engines/hypno/grammar_arc.cpp"
+#line 1592 "engines/hypno/grammar_arc.cpp"
break;
- case 44: /* bline: FNTOK NONETOK */
-#line 264 "engines/hypno/grammar_arc.y"
+ case 45: /* bline: FNTOK NONETOK */
+#line 269 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = "NONE";
debugC(1, kHypnoDebugParser, "FN NONE");
}
-#line 1588 "engines/hypno/grammar_arc.cpp"
+#line 1602 "engines/hypno/grammar_arc.cpp"
break;
- case 45: /* bline: FTOK FILENAME */
-#line 269 "engines/hypno/grammar_arc.y"
+ case 46: /* bline: FTOK FILENAME */
+#line 274 "engines/hypno/grammar_arc.y"
{
shoot = new Shoot();
shoot->animation = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "FN %s", (yyvsp[0].s));
}
-#line 1598 "engines/hypno/grammar_arc.cpp"
+#line 1612 "engines/hypno/grammar_arc.cpp"
break;
- case 46: /* bline: ITOK NAME */
-#line 274 "engines/hypno/grammar_arc.y"
+ case 47: /* bline: ITOK NAME */
+#line 279 "engines/hypno/grammar_arc.y"
{
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1607 "engines/hypno/grammar_arc.cpp"
+#line 1621 "engines/hypno/grammar_arc.cpp"
break;
- case 47: /* bline: ITOK BNTOK */
-#line 278 "engines/hypno/grammar_arc.y"
+ case 48: /* bline: ITOK BNTOK */
+#line 283 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == B1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1616 "engines/hypno/grammar_arc.cpp"
+#line 1630 "engines/hypno/grammar_arc.cpp"
break;
- case 48: /* bline: ITOK ATOK */
-#line 282 "engines/hypno/grammar_arc.y"
+ case 49: /* bline: ITOK ATOK */
+#line 287 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == A
shoot->name = "A";
debugC(1, kHypnoDebugParser, "I A");
}
-#line 1625 "engines/hypno/grammar_arc.cpp"
+#line 1639 "engines/hypno/grammar_arc.cpp"
break;
- case 49: /* bline: ITOK CTOK */
-#line 286 "engines/hypno/grammar_arc.y"
+ case 50: /* bline: ITOK CTOK */
+#line 291 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == C
shoot->name = "C";
debugC(1, kHypnoDebugParser, "I C");
}
-#line 1634 "engines/hypno/grammar_arc.cpp"
+#line 1648 "engines/hypno/grammar_arc.cpp"
break;
- case 50: /* bline: ITOK DTOK */
-#line 290 "engines/hypno/grammar_arc.y"
+ case 51: /* bline: ITOK DTOK */
+#line 295 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == D
shoot->name = "D";
debugC(1, kHypnoDebugParser, "I D");
}
-#line 1643 "engines/hypno/grammar_arc.cpp"
+#line 1657 "engines/hypno/grammar_arc.cpp"
break;
- case 51: /* bline: ITOK FTOK */
-#line 294 "engines/hypno/grammar_arc.y"
+ case 52: /* bline: ITOK FTOK */
+#line 299 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == F
shoot->name = "F";
debugC(1, kHypnoDebugParser, "I F");
}
-#line 1652 "engines/hypno/grammar_arc.cpp"
+#line 1666 "engines/hypno/grammar_arc.cpp"
break;
- case 52: /* bline: ITOK HTOK */
-#line 298 "engines/hypno/grammar_arc.y"
+ case 53: /* bline: ITOK HTOK */
+#line 303 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == H
shoot->name = "H";
debugC(1, kHypnoDebugParser, "I H");
}
-#line 1661 "engines/hypno/grammar_arc.cpp"
+#line 1675 "engines/hypno/grammar_arc.cpp"
break;
- case 53: /* bline: ITOK ITOK */
-#line 302 "engines/hypno/grammar_arc.y"
+ case 54: /* bline: ITOK ITOK */
+#line 307 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == I
shoot->name = "I";
debugC(1, kHypnoDebugParser, "I I");
}
-#line 1670 "engines/hypno/grammar_arc.cpp"
+#line 1684 "engines/hypno/grammar_arc.cpp"
break;
- case 54: /* bline: ITOK JTOK */
-#line 306 "engines/hypno/grammar_arc.y"
+ case 55: /* bline: ITOK JTOK */
+#line 311 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == I
shoot->name = "J";
debugC(1, kHypnoDebugParser, "I J");
}
-#line 1679 "engines/hypno/grammar_arc.cpp"
+#line 1693 "engines/hypno/grammar_arc.cpp"
break;
- case 55: /* bline: ITOK NTOK */
-#line 310 "engines/hypno/grammar_arc.y"
+ case 56: /* bline: ITOK NTOK */
+#line 315 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == N
shoot->name = "N";
debugC(1, kHypnoDebugParser, "I N");
}
-#line 1688 "engines/hypno/grammar_arc.cpp"
+#line 1702 "engines/hypno/grammar_arc.cpp"
break;
- case 56: /* bline: ITOK OTOK */
-#line 314 "engines/hypno/grammar_arc.y"
+ case 57: /* bline: ITOK OTOK */
+#line 319 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == O
shoot->name = "O";
debugC(1, kHypnoDebugParser, "I O");
}
-#line 1697 "engines/hypno/grammar_arc.cpp"
+#line 1711 "engines/hypno/grammar_arc.cpp"
break;
- case 57: /* bline: ITOK PTOK */
-#line 318 "engines/hypno/grammar_arc.y"
+ case 58: /* bline: ITOK PTOK */
+#line 323 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == P
shoot->name = "P";
debugC(1, kHypnoDebugParser, "I P");
}
-#line 1706 "engines/hypno/grammar_arc.cpp"
+#line 1720 "engines/hypno/grammar_arc.cpp"
break;
- case 58: /* bline: ITOK QTOK */
-#line 322 "engines/hypno/grammar_arc.y"
+ case 59: /* bline: ITOK QTOK */
+#line 327 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == Q
shoot->name = "Q";
debugC(1, kHypnoDebugParser, "I Q");
}
-#line 1715 "engines/hypno/grammar_arc.cpp"
+#line 1729 "engines/hypno/grammar_arc.cpp"
break;
- case 59: /* bline: ITOK RTOK */
-#line 326 "engines/hypno/grammar_arc.y"
+ case 60: /* bline: ITOK RTOK */
+#line 331 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == R
shoot->name = "R";
debugC(1, kHypnoDebugParser, "I R");
}
-#line 1724 "engines/hypno/grammar_arc.cpp"
+#line 1738 "engines/hypno/grammar_arc.cpp"
break;
- case 60: /* bline: ITOK SNTOK */
-#line 330 "engines/hypno/grammar_arc.y"
+ case 61: /* bline: ITOK SNTOK */
+#line 335 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == S1
shoot->name = (yyvsp[0].s);
debugC(1, kHypnoDebugParser, "I %s", (yyvsp[0].s));
}
-#line 1733 "engines/hypno/grammar_arc.cpp"
+#line 1747 "engines/hypno/grammar_arc.cpp"
break;
- case 61: /* bline: ITOK TTOK */
-#line 334 "engines/hypno/grammar_arc.y"
+ case 62: /* bline: ITOK TTOK */
+#line 339 "engines/hypno/grammar_arc.y"
{ // Workaround for NAME == T
shoot->name = "T";
debugC(1, kHypnoDebugParser, "I T");
}
-#line 1742 "engines/hypno/grammar_arc.cpp"
+#line 1756 "engines/hypno/grammar_arc.cpp"
+ break;
+
+ case 63: /* bline: ITOK LTOK */
+#line 343 "engines/hypno/grammar_arc.y"
+ { // Workaround for NAME == L
+ shoot->name = "L";
+ debugC(1, kHypnoDebugParser, "I L");
+ }
+#line 1765 "engines/hypno/grammar_arc.cpp"
break;
- case 62: /* bline: JTOK NUM */
-#line 338 "engines/hypno/grammar_arc.y"
+ case 64: /* bline: JTOK NUM */
+#line 347 "engines/hypno/grammar_arc.y"
{
debugC(1, kHypnoDebugParser, "J %d", (yyvsp[0].i));
}
-#line 1750 "engines/hypno/grammar_arc.cpp"
+#line 1773 "engines/hypno/grammar_arc.cpp"
break;
- case 63: /* bline: A0TOK NUM NUM */
-#line 341 "engines/hypno/grammar_arc.y"
+ case 65: /* bline: A0TOK NUM NUM */
+#line 350 "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 1759 "engines/hypno/grammar_arc.cpp"
+#line 1782 "engines/hypno/grammar_arc.cpp"
break;
- case 64: /* bline: RTOK NUM NUM */
-#line 345 "engines/hypno/grammar_arc.y"
+ case 66: /* bline: RTOK NUM NUM */
+#line 354 "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 1769 "engines/hypno/grammar_arc.cpp"
+#line 1792 "engines/hypno/grammar_arc.cpp"
break;
- case 65: /* bline: R01TOK NUM NUM */
-#line 350 "engines/hypno/grammar_arc.y"
+ case 67: /* bline: R01TOK NUM NUM */
+#line 359 "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 1778 "engines/hypno/grammar_arc.cpp"
+#line 1801 "engines/hypno/grammar_arc.cpp"
break;
- case 66: /* bline: BNTOK NUM NUM */
-#line 354 "engines/hypno/grammar_arc.y"
+ case 68: /* bline: BNTOK NUM NUM */
+#line 363 "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 1788 "engines/hypno/grammar_arc.cpp"
+#line 1811 "engines/hypno/grammar_arc.cpp"
break;
- case 67: /* bline: KNTOK NUM NUM */
-#line 359 "engines/hypno/grammar_arc.y"
+ case 69: /* bline: KNTOK NUM NUM */
+#line 368 "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 1798 "engines/hypno/grammar_arc.cpp"
+#line 1821 "engines/hypno/grammar_arc.cpp"
break;
- case 68: /* bline: P0TOK NUM NUM */
-#line 364 "engines/hypno/grammar_arc.y"
+ case 70: /* bline: P0TOK NUM NUM */
+#line 373 "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 1807 "engines/hypno/grammar_arc.cpp"
+#line 1830 "engines/hypno/grammar_arc.cpp"
break;
- case 69: /* bline: OTOK NUM NUM */
-#line 368 "engines/hypno/grammar_arc.y"
+ case 71: /* bline: OTOK NUM NUM */
+#line 377 "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 1818 "engines/hypno/grammar_arc.cpp"
+#line 1841 "engines/hypno/grammar_arc.cpp"
break;
- case 70: /* bline: CTOK NUM */
-#line 374 "engines/hypno/grammar_arc.y"
+ case 72: /* bline: CTOK NUM */
+#line 383 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "C %d", (yyvsp[0].i)); }
-#line 1824 "engines/hypno/grammar_arc.cpp"
+#line 1847 "engines/hypno/grammar_arc.cpp"
break;
- case 71: /* bline: HTOK NUM */
-#line 375 "engines/hypno/grammar_arc.y"
+ case 73: /* bline: HTOK NUM */
+#line 384 "engines/hypno/grammar_arc.y"
{
shoot->attackFrames.push_back((yyvsp[0].i));
debugC(1, kHypnoDebugParser, "H %d", (yyvsp[0].i)); }
-#line 1832 "engines/hypno/grammar_arc.cpp"
+#line 1855 "engines/hypno/grammar_arc.cpp"
break;
- case 72: /* bline: VTOK NUM */
-#line 378 "engines/hypno/grammar_arc.y"
+ case 74: /* bline: VTOK NUM */
+#line 387 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "V %d", (yyvsp[0].i)); }
-#line 1838 "engines/hypno/grammar_arc.cpp"
+#line 1861 "engines/hypno/grammar_arc.cpp"
break;
- case 73: /* bline: WTOK NUM */
-#line 379 "engines/hypno/grammar_arc.y"
+ case 75: /* bline: WTOK NUM */
+#line 388 "engines/hypno/grammar_arc.y"
{
shoot->attackWeight = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "W %d", (yyvsp[0].i)); }
-#line 1846 "engines/hypno/grammar_arc.cpp"
+#line 1869 "engines/hypno/grammar_arc.cpp"
break;
- case 74: /* bline: DTOK NUM */
-#line 382 "engines/hypno/grammar_arc.y"
+ case 76: /* bline: DTOK NUM */
+#line 391 "engines/hypno/grammar_arc.y"
{
shoot->pointsToShoot = (yyvsp[0].i);
debugC(1, kHypnoDebugParser, "D %d", (yyvsp[0].i));
}
-#line 1855 "engines/hypno/grammar_arc.cpp"
+#line 1878 "engines/hypno/grammar_arc.cpp"
+ break;
+
+ case 77: /* bline: LTOK NUM NUM */
+#line 395 "engines/hypno/grammar_arc.y"
+ {
+ debugC(1, kHypnoDebugParser, "L %d %d", (yyvsp[-1].i), (yyvsp[0].i));
+ }
+#line 1886 "engines/hypno/grammar_arc.cpp"
break;
- case 75: /* bline: SNTOK FILENAME enc */
-#line 386 "engines/hypno/grammar_arc.y"
+ case 78: /* bline: SNTOK FILENAME enc */
+#line 398 "engines/hypno/grammar_arc.y"
{
if (Common::String("S1") == (yyvsp[-2].s))
shoot->deathSound = (yyvsp[-1].s);
@@ -1863,28 +1894,28 @@ yyreduce:
shoot->hitSound = (yyvsp[-1].s);
debugC(1, kHypnoDebugParser, "SN %s", (yyvsp[-1].s)); }
-#line 1867 "engines/hypno/grammar_arc.cpp"
+#line 1898 "engines/hypno/grammar_arc.cpp"
break;
- case 76: /* bline: NTOK */
-#line 393 "engines/hypno/grammar_arc.y"
+ case 79: /* bline: NTOK */
+#line 405 "engines/hypno/grammar_arc.y"
{ debugC(1, kHypnoDebugParser, "N"); }
-#line 1873 "engines/hypno/grammar_arc.cpp"
+#line 1904 "engines/hypno/grammar_arc.cpp"
break;
- case 77: /* bline: ZTOK */
-#line 394 "engines/hypno/grammar_arc.y"
+ case 80: /* bline: ZTOK */
+#line 406 "engines/hypno/grammar_arc.y"
{
g_parsedArc->shoots.push_back(*shoot);
//delete shoot;
//shoot = nullptr;
debugC(1, kHypnoDebugParser, "Z");
}
-#line 1884 "engines/hypno/grammar_arc.cpp"
+#line 1915 "engines/hypno/grammar_arc.cpp"
break;
-#line 1888 "engines/hypno/grammar_arc.cpp"
+#line 1919 "engines/hypno/grammar_arc.cpp"
default: break;
}
diff --git a/engines/hypno/grammar_arc.y b/engines/hypno/grammar_arc.y
index 523254598e9..85e8973b62f 100644
--- a/engines/hypno/grammar_arc.y
+++ b/engines/hypno/grammar_arc.y
@@ -60,7 +60,7 @@ using namespace Hypno;
%token<i> NUM BYTE
// header
%token COMMENT CTOK DTOK HTOK HETOK HLTOK H12TOK HUTOK RETTOK QTOK RESTOK
-%token PTOK FTOK TTOK TPTOK ATOK VTOK OTOK NTOK NSTOK RTOK R01TOK ITOK I1TOK JTOK ZTOK
+%token PTOK FTOK TTOK TPTOK ATOK VTOK OTOK LTOK NTOK NSTOK RTOK R01TOK ITOK I1TOK JTOK ZTOK
// body
%token NONETOK A0TOK P0TOK WTOK
@@ -232,6 +232,11 @@ hline: CTOK NUM {
g_parsedArc->segments.push_back(segment);
debugC(1, kHypnoDebugParser, "H P %d %d", $3, $4);
}
+ | HTOK LTOK NUM NUM { // Workaround for BYTE == P
+ Segment segment('L', $4, $3);
+ g_parsedArc->segments.push_back(segment);
+ debugC(1, kHypnoDebugParser, "H P %d %d", $3, $4);
+ }
| H12TOK BYTE NUM NUM {
Segment segment('P', $4, $3);
g_parsedArc->segments.push_back(segment);
@@ -335,6 +340,10 @@ bline: FNTOK FILENAME {
shoot->name = "T";
debugC(1, kHypnoDebugParser, "I T");
}
+ | ITOK LTOK { // Workaround for NAME == L
+ shoot->name = "L";
+ debugC(1, kHypnoDebugParser, "I L");
+ }
| JTOK NUM {
debugC(1, kHypnoDebugParser, "J %d", $2);
}
@@ -383,6 +392,9 @@ bline: FNTOK FILENAME {
shoot->pointsToShoot = $2;
debugC(1, kHypnoDebugParser, "D %d", $2);
}
+ | LTOK NUM NUM {
+ debugC(1, kHypnoDebugParser, "L %d %d", $2, $3);
+ }
| SNTOK FILENAME enc {
if (Common::String("S1") == $1)
shoot->deathSound = $2;
diff --git a/engines/hypno/lexer_arc.cpp b/engines/hypno/lexer_arc.cpp
index c0282dba904..2358f521601 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 46
-#define YY_END_OF_BUFFER 47
+#define YY_NUM_RULES 47
+#define YY_END_OF_BUFFER 48
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -642,16 +642,16 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[78] =
+static const flex_int16_t yy_accept[79] =
{ 0,
- 0, 0, 47, 45, 44, 42, 42, 45, 37, 37,
- 37, 37, 45, 10, 38, 2, 3, 38, 28, 8,
- 18, 20, 38, 14, 12, 9, 21, 16, 38, 25,
- 11, 23, 24, 38, 22, 38, 44, 37, 40, 37,
- 37, 37, 37, 0, 39, 30, 38, 31, 27, 7,
- 4, 5, 6, 19, 32, 15, 38, 13, 33, 17,
- 29, 26, 34, 38, 36, 36, 35, 35, 37, 43,
- 38, 0, 1, 0, 0, 41, 0
+ 0, 0, 48, 46, 45, 43, 43, 46, 38, 38,
+ 38, 38, 46, 10, 39, 2, 3, 39, 29, 8,
+ 19, 21, 39, 14, 15, 12, 9, 22, 17, 39,
+ 26, 11, 24, 25, 39, 23, 39, 45, 38, 41,
+ 38, 38, 38, 38, 0, 40, 31, 39, 32, 28,
+ 7, 4, 5, 6, 20, 33, 16, 39, 13, 34,
+ 18, 30, 27, 35, 39, 37, 37, 36, 36, 38,
+ 44, 39, 0, 1, 0, 0, 42, 0
} ;
static const YY_CHAR yy_ec[256] =
@@ -695,65 +695,65 @@ static const YY_CHAR yy_meta[45] =
4, 4, 4, 1
} ;
-static const flex_int16_t yy_base[84] =
+static const flex_int16_t yy_base[85] =
{ 0,
- 0, 0, 206, 207, 203, 207, 207, 36, 41, 46,
- 51, 56, 0, 62, 64, 196, 195, 186, 77, 83,
- 87, 181, 95, 91, 102, 92, 179, 105, 112, 84,
- 177, 175, 174, 90, 173, 0, 178, 125, 0, 130,
- 135, 124, 142, 174, 0, 168, 167, 166, 165, 164,
- 162, 157, 156, 155, 154, 207, 142, 153, 151, 150,
- 149, 148, 147, 0, 0, 207, 0, 207, 146, 150,
- 110, 142, 120, 117, 107, 207, 207, 188, 192, 194,
- 196, 74, 198
+ 0, 0, 207, 208, 204, 208, 208, 36, 41, 46,
+ 51, 56, 0, 62, 64, 197, 196, 195, 77, 83,
+ 87, 186, 95, 181, 91, 102, 92, 179, 105, 112,
+ 84, 177, 175, 174, 90, 173, 0, 178, 125, 0,
+ 130, 135, 124, 142, 174, 0, 168, 167, 166, 165,
+ 164, 162, 157, 156, 155, 154, 208, 142, 153, 151,
+ 150, 149, 148, 147, 0, 0, 208, 0, 208, 146,
+ 150, 110, 142, 120, 117, 107, 208, 208, 188, 192,
+ 194, 196, 74, 198
} ;
-static const flex_int16_t yy_def[84] =
+static const flex_int16_t yy_def[85] =
{ 0,
- 77, 1, 77, 77, 77, 77, 77, 77, 78, 78,
- 78, 78, 79, 80, 80, 80, 80, 80, 80, 80,
- 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
- 80, 80, 80, 81, 80, 82, 77, 77, 78, 78,
- 78, 41, 41, 79, 83, 80, 80, 80, 80, 80,
- 80, 80, 80, 80, 80, 77, 80, 80, 80, 80,
- 80, 80, 80, 82, 78, 77, 78, 77, 41, 79,
- 80, 77, 80, 77, 77, 77, 0, 77, 77, 77,
- 77, 77, 77
+ 78, 1, 78, 78, 78, 78, 78, 78, 79, 79,
+ 79, 79, 80, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 82, 81, 83, 78, 78, 79,
+ 79, 79, 42, 42, 80, 84, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 78, 81, 81, 81,
+ 81, 81, 81, 81, 83, 79, 78, 79, 78, 42,
+ 80, 81, 78, 81, 78, 78, 78, 0, 78, 78,
+ 78, 78, 78, 78
} ;
-static const flex_int16_t yy_nxt[252] =
+static const flex_int16_t yy_nxt[253] =
{ 0,
4, 5, 6, 7, 4, 4, 8, 4, 9, 10,
11, 12, 9, 13, 14, 15, 16, 17, 18, 19,
- 18, 20, 21, 22, 23, 18, 24, 25, 26, 27,
- 28, 29, 30, 18, 31, 32, 33, 34, 35, 36,
- 18, 18, 18, 7, 38, 38, 38, 38, 38, 40,
- 40, 40, 40, 40, 40, 41, 40, 40, 40, 40,
- 40, 42, 40, 40, 40, 40, 43, 40, 40, 45,
- 46, 45, 48, 48, 48, 48, 48, 64, 48, 48,
- 48, 48, 48, 48, 45, 49, 49, 49, 49, 49,
- 45, 45, 50, 50, 45, 56, 54, 45, 45, 45,
-
- 59, 51, 45, 55, 55, 55, 55, 55, 52, 45,
- 58, 58, 45, 60, 60, 76, 53, 45, 57, 45,
- 61, 61, 61, 61, 61, 75, 62, 45, 73, 47,
- 47, 47, 47, 38, 38, 38, 38, 38, 40, 40,
- 40, 40, 40, 40, 40, 40, 40, 40, 67, 45,
- 69, 72, 74, 70, 45, 45, 45, 45, 45, 65,
- 45, 45, 45, 45, 45, 67, 39, 68, 71, 45,
- 39, 45, 45, 45, 45, 45, 65, 70, 66, 37,
- 45, 45, 45, 39, 45, 77, 45, 39, 45, 77,
- 39, 39, 44, 45, 44, 44, 47, 47, 63, 63,
-
- 45, 45, 45, 45, 37, 77, 3, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77
+ 18, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 18, 32, 33, 34, 35, 36, 37,
+ 18, 18, 18, 7, 39, 39, 39, 39, 39, 41,
+ 41, 41, 41, 41, 41, 42, 41, 41, 41, 41,
+ 41, 43, 41, 41, 41, 41, 44, 41, 41, 46,
+ 47, 46, 49, 49, 49, 49, 49, 65, 49, 49,
+ 49, 49, 49, 49, 46, 50, 50, 50, 50, 50,
+ 46, 46, 51, 51, 46, 57, 55, 46, 46, 46,
+
+ 60, 52, 46, 56, 56, 56, 56, 56, 53, 46,
+ 59, 59, 46, 61, 61, 77, 54, 46, 58, 46,
+ 62, 62, 62, 62, 62, 76, 63, 46, 74, 48,
+ 48, 48, 48, 39, 39, 39, 39, 39, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41, 68, 46,
+ 70, 73, 75, 71, 46, 46, 46, 46, 46, 66,
+ 46, 46, 46, 46, 46, 68, 40, 69, 72, 46,
+ 40, 46, 46, 46, 46, 46, 66, 71, 67, 38,
+ 46, 46, 46, 40, 46, 78, 46, 40, 46, 78,
+ 40, 40, 45, 46, 45, 45, 48, 48, 64, 64,
+
+ 46, 46, 46, 46, 46, 38, 78, 3, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78
} ;
-static const flex_int16_t yy_chk[252] =
+static const flex_int16_t yy_chk[253] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -762,35 +762,35 @@ static const flex_int16_t yy_chk[252] =
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, 15, 15, 15, 15, 15, 15, 82, 15, 15,
+ 14, 15, 15, 15, 15, 15, 15, 83, 15, 15,
15, 15, 15, 15, 19, 19, 19, 19, 19, 19,
- 20, 30, 20, 20, 21, 24, 21, 34, 24, 26,
-
- 26, 20, 23, 23, 23, 23, 23, 23, 20, 25,
- 25, 25, 28, 28, 28, 75, 20, 71, 24, 29,
- 29, 29, 29, 29, 29, 74, 30, 73, 71, 34,
- 34, 34, 34, 38, 38, 38, 38, 38, 40, 40,
- 40, 40, 40, 41, 41, 41, 41, 41, 42, 57,
- 43, 69, 72, 70, 63, 62, 61, 60, 59, 41,
- 58, 55, 54, 53, 52, 42, 43, 42, 57, 51,
- 69, 50, 49, 48, 47, 46, 41, 44, 41, 37,
- 35, 33, 32, 43, 31, 43, 27, 69, 22, 69,
- 78, 78, 79, 18, 79, 79, 80, 80, 81, 81,
-
- 83, 83, 17, 16, 5, 3, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77
+ 20, 31, 20, 20, 21, 25, 21, 35, 25, 27,
+
+ 27, 20, 23, 23, 23, 23, 23, 23, 20, 26,
+ 26, 26, 29, 29, 29, 76, 20, 72, 25, 30,
+ 30, 30, 30, 30, 30, 75, 31, 74, 72, 35,
+ 35, 35, 35, 39, 39, 39, 39, 39, 41, 41,
+ 41, 41, 41, 42, 42, 42, 42, 42, 43, 58,
+ 44, 70, 73, 71, 64, 63, 62, 61, 60, 42,
+ 59, 56, 55, 54, 53, 43, 44, 43, 58, 52,
+ 70, 51, 50, 49, 48, 47, 42, 45, 42, 38,
+ 36, 34, 33, 44, 32, 44, 28, 70, 24, 70,
+ 79, 79, 80, 22, 80, 80, 81, 81, 82, 82,
+
+ 84, 84, 18, 17, 16, 5, 3, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78
} ;
/* Table of booleans, true if rule could match eol. */
-static const flex_int32_t yy_rule_can_match_eol[47] =
+static const flex_int32_t yy_rule_can_match_eol[48] =
{ 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, 1, 0, 0, 0, 0, };
static yy_state_type yy_last_accepting_state;
static char *yy_last_accepting_cpos;
@@ -1082,13 +1082,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 >= 78 )
+ if ( yy_current_state >= 79 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_current_state != 77 );
+ while ( yy_current_state != 78 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
@@ -1186,112 +1186,112 @@ HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ONTOK;
case 14:
YY_RULE_SETUP
#line 56 "engines/hypno/lexer_arc.l"
-return NTOK;
+return LTOK;
YY_BREAK
case 15:
YY_RULE_SETUP
#line 57 "engines/hypno/lexer_arc.l"
-return NSTOK;
+return NTOK;
YY_BREAK
case 16:
YY_RULE_SETUP
#line 58 "engines/hypno/lexer_arc.l"
-return RTOK;
+return NSTOK;
YY_BREAK
case 17:
YY_RULE_SETUP
#line 59 "engines/hypno/lexer_arc.l"
-return R01TOK;
+return RTOK;
YY_BREAK
case 18:
YY_RULE_SETUP
#line 60 "engines/hypno/lexer_arc.l"
-return ITOK;
+return R01TOK;
YY_BREAK
case 19:
YY_RULE_SETUP
#line 61 "engines/hypno/lexer_arc.l"
-return I1TOK;
+return ITOK;
YY_BREAK
case 20:
YY_RULE_SETUP
#line 62 "engines/hypno/lexer_arc.l"
-return JTOK;
+return I1TOK;
YY_BREAK
case 21:
YY_RULE_SETUP
#line 63 "engines/hypno/lexer_arc.l"
-return QTOK;
+return JTOK;
YY_BREAK
case 22:
YY_RULE_SETUP
#line 64 "engines/hypno/lexer_arc.l"
-return ZTOK;
+return QTOK;
YY_BREAK
case 23:
YY_RULE_SETUP
#line 65 "engines/hypno/lexer_arc.l"
-return WTOK;
+return ZTOK;
YY_BREAK
case 24:
YY_RULE_SETUP
#line 66 "engines/hypno/lexer_arc.l"
-return XTOK;
+return WTOK;
YY_BREAK
case 25:
YY_RULE_SETUP
#line 67 "engines/hypno/lexer_arc.l"
-return TTOK;
+return XTOK;
YY_BREAK
case 26:
YY_RULE_SETUP
#line 68 "engines/hypno/lexer_arc.l"
-return TPTOK;
+return TTOK;
YY_BREAK
case 27:
YY_RULE_SETUP
#line 69 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FNTOK;
+return TPTOK;
YY_BREAK
case 28:
YY_RULE_SETUP
#line 70 "engines/hypno/lexer_arc.l"
-return FTOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FNTOK;
YY_BREAK
case 29:
YY_RULE_SETUP
#line 71 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return SNTOK;
+return FTOK;
YY_BREAK
case 30:
YY_RULE_SETUP
#line 72 "engines/hypno/lexer_arc.l"
-return A0TOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return SNTOK;
YY_BREAK
case 31:
YY_RULE_SETUP
#line 73 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return BNTOK;
+return A0TOK;
YY_BREAK
case 32:
YY_RULE_SETUP
#line 74 "engines/hypno/lexer_arc.l"
-return KNTOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return BNTOK;
YY_BREAK
case 33:
YY_RULE_SETUP
#line 75 "engines/hypno/lexer_arc.l"
-return P0TOK;
+return KNTOK;
YY_BREAK
case 34:
YY_RULE_SETUP
#line 76 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return YXTOK;
+return P0TOK;
YY_BREAK
case 35:
YY_RULE_SETUP
#line 77 "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 36:
YY_RULE_SETUP
@@ -1301,17 +1301,17 @@ HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ENCTOK;
case 37:
YY_RULE_SETUP
#line 79 "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 38:
YY_RULE_SETUP
#line 80 "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 39:
YY_RULE_SETUP
#line 81 "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 40:
YY_RULE_SETUP
@@ -1321,35 +1321,40 @@ HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
case 41:
YY_RULE_SETUP
#line 83 "engines/hypno/lexer_arc.l"
-return RESTOK;
+HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return FILENAME;
YY_BREAK
case 42:
-/* rule 42 can match eol */
YY_RULE_SETUP
#line 84 "engines/hypno/lexer_arc.l"
-return RETTOK;
+return RESTOK;
YY_BREAK
case 43:
+/* rule 43 can match eol */
YY_RULE_SETUP
#line 85 "engines/hypno/lexer_arc.l"
-/* ignore comment */
+return RETTOK;
YY_BREAK
case 44:
YY_RULE_SETUP
#line 86 "engines/hypno/lexer_arc.l"
-/* ignore whitespace */;
+/* ignore comment */
YY_BREAK
case 45:
YY_RULE_SETUP
#line 87 "engines/hypno/lexer_arc.l"
-HYPNO_ARC_lval.i = HYPNO_ARC_text[0]; return BYTE;
+/* ignore whitespace */;
YY_BREAK
case 46:
YY_RULE_SETUP
#line 88 "engines/hypno/lexer_arc.l"
+HYPNO_ARC_lval.i = HYPNO_ARC_text[0]; return BYTE;
+ YY_BREAK
+case 47:
+YY_RULE_SETUP
+#line 89 "engines/hypno/lexer_arc.l"
ECHO;
YY_BREAK
-#line 1352 "engines/hypno/lexer_arc.cpp"
+#line 1357 "engines/hypno/lexer_arc.cpp"
case YY_STATE_EOF(INITIAL):
yyterminate();
@@ -1647,7 +1652,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 >= 78 )
+ if ( yy_current_state >= 79 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -1675,11 +1680,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 >= 78 )
+ if ( yy_current_state >= 79 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 77);
+ yy_is_jam = (yy_current_state == 78);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -2326,7 +2331,7 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 88 "engines/hypno/lexer_arc.l"
+#line 89 "engines/hypno/lexer_arc.l"
namespace Hypno {
diff --git a/engines/hypno/lexer_arc.l b/engines/hypno/lexer_arc.l
index e0aafb8020f..801082e1b60 100644
--- a/engines/hypno/lexer_arc.l
+++ b/engines/hypno/lexer_arc.l
@@ -53,6 +53,7 @@ A return ATOK;
V return VTOK;
O return OTOK;
O[0-1] HYPNO_ARC_lval.s = scumm_strdup(HYPNO_ARC_text); return ONTOK;
+L return LTOK;
N return NTOK;
N\* return NSTOK;
R return RTOK;
diff --git a/engines/hypno/tokens_arc.h b/engines/hypno/tokens_arc.h
index 80b175db597..f44ce29257b 100644
--- a/engines/hypno/tokens_arc.h
+++ b/engines/hypno/tokens_arc.h
@@ -91,21 +91,22 @@ extern int HYPNO_ARC_debug;
ATOK = 284, /* ATOK */
VTOK = 285, /* VTOK */
OTOK = 286, /* OTOK */
- NTOK = 287, /* NTOK */
- NSTOK = 288, /* NSTOK */
- RTOK = 289, /* RTOK */
- R01TOK = 290, /* R01TOK */
- ITOK = 291, /* ITOK */
- I1TOK = 292, /* I1TOK */
- JTOK = 293, /* JTOK */
- ZTOK = 294, /* ZTOK */
- NONETOK = 295, /* NONETOK */
- A0TOK = 296, /* A0TOK */
- P0TOK = 297, /* P0TOK */
- WTOK = 298, /* WTOK */
- XTOK = 299, /* XTOK */
- CB3TOK = 300, /* CB3TOK */
- C02TOK = 301 /* C02TOK */
+ LTOK = 287, /* LTOK */
+ NTOK = 288, /* NTOK */
+ NSTOK = 289, /* NSTOK */
+ RTOK = 290, /* RTOK */
+ R01TOK = 291, /* R01TOK */
+ ITOK = 292, /* ITOK */
+ I1TOK = 293, /* I1TOK */
+ JTOK = 294, /* JTOK */
+ ZTOK = 295, /* ZTOK */
+ NONETOK = 296, /* NONETOK */
+ A0TOK = 297, /* A0TOK */
+ P0TOK = 298, /* P0TOK */
+ WTOK = 299, /* WTOK */
+ XTOK = 300, /* XTOK */
+ CB3TOK = 301, /* CB3TOK */
+ C02TOK = 302 /* C02TOK */
};
typedef enum HYPNO_ARC_tokentype HYPNO_ARC_token_kind_t;
#endif
@@ -119,7 +120,7 @@ union HYPNO_ARC_STYPE
char *s; /* string value */
int i; /* integer value */
-#line 123 "engines/hypno/tokens_arc.h"
+#line 124 "engines/hypno/tokens_arc.h"
};
typedef union HYPNO_ARC_STYPE HYPNO_ARC_STYPE;
diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index a156792c113..60bc339ce22 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -310,9 +310,9 @@ void WetEngine::loadAssetsFullGame() {
loadArcadeLevel("c441.mi_", "c51", "<check_lives>", "");
loadArcadeLevel("c442.mi_", "c51", "<check_lives>", "");
- //loadArcadeLevel("c400.mi_", "???", "");
- //loadArcadeLevel("c401.mi_", "???", "");
- //loadArcadeLevel("c402.mi_", "???", "");
+ loadArcadeLevel("c400.mi_", "c51", "<check_lives>", "");
+ loadArcadeLevel("c401.mi_", "c51", "<check_lives>", "");
+ loadArcadeLevel("c402.mi_", "c51", "<check_lives>", "");
loadArcadeLevel("c510.mi_", "c52", "<check_lives>", "");
loadArcadeLevel("c511.mi_", "c52", "<check_lives>", "");
@@ -326,8 +326,13 @@ void WetEngine::loadAssetsFullGame() {
ArcadeShooting *arc = (ArcadeShooting*) _levels["c500.mi_"];
arc->id = 50; // Fixed from the original (5)
- //loadArcadeLevel("c501.mi_", "???", "");
- //loadArcadeLevel("c502.mi_", "???", "");
+ loadArcadeLevel("c501.mi_", "c61", "<check_lives>", "");
+ arc = (ArcadeShooting*) _levels["c501.mi_"];
+ arc->id = 50; // Fixed from the original (5)
+
+ loadArcadeLevel("c502.mi_", "c61", "<check_lives>", "");
+ arc = (ArcadeShooting*) _levels["c502.mi_"];
+ arc->id = 50; // Fixed from the original (5)
loadArcadeLevel("c610.mi_", "c60", "<check_lives>", "");
loadArcadeLevel("c611.mi_", "c60", "<check_lives>", "");
Commit: 5e6c3af2b3cad0c4f8afaaa21f080310b9524b05
https://github.com/scummvm/scummvm/commit/5e6c3af2b3cad0c4f8afaaa21f080310b9524b05
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-02-24T18:12:29+01:00
Commit Message:
HYPNO: refactor runBeforeArcade code to include image flipping, if necessary
Changed paths:
engines/hypno/arcade.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 96bd0420a2d..6e72049aa69 100644
--- a/engines/hypno/arcade.cpp
+++ b/engines/hypno/arcade.cpp
@@ -186,31 +186,8 @@ void HypnoEngine::runArcade(ArcadeShooting *arc) {
debugC(1, kHypnoDebugArcade, "Starting segment of type %x", segments[_segmentIdx].type);
changeCursor("arcade");
_shoots.clear();
- if (!arc->player.empty())
- _playerFrames = decodeFrames(arc->player);
- _playerFrameSep = 0;
- // Only used in spider
- _currentPlayerPosition = kPlayerLeft;
- _lastPlayerPosition = kPlayerLeft;
_skipLevel = false;
- 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++;
- }
-
- if (_playerFrameSep == (int)_playerFrames.size()) {
- 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);
-
- _playerFrameIdx = -1;
-
MVideo background = MVideo(arc->backgroundVideo, Common::Point(0, 0), false, false, false);
changeCursor("arcade");
diff --git a/engines/hypno/hypno.h b/engines/hypno/hypno.h
index 9ff9ed7f483..c85e758437f 100644
--- a/engines/hypno/hypno.h
+++ b/engines/hypno/hypno.h
@@ -337,6 +337,8 @@ public:
void drawHealth() override;
void hitPlayer() override;
+ // Arcade
+ void runBeforeArcade(ArcadeShooting *arc) override;
void findNextSegment(ArcadeShooting *arc) override;
void initSegment(ArcadeShooting *arc) override;
bool checkArcadeLevelCompleted(MVideo &background, Segment segment) override;
diff --git a/engines/hypno/spider/arcade.cpp b/engines/hypno/spider/arcade.cpp
index cfb30704840..b32732f1370 100644
--- a/engines/hypno/spider/arcade.cpp
+++ b/engines/hypno/spider/arcade.cpp
@@ -33,6 +33,30 @@ static const int oIndexYE[9] = {4, 3, 2, 1, 0};
static const int shootOriginIndex[9][2] = {
{41, 3}, {51, 3}, {65, 6}, {68, 9}, {71, 22}, {57, 20}, {37, 14}, {37, 11}, {57, 20}};
+void SpiderEngine::runBeforeArcade(ArcadeShooting *arc) {
+ assert(!arc->player.empty());
+ _playerFrames = decodeFrames(arc->player);
+ _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++;
+ }
+
+ if (_playerFrameSep == (int)_playerFrames.size()) {
+ debugC(1, kHypnoDebugArcade, "No player separator frame found in %s! (size: %d)", arc->player.c_str(), _playerFrames.size());
+ } else
+ debugC(1, kHypnoDebugArcade, "Separator frame found at %d", _playerFrameSep);
+
+ _playerFrameIdx = -1;
+ _currentPlayerPosition = kPlayerLeft;
+ _lastPlayerPosition = kPlayerLeft;
+}
+
void SpiderEngine::initSegment(ArcadeShooting *arc) {
_segmentShootSequenceOffset = 0;
_segmentShootSequenceMax = 0;
diff --git a/engines/hypno/wet/arcade.cpp b/engines/hypno/wet/arcade.cpp
index 58c9ecca581..6525c2d0b9a 100644
--- a/engines/hypno/wet/arcade.cpp
+++ b/engines/hypno/wet/arcade.cpp
@@ -195,6 +195,41 @@ void WetEngine::runBeforeArcade(ArcadeShooting *arc) {
runIntro(*video);
delete video;
}
+
+ if (!arc->player.empty()) {
+ _playerFrames = decodeFrames(arc->player);
+ }
+
+ if (arc->mode == "Y5") { // This image is flipped, for some reason
+ for (Frames::iterator it = _playerFrames.begin(); it != _playerFrames.end(); ++it) {
+ for (int i = 0 ; i < (*it)->w ; i++)
+ for (int j = 0 ; j < (*it)->h/2 ; j++) {
+ uint32 p1 = (*it)->getPixel(i, j);
+ uint32 p2 = (*it)->getPixel(i, (*it)->h - j - 1);
+ (*it)->setPixel(i, j, p2);
+ (*it)->setPixel(i, (*it)->h - j - 1, p1);
+ }
+ }
+ }
+
+ _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++;
+ }
+
+ if (_playerFrameSep == (int)_playerFrames.size()) {
+ 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);
+
+ _playerFrameIdx = -1;
}
bool WetEngine::clickedSecondaryShoot(const Common::Point &mousePos) {
Commit: ebe066bcb5e6d5823f7fb6eff520e7988ba56a6a
https://github.com/scummvm/scummvm/commit/ebe066bcb5e6d5823f7fb6eff520e7988ba56a6a
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-02-24T18:12:30+01:00
Commit Message:
HYPNO: fixed c400.mi_ id from the original in wet
Changed paths:
engines/hypno/wet/wet.cpp
diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index 60bc339ce22..05e6bbfda05 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -41,6 +41,7 @@ static const chapterEntry rawChapterTable[] = {
{42, {70, 160}, {180, 160}, {220, 185}}, // c42
{43, {70, 160}, {180, 160}, {220, 185}}, // c43
{44, {70, 160}, {180, 160}, {220, 185}}, // c44
+ {40, {70, 160}, {180, 160}, {220, 185}}, // c40
{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)
@@ -311,6 +312,9 @@ void WetEngine::loadAssetsFullGame() {
loadArcadeLevel("c442.mi_", "c51", "<check_lives>", "");
loadArcadeLevel("c400.mi_", "c51", "<check_lives>", "");
+ ArcadeShooting *arc = (ArcadeShooting*) _levels["c400.mi_"];
+ arc->id = 40; // Fixed from the original (4)
+
loadArcadeLevel("c401.mi_", "c51", "<check_lives>", "");
loadArcadeLevel("c402.mi_", "c51", "<check_lives>", "");
@@ -323,7 +327,7 @@ void WetEngine::loadAssetsFullGame() {
loadArcadeLevel("c522.mi_", "c61", "<check_lives>", "");
loadArcadeLevel("c500.mi_", "c61", "<check_lives>", "");
- ArcadeShooting *arc = (ArcadeShooting*) _levels["c500.mi_"];
+ arc = (ArcadeShooting*) _levels["c500.mi_"];
arc->id = 50; // Fixed from the original (5)
loadArcadeLevel("c501.mi_", "c61", "<check_lives>", "");
@@ -345,7 +349,7 @@ void WetEngine::loadAssetsFullGame() {
loadLib("", "c_misc/fonts.lib", true);
loadFonts();
loadLib("sound/", "c_misc/sound.lib", true);
- _nextLevel = "<start>";
+ _nextLevel = "c400.mi_";
}
void WetEngine::showCredits() {
Commit: dddf26620b7fbb504cd290cf0917651dbb60e0bf
https://github.com/scummvm/scummvm/commit/dddf26620b7fbb504cd290cf0917651dbb60e0bf
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-02-24T18:12:30+01:00
Commit Message:
HYPNO: fixed ids from c401.mi_ and c402.mi_ in wet
Changed paths:
engines/hypno/wet/wet.cpp
diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index 05e6bbfda05..94ff26e0423 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -316,7 +316,12 @@ void WetEngine::loadAssetsFullGame() {
arc->id = 40; // Fixed from the original (4)
loadArcadeLevel("c401.mi_", "c51", "<check_lives>", "");
+ arc = (ArcadeShooting*) _levels["c401.mi_"];
+ arc->id = 40; // Fixed from the original (4)
+
loadArcadeLevel("c402.mi_", "c51", "<check_lives>", "");
+ arc = (ArcadeShooting*) _levels["c402.mi_"];
+ arc->id = 40; // Fixed from the original (4)
loadArcadeLevel("c510.mi_", "c52", "<check_lives>", "");
loadArcadeLevel("c511.mi_", "c52", "<check_lives>", "");
@@ -349,7 +354,7 @@ void WetEngine::loadAssetsFullGame() {
loadLib("", "c_misc/fonts.lib", true);
loadFonts();
loadLib("sound/", "c_misc/sound.lib", true);
- _nextLevel = "c400.mi_";
+ _nextLevel = "<start>";
}
void WetEngine::showCredits() {
Commit: 26463305d983bbf4404d18a4d6c2fe34687a41c1
https://github.com/scummvm/scummvm/commit/26463305d983bbf4404d18a4d6c2fe34687a41c1
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-02-24T18:12:30+01:00
Commit Message:
HYPNO: allow c40 levels to load player images in wet
Changed paths:
engines/hypno/wet/arcade.cpp
diff --git a/engines/hypno/wet/arcade.cpp b/engines/hypno/wet/arcade.cpp
index 6525c2d0b9a..35e069c8625 100644
--- a/engines/hypno/wet/arcade.cpp
+++ b/engines/hypno/wet/arcade.cpp
@@ -200,7 +200,7 @@ void WetEngine::runBeforeArcade(ArcadeShooting *arc) {
_playerFrames = decodeFrames(arc->player);
}
- if (arc->mode == "Y5") { // This image is flipped, for some reason
+ if (arc->mode == "Y4" || arc->mode == "Y5") { // These images are flipped, for some reason
for (Frames::iterator it = _playerFrames.begin(); it != _playerFrames.end(); ++it) {
for (int i = 0 ; i < (*it)->w ; i++)
for (int j = 0 ; j < (*it)->h/2 ; j++) {
@@ -237,7 +237,7 @@ bool WetEngine::clickedSecondaryShoot(const Common::Point &mousePos) {
}
void WetEngine::hitPlayer() {
- if (_arcadeMode != "Y1" && _arcadeMode != "Y5") {
+ if (_arcadeMode != "Y1" && _arcadeMode != "Y4" && _arcadeMode != "Y5") {
assert( _playerFrameSep < (int)_playerFrames.size());
if (_playerFrameIdx < _playerFrameSep)
_playerFrameIdx = _playerFrameSep;
@@ -288,6 +288,8 @@ void WetEngine::drawPlayer() {
if (_arcadeMode == "Y5")
_playerFrameIdx = 1;
+ else if (_arcadeMode == "Y4")
+ _playerFrameIdx = 2;
drawImage(*_playerFrames[_playerFrameIdx], 0, 200 - _playerFrames[_playerFrameIdx]->h + 1, true);
}
Commit: 7d788fefa7f8e72c93d5b1d368b24fd06b453c0c
https://github.com/scummvm/scummvm/commit/7d788fefa7f8e72c93d5b1d368b24fd06b453c0c
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-02-24T18:12:30+01:00
Commit Message:
HYPNO: avoid crashing on level c30 in wet
Changed paths:
engines/hypno/wet/arcade.cpp
engines/hypno/wet/wet.cpp
diff --git a/engines/hypno/wet/arcade.cpp b/engines/hypno/wet/arcade.cpp
index 35e069c8625..253a4623926 100644
--- a/engines/hypno/wet/arcade.cpp
+++ b/engines/hypno/wet/arcade.cpp
@@ -237,7 +237,7 @@ bool WetEngine::clickedSecondaryShoot(const Common::Point &mousePos) {
}
void WetEngine::hitPlayer() {
- if (_arcadeMode != "Y1" && _arcadeMode != "Y4" && _arcadeMode != "Y5") {
+ if (_arcadeMode != "Y1" && _arcadeMode != "Y3" && _arcadeMode != "Y4" && _arcadeMode != "Y5") {
assert( _playerFrameSep < (int)_playerFrames.size());
if (_playerFrameIdx < _playerFrameSep)
_playerFrameIdx = _playerFrameSep;
@@ -274,7 +274,7 @@ void WetEngine::drawPlayer() {
if (i > 0)
drawString("block05.fgx", "TARGET ACQUIRED", 116, 3, 80, c);
- if (_arcadeMode == "Y1")
+ if (_arcadeMode == "Y1" || _arcadeMode == "Y3")
return;
if (_playerFrameIdx < _playerFrameSep) {
diff --git a/engines/hypno/wet/wet.cpp b/engines/hypno/wet/wet.cpp
index 94ff26e0423..ce55d421bb5 100644
--- a/engines/hypno/wet/wet.cpp
+++ b/engines/hypno/wet/wet.cpp
@@ -37,6 +37,7 @@ static const chapterEntry rawChapterTable[] = {
{31, {70, 160}, {180, 160}, {220, 185}}, // c31
{32, {70, 160}, {180, 160}, {220, 185}}, // c32
{33, {70, 160}, {180, 160}, {220, 185}}, // c33
+ {30, {19, 3}, {246, 3}, {246, 11}}, // c30
{41, {70, 160}, {180, 160}, {220, 185}}, // c41
{42, {70, 160}, {180, 160}, {220, 185}}, // c42
{43, {70, 160}, {180, 160}, {220, 185}}, // c43
@@ -292,6 +293,9 @@ void WetEngine::loadAssetsFullGame() {
loadArcadeLevel("c332.mi_", "c30", "<check_lives>", "");
loadArcadeLevel("c300.mi_", "c41", "<check_lives>", "");
+ ArcadeShooting *arc = (ArcadeShooting*) _levels["c300.mi_"];
+ arc->id = 30; // Fixed from the original (3)
+
loadArcadeLevel("c301.mi_", "c41", "<check_lives>", "");
loadArcadeLevel("c302.mi_", "c41", "<check_lives>", "");
@@ -312,7 +316,7 @@ void WetEngine::loadAssetsFullGame() {
loadArcadeLevel("c442.mi_", "c51", "<check_lives>", "");
loadArcadeLevel("c400.mi_", "c51", "<check_lives>", "");
- ArcadeShooting *arc = (ArcadeShooting*) _levels["c400.mi_"];
+ arc = (ArcadeShooting*) _levels["c400.mi_"];
arc->id = 40; // Fixed from the original (4)
loadArcadeLevel("c401.mi_", "c51", "<check_lives>", "");
More information about the Scummvm-git-logs
mailing list