- int GetStretchY;
-
- GetStretchY = StretchWidth * (si / FieldWidth);
-
- return GetStretchY;
-}
-
-void OLD_ReadLevel()
-{
-#if 1
- static char CurPathTEST[1024];
-#endif
-
- // int FNum;
- FILE *FNum;
- long i;
- // byte T;
-
-#if 1
- // CurPath = "/home/aeglos/projects/rocksndiamonds/levels/TEST_supaplex/supaplex/levels.dat";
-
-#if 0
- CurPath = "/home/aeglos/projects/rocksndiamonds/supaplex_demo_JENS0001.sp";
- LevelNumber = 1;
-#else
-
-#if 0
- // sprintf(CurPathTEST, "/home/aeglos/projects/rocksndiamonds/levels/TEST_supaplex/test_solutions/%03d.sp", level_nr);
-
- sprintf(CurPathTEST, "/home/aeglos/projects/Level_Stuff/SUPAPLEX/SUPAPLEX_LEVELS/Set77/77S%03d.SP", level_nr);
-#else
- sprintf(CurPathTEST, "/home/aeglos/projects/Level_Stuff/SUPAPLEX/SUPAPLEX_LEVELS/solve00/JENS%04d.SP", level_nr);
-#endif
-
- CurPath = CurPathTEST;
- LevelNumber = level_nr;
-#endif
-
-#endif
-
- DemoAvailable = False;
-
- if (STRING_IS_LIKE(CurPath, "*.mpx") ||
- STRING_IS_LIKE(CurPath, "*.MPX"))
- {
- printf("::: reading MPX file ...\n");
-
- ReadMPX();
- return;
- }
-
- if (STRING_IS_LIKE(CurPath, "*.sp") ||
- STRING_IS_LIKE(CurPath, "*.SP"))
- {
- printf("::: reading SP file ...\n");
-
- ReadDemo();
- return;
- }
-
- if (DemoFlag != 0)
- {
- printf("::: reading demo file ...\n");
-
- ReadDemo();
- return;
- }
-
- printf("::: reading level file ...\n");
-
- FileMax = 0;
- FieldWidth = 60;
- FieldHeight = 24;
- HeaderSize = 96;
-
- FieldMax = (FieldWidth * FieldHeight) + HeaderSize - 1;
- LevelMax = (FieldWidth * FieldHeight) - 1;
-
- PlayField8 = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
- DisPlayField = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
-
- // FNum = FreeFile();
-
- // --- On Error GoTo ReadLevelEH
-
- printf("::: '%s', %d\n", CurPath, LevelNumber);
-
- FNum = fopen(CurPath, "rb");
-
- i = (LevelNumber - 1) * ((long)(FieldMax) + 1) + 1;
-#if 1
- FILE_GET(FNum, i, PlayField8, FieldMax + 1);
-#else
- FILE_GET(FNum, i, &PlayField8, sizeof(PlayField8));
-#endif
-
- i = (LevelNumber) * ((long)(FieldMax) + 1) + 1 - HeaderSize;
- FILE_GET(FNum, i, &LInfo, sizeof(LInfo)); // store level info in an extra structure
-
- fclose(FNum);
-
- // --- On Error GoTo 0
-
- if (FieldMax < FileMax)
- DemoAvailable = True;
-
- ReadSignature();
-
- PlayField16 = REDIM_1D(sizeof(int), -FieldWidth, FieldMax);
-
- for (i = 0; i <= FieldMax; i++)
- {
- PlayField16[i] = PlayField8[i];
- DisPlayField[i] = PlayField8[i];
- PlayField8[i] = 0;
- }
-
-#if 0
- {
- int x, y;
-
- for (x = 0; x < 60; x++)
- printf("%02d.", x);
- printf("\n");
-
- for (x = 0; x < 60; x++)
- printf("...");
- printf("\n");
-
- for (y = 0; y < 24; y++)
- {
- for (x = 0; x < 60; x++)
- {
- printf("%02d.", PlayField16[y * 60 + x]);
- }
-
- printf("\n");
- }
- }
-#endif
-
- AnimationPosTable = REDIM_1D(sizeof(int), 0, LevelMax - 2 * FieldWidth);
- AnimationSubTable = REDIM_1D(sizeof(byte), 0, LevelMax - 2 * FieldWidth);
- TerminalState = REDIM_1D(sizeof(byte), FieldWidth, LevelMax - FieldWidth);
-
- GravityFlag = LInfo.InitialGravity;
- FreezeZonks = LInfo.InitialFreezeZonks;
-
- subRandomize();
-
- LevelLoaded = True;
-
- return;
-
-#if 0
-ReadLevelEH:
- Close();
-#endif
-}
-
-static void ReadDemo()
-{
- // int FNum, i;
- FILE *FNum;
- int i;
- // byte T;
-
- int RecordNumber = LevelNumber;
-
-#if 1
- RecordNumber = 1; // always "1" for "*.sp" style one level/demo files
-#endif
-
- FieldWidth = 60;
- FieldHeight = 24;
- HeaderSize = 96;
-
- FieldMax = (FieldWidth * FieldHeight) + HeaderSize - 1;
- LevelMax = (FieldWidth * FieldHeight) - 1;
-
- // --- On Error GoTo ReadDemoEH
-
- FileMax = FileLen(CurPath) - 1;
-
- PlayField8 = REDIM_1D(sizeof(byte), 0, FileMax + 1 - 1);
- DisPlayField = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
-
- // FNum = FreeFile();
-
- FNum = fopen(CurPath, "rb");
-
- i = (RecordNumber - 1) * ((long)(FieldMax) + 1) + 1;
-#if 1
- FILE_GET(FNum, i, PlayField8, FileMax + 1);
-#else
- FILE_GET(FNum, i, &PlayField8, sizeof(PlayField8));
-#endif
-
- i = (RecordNumber) * ((long)(FieldMax) + 1) + 1 - HeaderSize;
- FILE_GET(FNum, i, &LInfo, sizeof(LInfo)); // store level info in an extra structure
-
- fclose(FNum);
-
- // --- On Error GoTo 0
-
- if (FieldMax < FileMax)
- DemoAvailable = True;
-
- ReadSignature();
-
- PlayField16 = REDIM_1D(sizeof(int), -FieldWidth, FieldMax);
-
- for (i = 0; i <= FieldMax; i++)
- {
- PlayField16[i] = PlayField8[i];
- DisPlayField[i] = PlayField8[i];
- PlayField8[i] = 0;
- }
-
- AnimationPosTable = REDIM_1D(sizeof(int), 0, LevelMax - 2 * FieldWidth);
- AnimationSubTable = REDIM_1D(sizeof(byte), 0, LevelMax - 2 * FieldWidth);
- TerminalState = REDIM_1D(sizeof(byte), 0, FieldMax + 1 - 1);
-
- DemoPointer = FieldMax + 1;
- DemoOffset = DemoPointer;
- DemoKeyRepeatCounter = 0;
-
- // DemoFlag = 1
- // DemoAvailable = True
-
- GravityFlag = LInfo.InitialGravity;
- FreezeZonks = LInfo.InitialFreezeZonks;
-
-#if 0
- printf("::: Globals.c: ReadDemo(): %d / %d\n", GravityFlag, FreezeZonks);
-#endif
-
-
-
-#if 0
- /* !!! TESTING BIG / LITTLE ENDIAN STUFF !!! */
- LInfo.DemoRandomSeed =
- LowByte(LInfo.DemoRandomSeed) << 8 |
- HighByte(LInfo.DemoRandomSeed);
- for (i = 0; i < 10; i++)
- LInfo.SpecialPort[i].PortLocation =
- LowByte(LInfo.SpecialPort[i].PortLocation) << 8 |
- HighByte(LInfo.SpecialPort[i].PortLocation);
-
- printf("::: swapping file bytes for DemoRandomSeed etc.\n");
-#else
- printf("::: keeping file bytes in (maybe wrong) 'native' order.\n");
-#endif
-
-#if 1
- printf("::: LInfo.DemoRandomSeed == %d\n", LInfo.DemoRandomSeed);
-#endif
-
-#if 0
- printf("::: LInfo.SpecialPortCount == %d\n", LInfo.SpecialPortCount);
- for (i = 0; i < LInfo.SpecialPortCount; i++)
- {
- int port_x = (LInfo.SpecialPort[i].PortLocation / 2) % FieldWidth;
- int port_y = (LInfo.SpecialPort[i].PortLocation / 2) / FieldWidth;
-
- printf("::: %d: port_location == %d => (%d, %d)\n",
- i, LInfo.SpecialPort[i].PortLocation, port_x, port_y);
- }
-#endif
-
- RandomSeed = LInfo.DemoRandomSeed;
-
-#if 0
- printf("::: SpeedByte == %d\n", LInfo.SpeedByte);
- printf("::: CheckSumByte == %d\n", LInfo.CheckSumByte);
- printf("::: RandomSeed == %d\n", RandomSeed);
-
-#if 0
- {
- int i;
-
- for (i = 0; i < 10; i++)
- printf("::: TEST random number: %d\n", subGetRandomNumber());
- }
-#endif
-
-#endif
-
- LevelLoaded = True;
-
- return;
-
-#if 0
-ReadDemoEH:
- Close();
-#endif