X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fgame_sp%2FInitGameConditions.c;h=1641862ff1549041dde23437b1aeb378ce8392f1;hp=f1c0f2e14b44d8635d7958e9fb29ab93346d1d2b;hb=115ce6f2da1914d68b0fe0e5f9082973190dacdd;hpb=5ba7f2d9a3f07f342afdf215a3307d5487cb6d43 diff --git a/src/game_sp/InitGameConditions.c b/src/game_sp/InitGameConditions.c index f1c0f2e1..1641862f 100644 --- a/src/game_sp/InitGameConditions.c +++ b/src/game_sp/InitGameConditions.c @@ -4,61 +4,36 @@ #include "InitGameConditions.h" -static char *VB_Name = "modInitGameConditions"; -// --- Option Explicit // ========================================================================== // SUBROUTINE // Init game conditions (variables) // ========================================================================== -int subInitGameConditions() +void subInitGameConditions(void) { - int subInitGameConditions; - - bCapturePane = False; - - MurphyVar0DAC = MurphyYPos; - MurphyVar0DAE = MurphyXPos; MurphyVarFaceLeft = 0; - KillMurphyFlag = 0; // no "kill Murphy" + KillMurphyFlag = 0; // no "kill Murphy" ExitToMenuFlag = 0; - LeadOutCounter = 0; // quit flag: lead-out counter - RedDiskCount = 0; // Red disk counter - ShowRedDiskCounter = 0; // show-red-disk time-out - - YawnSleepCounter = 0; // Wake up sleeping Murphy - - data_h_0DA7 = 0xFF; - data_h_0DA8 = 0xFF; - data_h_0DA9 = 0xFF; - data_h_0D9E = 1; - data_h_0D9F = 0; - data_h_0DA0 = 0; - data_h_0DA1 = 0; - data_h_0DA2 = 0; - data_h_0DA4 = 0; - data_h_0DA5 = 0; - data_h_0DA6 = 0; - - ExplosionShake = 0; // Force explosion flag off + LeadOutCounter = 0; // quit flag: lead-out counter + RedDiskCount = 0; // Red disk counter + + YawnSleepCounter = 0; // Wake up sleeping Murphy + + ExplosionShake = 0; // Force explosion flag off + ExplosionShakeMurphy = 0; // Force explosion flag off TerminalMaxCycles = 0x7F; YellowDisksExploded = 0; TimerVar = 0; - // ShowPanel = 1 ' Force Panel on - // MainForm.PanelVisible = True; - EnterRepeatCounter = 0; // restart Enter repeat counter - SnikSnaksElectronsFrozen = 0; // Snik-Snaks and Electr. move! - - SplitMoveFlag = 0; // Reset Split-through-ports - RedDiskReleasePhase = 0; // (re-)enable red disk release - RedDiskReleaseMurphyPos = 0; // Red disk was released here + SnikSnaksElectronsFrozen = 0; // Snik-Snaks and Electrons move! - return subInitGameConditions; -} // subInitGameConditions + SplitMoveFlag = 0; // Reset Split-through-ports + RedDiskReleasePhase = 0; // (re-)enable red disk release + RedDiskReleaseMurphyPos = 0; // Red disk was released here +} // ========================================================================== @@ -66,67 +41,48 @@ int subInitGameConditions() // Locate Murphy and init location. // ========================================================================== -int InitMurphyPos() +void InitMurphyPos(void) { - int InitMurphyPos; - int si; - for (si = 0; si <= LevelMax - 1; si++) - { + for (si = 0; si < LevelMax; si++) if (PlayField16[si] == fiMurphy) break; - } InitMurphyPosB(si); - MurphyPosIndex = si; - return InitMurphyPos; -} // InitMurphyPos + MurphyPosIndex = si; +} -int InitMurphyPosB(int si) +void InitMurphyPosB(int si) { - int InitMurphyPosB; - - MurphyYPos = GetStretchY(si) / Stretch; - MurphyXPos = GetStretchX(si) / Stretch; - - MurphyScreenXPos = GetStretchX(si); // Murphy's screen x-position - MurphyScreenYPos = GetStretchY(si); // Murphy's screen y-position + MurphyScreenXPos = MurphyXPos = GetStretchX(si); // Murphy's screen x-position + MurphyScreenYPos = MurphyYPos = GetStretchY(si); // Murphy's screen y-position // To Do: draw Murphy in location ax - StretchedSprites.BltEx(MurphyScreenXPos, MurphyScreenYPos, fiMurphy); - - MurphyScreenXPos = MurphyScreenXPos / Stretch; - MurphyScreenYPos = MurphyScreenYPos / Stretch; + DDSpriteBuffer_BltImg(MurphyScreenXPos, MurphyScreenYPos, aniMurphy, 0); subCalculateScreenScrollPos(); // calculate screen start addrs + if (AutoScrollFlag) { if (bPlaying) - { SoftScrollTo(ScreenScrollXPos, ScreenScrollYPos, 1000, 25); - } else - { ScrollTo(ScreenScrollXPos, ScreenScrollYPos); - } } +} - return InitMurphyPosB; -} // InitMurphyPosB // ========================================================================== // SUBROUTINE // Convert to easy symbols and reset Infotron count If not ThenVer62 // ========================================================================== -int subConvertToEasySymbols() +int subConvertToEasySymbols(void) { - int subConvertToEasySymbols; - - int ax, bx, cx, dx, di, X, Y, i; - int ah, bh, ch, dh, al, bl, cl, dl, ZF; + int ax, bx, cx, dx, i; + int al; bx = 0; dx = 0; @@ -245,31 +201,23 @@ loc_g_2778: if (0 < cx) // Until all done 'loc_g_2782: goto loc_g_26C9; - subConvertToEasySymbols = dx; // return InfotronCount + return dx; // return InfotronCount +} - return subConvertToEasySymbols; -} // subConvertToEasySymbols // ========================================================================== // SUBROUTINE // Reset Infotron count. Call immediately after subConvertToEasySymbols // ========================================================================== -int ResetInfotronsNeeded(int dx) +void ResetInfotronsNeeded(int dx) { - int ResetInfotronsNeeded; - - if (LInfo.InfotronsNeeded != 0) // Jump If equal (autodetect) - { + if (LInfo.InfotronsNeeded != 0) // Jump If equal (autodetect) dx = LInfo.InfotronsNeeded; - } // loc_g_278D: - - InfotronsNeeded = LowByte(dx); // Remaining Infotrons needed - TotalInfotronsNeeded = InfotronsNeeded; // Number of Infotrons needed - subDisplayInfotronsNeeded(); - return ResetInfotronsNeeded; -} // ResetInfotronsNeeded + InfotronsNeeded = LowByte(dx); // Remaining Infotrons needed + TotalInfotronsNeeded = InfotronsNeeded; // Number of Infotrons needed +} // ========================================================================== @@ -277,94 +225,35 @@ int ResetInfotronsNeeded(int dx) // Fetch and initialize a level // ========================================================================== -int subFetchAndInitLevelB() +void subFetchAndInitLevelB(void) { - int subFetchAndInitLevelB; + subFetchAndInitLevelA(); +} - boolean UpdatePlayTime; - - MovLowByte(&data_SPtorunavail, 0); // no SP file - data_scr_demo = 0; - UpdatePlayTime = (0 == demo_stopped ? True : True); - demo_stopped = 0; - subFetchAndInitLevelA(UpdatePlayTime); - - return subFetchAndInitLevelB; -} // subFetchAndInitLevelb - -int subFetchAndInitLevelA(boolean UpdatePlayTime) +void subFetchAndInitLevelA(void) { - int subFetchAndInitLevelA; + GameBusyFlag = 0; // restore scissors too + subFetchAndInitLevel(); // fetch and initialize a level + GameBusyFlag = 1; // no free screen write - if (UpdatePlayTime && (0 == demo_stopped)) - { - subUpdatePlayingTime(); // update playing time - } - - D_ModeFlag = 0; // 1=debug D pressed (CPU use) - if (0 != demo_stopped) // 1=demo, 0=game - DemoFlag = 1; - - GameBusyFlag = 0; // restore scissors too - subFetchAndInitLevel(); // Fetch and initialize a level - GameBusyFlag = 1; // no free screen write - if (1 <= demo_stopped) - { - if (1 == demo_stopped) - { - DemoFlag = 0; // 1=demo, 0=game - demo_stopped = demo_stopped + 1; - } - else - { - DemoFlag = 0; // 1=demo, 0=game - } - } + DemoKeyCode = 0; // delete last demo key! +} - DemoKeyCode = 0; // delete last demo key! - if (DemoFlag != 0) // don't allow during game! only in Demo - { - DemoOffset = DemoPointer; // init demo pointer - DemoKeyRepeatCounter = 1; - subGetNextDemoKey(); // get next demo byte - } +void subFetchAndInitLevel(void) +{ + int InfoCountInLevel; - return subFetchAndInitLevelA; -} // subFetchAndInitLevela + PrepareLevel(); // initialize level data -int subFetchAndInitLevel() -{ - int subFetchAndInitLevel; + GameBusyFlag = -GameBusyFlag; // make != 1 + InfoCountInLevel = subConvertToEasySymbols(); // convert to easy symbols + GameBusyFlag = -GameBusyFlag; // restore - int InfoCountInLevel; + subDisplayLevel(); // paint (init) game field - Trace("modInitGameConditions", "--> subFetchAndInitLevel"); - Trace("modInitGameConditions", "Call ReadLevel"); - ReadLevel(); // Read LEVELS.DAT - Trace("modInitGameConditions", "ReadLevel return subFetchAndInitLeveled"); + ResetInfotronsNeeded(InfoCountInLevel); // and reset Infotron count - if (RecordDemoFlag == 1) - { - RecDemoRandomSeed = RandomSeed; - // Debug.Print "FetchRec: " & Hex(RandomSeed) - } + subInitGameConditions(); // init game conditions (vars) - // If DemoFlag = 1 Then - // Debug.Print "FetchPlay: " & Hex(RandomSeed) - // End If - GameBusyFlag = -GameBusyFlag; // make <>1 - Trace("modInitGameConditions", "subConvertToEasySymbols"); - InfoCountInLevel = subConvertToEasySymbols(); // Convert to easy symbols - GameBusyFlag = -GameBusyFlag; // restore - Trace("modInitGameConditions", "subDisplayLevel"); - subDisplayLevel(); // Paint (Init) game field - subDisplayPanel(); // Paint (Init) Panel - ResetInfotronsNeeded(InfoCountInLevel); // and reset Infotron count - Data_SubRstFlg = 1; - Trace("modInitGameConditions", "subInitGameConditions"); - subInitGameConditions(); // Init game conditions (vars) - InitMurphyPos(); // Locate Murphy + screen pos - Trace("modInitGameConditions", "<-- subFetchAndInitLevel"); - - return subFetchAndInitLevel; -} // subFetchAndInitLevel + InitMurphyPos(); // locate Murphy + screen pos +}