X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_sp%2FGlobals.c;h=44affc03bb9ca1418dccc3888aadbd269e3f95fd;hb=310781167f731177d6d46b15093dc32606eeac4e;hp=e34d19624341f42236c2ee46c5c67343ca8d900b;hpb=e51177796149f37de339bda83558c3c49758be93;p=rocksndiamonds.git diff --git a/src/game_sp/Globals.c b/src/game_sp/Globals.c index e34d1962..44affc03 100644 --- a/src/game_sp/Globals.c +++ b/src/game_sp/Globals.c @@ -14,24 +14,13 @@ int FieldWidth; // standard size = 60 int FieldHeight; // standard size = 24 int HeaderSize; // standard size = 96 int FieldMax, LevelMax; -long FileMax; -#if 1 -int PlayField16[SP_MAX_PLAYFIELD_SIZE + SP_HEADER_SIZE]; -byte PlayField8[SP_MAX_PLAYFIELD_SIZE + SP_HEADER_SIZE]; -byte DisPlayField[SP_MAX_PLAYFIELD_SIZE + SP_HEADER_SIZE]; -#else int *PlayField16; byte *PlayField8; -byte *DisPlayField; -#endif +byte DisPlayField[SP_MAX_PLAYFIELD_SIZE + SP_HEADER_SIZE]; int TimerVar; -#if 1 short RandomSeed; -#else -int RandomSeed; -#endif int FreezeZonks; @@ -44,7 +33,7 @@ int MurphyPosIndex, MurphyXPos, MurphyYPos; int MurphyScreenXPos, MurphyScreenYPos; int MurphyExplodePos, SplitMoveFlag, RedDiskReleaseMurphyPos; int KillMurphyFlag, MurphyMoveCounter; -long YawnSleepCounter; +int YawnSleepCounter; int MurphyVarFaceLeft; int ScratchGravity, GravityFlag; int RedDiskReleaseFlag, MovingPictureSequencePhase; @@ -164,6 +153,8 @@ boolean isSnappingSequence(int sequence) void InitGlobals() { + InitPrecedingPlayfieldMemory(); + AutoScrollFlag = True; FreezeZonks = 0; LevelLoaded = False; @@ -175,16 +166,17 @@ void InitGlobals() bPlaying = False; menBorder = False; -#if 0 - /* these defaults will be changed after reading a Supaplex level file */ - PlayField8 = REDIM_1D(sizeof(byte), 0, FieldMax); - DisPlayField = REDIM_1D(sizeof(byte), 0, FieldMax); - PlayField16 = REDIM_1D(sizeof(int), 0, FieldMax); - - AnimationPosTable = REDIM_1D(sizeof(int), 0, LevelMax); - AnimationSubTable = REDIM_1D(sizeof(byte), 0, LevelMax); - TerminalState = REDIM_1D(sizeof(byte), 0, FieldMax); -#endif + /* add preceding playfield buffer (as large as preceding memory area) */ + PlayField16 = checked_calloc((game_sp.preceding_buffer_size + + SP_MAX_PLAYFIELD_SIZE + + SP_HEADER_SIZE) * sizeof(int)); + PlayField16 = &PlayField16[game_sp.preceding_buffer_size]; + + /* add preceding playfield buffer (as large as one playfield row) */ + PlayField8 = checked_calloc((SP_MAX_PLAYFIELD_WIDTH + + SP_MAX_PLAYFIELD_SIZE + + SP_HEADER_SIZE) * sizeof(byte)); + PlayField8 = &PlayField8[SP_MAX_PLAYFIELD_WIDTH]; } int GetSI(int X, int Y) @@ -216,26 +208,12 @@ void PrepareLevel() { copyInternalEngineVars_SP(); -#if 1 SetDisplayRegion(); SetScrollEdges(); -#endif LevelLoaded = True; } -#if 0 -void Trace(char *Source, char *Message) -{ - printf("::: Trace: Source == '%s', Message == '%s'\n", Source, Message); -} - -void ReportError(char *Source, char *Message) -{ - printf("::: ReportError: Source == '%s', Message == '%s'\n", Source, Message); -} -#endif - int Min(int A, int B) { return (A < B ? A : B);