{
char *preceding_playfield_memory[] =
{
- "95 89 95 89 95 89 95 89 95 89 3b 8a 3b 8a 3b 8a", // |..........;.;.;.|
- "3b 8a 3b 8a 3b 8a 3b 8a 3b 8a e8 8a e8 8a e8 8a", // |;.;.;.;.;.è.è.è.|
- "e8 8a e8 8a e8 8a e8 8a e8 8a b1 8b b1 8b b1 8b", // |è.è.è.è.è.±.±.±.|
- "b1 8b b1 8b b1 8b b1 8b b1 8b 85 8c 85 8c 85 8c", // |±.±.±.±.±.......|
- "85 8c 85 8c 85 8c 85 8c 85 8c 5b 8d 5b 8d 5b 8d", // |..........[.[.[.|
- "5b 8d 5b 8d 5b 8d 5b 8d 5b 8d 06 8e 06 8e 06 8e", // |[.[.[.[.[.......|
- "06 8e 06 8e 06 8e 06 8e 06 8e ac 8e ac 8e ac 8e", // |..........¬.¬.¬.|
- "ac 8e ac 8e ac 8e ac 8e ac 8e 59 8f 59 8f 59 8f", // |¬.¬.¬.¬.¬.Y.Y.Y.|
- "59 8f 59 8f 59 8f 59 8f 59 8f 00 00 70 13 00 00", // |Y.Y.Y.Y.Y...p...|
- "00 00 e8 17 00 00 00 00 00 00 69 38 00 00 00 00", // |..è.......i8....|
- "00 00 00 00 00 00 00 00 00 00 00 00 d0 86 00 00", // |............Ð...|
- "b2 34 00 00 00 00 00 00 00 00 8f 8b 1d 34 00 00", // |²4...........4..|
- "00 00 00 00 00 00 00 00 23 39 09 09 00 0c 00 08", // |........#9......|
- "00 58 00 00 00 00 00 25 77 06 7f 00 00 00 01 00", // |.X.....%w.......|
+ "95 89 95 89 95 89 3b 8a 3b 8a 3b 8a 3b 8a 3b 8a", // |......;.;.;.;.;.|
+ "3b 8a 3b 8a 3b 8a e8 8a e8 8a e8 8a e8 8a e8 8a", // |;.;.;.è.è.è.è.è.|
+ "e8 8a e8 8a e8 8a b1 8b b1 8b b1 8b b1 8b b1 8b", // |è.è.è.±.±.±.±.±.|
+ "b1 8b b1 8b b1 8b 85 8c 85 8c 85 8c 85 8c 85 8c", // |±.±.±...........|
+ "85 8c 85 8c 85 8c 5b 8d 5b 8d 5b 8d 5b 8d 5b 8d", // |......[.[.[.[.[.|
+ "5b 8d 5b 8d 5b 8d 06 8e 06 8e 06 8e 06 8e 06 8e", // |[.[.[...........|
+ "06 8e 06 8e 06 8e ac 8e ac 8e ac 8e ac 8e ac 8e", // |......¬.¬.¬.¬.¬.|
+ "ac 8e ac 8e ac 8e 59 8f 59 8f 59 8f 59 8f 59 8f", // |¬.¬.¬.Y.Y.Y.Y.Y.|
+ "59 8f 59 8f 59 8f 00 00 70 13 00 00 00 00 e8 17", // |Y.Y.Y...p.....è.|
+ "00 00 00 00 00 00 69 38 00 00 00 00 00 00 00 00", // |......i8........|
+ "00 00 00 00 00 00 00 00 d0 86 00 00 b2 34 00 00", // |........Ð...²4..|
+ "00 00 00 00 00 00 8f 8b 1d 34 00 00 00 00 00 00", // |.........4......|
+ "00 00 00 00 23 39 09 09 00 0c 00 08 00 58 00 00", // |....#9.......X..|
+ "00 00 00 25 77 06 7f 00 00 00 01 00 00 00 00 00", // |...%w...........|
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
- "00 00 00 00 00 00 00 00 00 00 00 00 00 ec 06 26", // |.............ì.&|
- "05 00 00 00 00 00 00 01 00 00 00 00 31 32 33 34", // |............1234|
- "35 36 37 38 39 30 2d 00 08 00 51 57 45 52 54 59", // |567890-...QWERTY|
- "55 49 4f 50 00 00 0a 00 41 53 44 46 47 48 4a 4b", // |UIOP....ASDFGHJK|
- "4c 00 00 00 00 00 5a 58 43 56 42 4e 4d 00 00 00", // |L.....ZXCVBNM...|
- "00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00", // |... ............|
+ "00 00 00 00 00 00 00 00 00 ec 06 26 05 00 00 00", // |.........ì.&....|
+ "00 00 00 01 00 00 00 00 31 32 33 34 35 36 37 38", // |........12345678|
+ "39 30 2d 00 08 00 51 57 45 52 54 59 55 49 4f 50", // |90-...QWERTYUIOP|
+ "00 00 0a 00 41 53 44 46 47 48 4a 4b 4c 00 00 00", // |....ASDFGHJKL...|
+ "00 00 5a 58 43 56 42 4e 4d 00 00 00 00 00 00 20", // |..ZXCVBNM...... |
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
- "00 00 00 00 00 00 00 00 00 00 2e 00 1e 00 31 00", // |..............1.|
- "14 00 39 00 1f 00 14 00 18 00 ff ff 01 00 01 4c", // |..9.......ÿÿ...L|
- "45 56 45 4c 53 2e 44 41 54 00 00 00 00 00 00 00", // |EVELS.DAT.......|
+ "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
+ "00 00 00 00 00 00 2e 00 1e 00 31 00 14 00 39 00", // |..........1...9.|
+ "1f 00 14 00 18 00 ff ff 01 00 01 4c 45 56 45 4c", // |......ÿÿ...LEVEL|
+ "53 2e 44 41 54 00 00 00 00 00 00 00 00 00 00 00", // |S.DAT...........|
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00", // |................|
- "00 00 00 00", // |.... |
NULL
};
- int i, x, y;
+ int preceding_buffer_size = 0;
int count;
+ int i, x, y;
+
+#if 1
+ for (i = 0; preceding_playfield_memory[i] != NULL; i++)
+ preceding_buffer_size += 8; /* eight 16-bit integer values */
+#endif
LInfo = native_sp_level.header;
PlayField8 = REDIM_1D(sizeof(byte), 0, FileMax + 1 - 1);
DisPlayField = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
-#if 0
- PlayField16 = REDIM_1D(sizeof(int), -FieldWidth, FieldMax);
+#if 1
+ PlayField16 = REDIM_1D(sizeof(int), -preceding_buffer_size, FieldMax);
#else
- PlayField16 = REDIM_1D(sizeof(int), -FieldWidth * 2, FieldMax);
+ PlayField16 = REDIM_1D(sizeof(int), -FieldWidth, FieldMax);
#endif
#if 1
-#if 1
- /* fill preceding playfield buffer zone with (indestructible) "hardware" */
- for (i = -FieldWidth * 2; i < -FieldWidth; i++)
- PlayField16[i] = 0x20;
-#endif
-
#if 0
/* fill preceding playfield buffer zone with (indestructible) "hardware" */
for (i = -FieldWidth; i < 0; i++)
PlayField16[i] = 0x20;
#endif
+#if 1
+ count = 0;
+ for (i = 0; preceding_playfield_memory[i] != NULL; i++)
+ {
+ char *s = preceding_playfield_memory[i];
+ boolean hi_byte = FALSE; /* little endian data => start with low byte */
+
+ while (s[0] != '\0' && s[1] != '\0')
+ {
+ int hi_nibble = s[0] - (s[0] > '9' ? 'a' - 10 : '0');
+ int lo_nibble = s[1] - (s[1] > '9' ? 'a' - 10 : '0');
+ int byte = (hi_nibble << 4) | lo_nibble;
+
+ if (hi_byte)
+ byte <<= 8;
+
+ PlayField16[-preceding_buffer_size + count] |= byte;
+
+ if (hi_byte)
+ count++;
+
+ hi_byte = !hi_byte;
+
+ s += 2;
+
+ while (*s == ' ')
+ s++;
+ }
+ }
+#endif
+
count = 0;
for (y = 0; y < native_sp_level.height; y++)
for (x = 0; x < native_sp_level.width; x++)
PlayField8[i] = 0;
}
+#if 0
+ {
+ static int x = 0;
+
+ if (x == 1)
+ {
+ printf("++++++++");
+ printf("----------\n");
+ for (i = 0; i < preceding_buffer_size + FieldMax; i++)
+ {
+ int x = PlayField16[-preceding_buffer_size + i];
+
+ printf("%c%c", x & 0xff, x >> 8);
+ }
+ printf("----------\n");
+ exit(0);
+ }
+
+ x++;
+ }
+#endif
+
#else
for (i = 0; y = 0; y < native_sp_level.height; y++)