X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_sp%2FInitGameConditions.c;h=937d4dc543d3c5d8e5a85139f0c28b54ee877f00;hb=ce0bba1a070e5e64939491eb68087f68ef8fe870;hp=ccbd2147175d9d6d7351f0fc5092473cffd5f2b6;hpb=8d3d7d213a9691455a49544624bf380e85f43461;p=rocksndiamonds.git diff --git a/src/game_sp/InitGameConditions.c b/src/game_sp/InitGameConditions.c index ccbd2147..937d4dc5 100644 --- a/src/game_sp/InitGameConditions.c +++ b/src/game_sp/InitGameConditions.c @@ -4,19 +4,14 @@ #include "InitGameConditions.h" -// static char *VB_Name = "modInitGameConditions"; - -// --- Option Explicit // ========================================================================== // SUBROUTINE // Init game conditions (variables) // ========================================================================== -int subInitGameConditions() +void subInitGameConditions() { - int subInitGameConditions; - bCapturePane = False; MurphyVar0DAC = MurphyYPos; @@ -26,21 +21,10 @@ int subInitGameConditions() 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 + // ShowRedDiskCounter = 0; // show-red-disk time-out - 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; + YawnSleepCounter = 0; // Wake up sleeping Murphy ExplosionShake = 0; // Force explosion flag off @@ -48,18 +32,17 @@ int subInitGameConditions() 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 - - - return subInitGameConditions; -} // subInitGameConditions +} // ========================================================================== @@ -67,28 +50,21 @@ int subInitGameConditions() // Locate Murphy and init location. // ========================================================================== -int InitMurphyPos() +void InitMurphyPos() { - int InitMurphyPos; - int si; for (si = 0; si <= LevelMax - 1; 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; @@ -96,26 +72,22 @@ int InitMurphyPosB(int si) MurphyScreenYPos = GetStretchY(si); // Murphy's screen y-position // To Do: draw Murphy in location ax - StretchedSprites.BltEx(MurphyScreenXPos, MurphyScreenYPos, fiMurphy); + StretchedSprites.BltImg(MurphyScreenXPos, MurphyScreenYPos, aniMurphy, 0); MurphyScreenXPos = MurphyScreenXPos / Stretch; MurphyScreenYPos = MurphyScreenYPos / Stretch; subCalculateScreenScrollPos(); // calculate screen start addrs + if (AutoScrollFlag) { if (bPlaying) - { SoftScrollTo(ScreenScrollXPos, ScreenScrollYPos, 1000, 25); - } else - { ScrollTo(ScreenScrollXPos, ScreenScrollYPos); - } } +} - return InitMurphyPosB; -} // InitMurphyPosB // ========================================================================== // SUBROUTINE @@ -124,10 +96,6 @@ int InitMurphyPosB(int si) int subConvertToEasySymbols() { - 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; @@ -248,20 +216,17 @@ 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) { dx = LInfo.InfotronsNeeded; @@ -269,10 +234,7 @@ int ResetInfotronsNeeded(int dx) InfotronsNeeded = LowByte(dx); // Remaining Infotrons needed TotalInfotronsNeeded = InfotronsNeeded; // Number of Infotrons needed - subDisplayInfotronsNeeded(); - - return ResetInfotronsNeeded; -} // ResetInfotronsNeeded +} // ========================================================================== @@ -280,25 +242,19 @@ int ResetInfotronsNeeded(int dx) // Fetch and initialize a level // ========================================================================== -int subFetchAndInitLevelB() +void subFetchAndInitLevelB() { - int subFetchAndInitLevelB; - boolean UpdatePlayTime; - MovLowByte(&data_SPtorunavail, 0); // no SP file data_scr_demo = 0; - UpdatePlayTime = (0 == demo_stopped ? True : True); + UpdatePlayTime = (0 == demo_stopped ? True : False); demo_stopped = 0; - subFetchAndInitLevelA(UpdatePlayTime); - return subFetchAndInitLevelB; -} // subFetchAndInitLevelb + subFetchAndInitLevelA(UpdatePlayTime); +} -int subFetchAndInitLevelA(boolean UpdatePlayTime) +void subFetchAndInitLevelA(boolean UpdatePlayTime) { - int subFetchAndInitLevelA; - if (UpdatePlayTime && (0 == demo_stopped)) { subUpdatePlayingTime(); // update playing time @@ -309,8 +265,11 @@ int subFetchAndInitLevelA(boolean UpdatePlayTime) 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) @@ -331,43 +290,42 @@ int subFetchAndInitLevelA(boolean UpdatePlayTime) DemoKeyRepeatCounter = 1; subGetNextDemoKey(); // get next demo byte } +} - return subFetchAndInitLevelA; -} // subFetchAndInitLevela - -int subFetchAndInitLevel() +void subFetchAndInitLevel() { - int subFetchAndInitLevel; - int InfoCountInLevel; Trace("modInitGameConditions", "--> subFetchAndInitLevel"); Trace("modInitGameConditions", "Call ReadLevel"); + ReadLevel(); // Read LEVELS.DAT + Trace("modInitGameConditions", "ReadLevel return subFetchAndInitLeveled"); if (RecordDemoFlag == 1) - { RecDemoRandomSeed = RandomSeed; - // Debug.Print "FetchRec: " & Hex(RandomSeed) - } - // 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 + Trace("modInitGameConditions", "<-- subFetchAndInitLevel"); +}