#include "MainGameLoop.h"
-int GameLoopRunning;
boolean bPlaying;
-int LeadOutCounter, EnterRepeatCounter;
-int ForcedExitFlag;
+int LeadOutCounter;
int ExitToMenuFlag;
-int SavedGameFlag;
-boolean UserDragFlag;
boolean AutoScrollFlag;
void subMainGameLoop_Init()
{
- if (DemoFlag != 0)
- {
- // EP set level success byte: demo, not game
- WasDemoFlag = 1;
- EP_GameDemoVar0DAA = 0; // demo
- }
- else // loc_g_1836:
- {
- // EP set level success byte: game, not demo
- WasDemoFlag = 0;
- EP_GameDemoVar0DAA = 1; // game
- }
-
// This was a bug in the original Supaplex: sometimes red disks could not
// be released. This happened if Murphy was killed DURING a red disk release
// and the next try started.
RedDiskReleasePhase = 0; // (re-)enable red disk release
- UpdatedFlag = 0;
- GameLoopRunning = 1;
- LevelStatus = 0;
}
void subMainGameLoop_Main(byte action, boolean warp_mode)
// --------------------- START OF GAME-BUSY LOOP -----------------------------
// ---------------------------------------------------------------------------
- if (EndFlag)
- {
- // (should never happen)
-
- // printf("::: EndFlag == True\n");
-
- goto locExitMainGameLoop;
- }
-
subProcessKeyboardInput(action); // check keyboard, act on keys
// ---------------------------------------------------------------------------
subCalculateScreenScrollPos(); // calculate screen start addrs
- if ((! UserDragFlag) && AutoScrollFlag)
+ if (AutoScrollFlag)
ScrollTowards(ScreenScrollXPos, ScreenScrollYPos);
- if (ForcedExitFlag != 0) // Forced Exit?' yes--exit!
- {
- // (should never happen)
-
- // printf("::: ForcedExitFlag == True\n");
-
- goto locExitMainGameLoop;
- }
-
TimerVar = TimerVar + 1;
#if 1
// lead-out done: exit now
// ---------------------- END OF GAME-BUSY LOOP (including lead-out) ---------
+#if 0
locExitMainGameLoop:
+#endif
#if 1
printf("::: locExitMainGameLoop reached [%d]\n", LeadOutCounter);
void subCalculateScreenScrollPos()
{
- int ax, Ay;
+ int ax, ay;
#if 1
int jump_pos = TILEX / 2;
// printf("::: ExplosionShake [%d]\n", FrameCounter);
}
- {
- ax = MainForm.picPane.Width / 2;
- Ay = MainForm.picPane.Height / 2;
- }
+#if 1
+ ax = (SCR_FIELDX / 2) * TILESIZE;
+ ay = (SCR_FIELDY / 2) * TILESIZE;
- ScreenScrollXPos = Stretch * (MurphyScreenXPos + TILEX / 2) - ax;
- ScreenScrollYPos = Stretch * (MurphyScreenYPos + TILEY / 2) - Ay;
+ ScreenScrollXPos = MurphyScreenXPos - ax;
+ ScreenScrollYPos = MurphyScreenYPos - ay;
+#else
+ ax = SXSIZE / 2;
+ ay = SYSIZE / 2;
+
+ ScreenScrollXPos = (MurphyScreenXPos + TILEX / 2) - ax;
+ ScreenScrollYPos = (MurphyScreenYPos + TILEY / 2) - ay;
+#endif
}