X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_sp%2FMurphy.c;h=bab25f71e2d202a7649bd4ccadcf8efe8cf77bc0;hb=79d7ca29718d025ed0b131bf5389685fe9b941c4;hp=9ce921b380f9ff74446746c8a1ad70757e8ae2e8;hpb=c35ed5e69718416c4b428f1ffeddf31105e933b2;p=rocksndiamonds.git diff --git a/src/game_sp/Murphy.c b/src/game_sp/Murphy.c index 9ce921b3..bab25f71 100644 --- a/src/game_sp/Murphy.c +++ b/src/game_sp/Murphy.c @@ -585,7 +585,7 @@ loc_g_62E2: // ========================================================================== loc_g_6312: - dx = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpRight); + dx = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpLeft); PlayField16[*si - FieldWidth] = 0x103; PlayField16[*si] = 0x300; *si = *si - FieldWidth; @@ -607,7 +607,7 @@ loc_g_6341: // ========================================================================== loc_g_6364: - dx = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpRight); + dx = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpLeft); PlayField16[*si + FieldWidth] = 0x303; PlayField16[*si] = 0x300; *si = *si + FieldWidth; @@ -642,7 +642,7 @@ loc_g_63C2: loc_g_63D3: subSoundFXBase(); - dx = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpRight); + dx = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpLeft); PlayField16[*si - FieldWidth] = 0x503; PlayField16[*si] = 0x300; *si = *si - FieldWidth; @@ -690,7 +690,7 @@ loc_g_6448: loc_g_6459: subSoundFXBase(); - dx = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpRight); + dx = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpLeft); PlayField16[*si + FieldWidth] = 0x703; PlayField16[*si] = 0x300; *si = *si + FieldWidth; @@ -822,7 +822,7 @@ loc_g_6599: loc_g_65C6: subSoundFXInfotron(); - dx = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpRight); + dx = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpLeft); PlayField16[*si - FieldWidth] = 0x903; PlayField16[*si] = 0x300; *si = *si - FieldWidth; @@ -849,7 +849,7 @@ loc_g_65FE: loc_g_662A: subSoundFXInfotron(); - dx = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpRight); + dx = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpLeft); PlayField16[*si + FieldWidth] = 0xB03; PlayField16[*si] = 0x300; *si = *si + FieldWidth; @@ -932,9 +932,12 @@ loc_g_6756: return subAnimateMurphy; #if 1 - printf("::: Murphy.c: !!!!!!!!!! GAME SOLVED !!!!!!!!!!\n"); + if (!game_sp_info.LevelSolved) + printf("::: Murphy.c: !!!!!!!!!! LEVEL %d SOLVED !!!!!!!!!!\n",LevelNumber); #endif + game_sp_info.LevelSolved = TRUE; + subSoundFXExit(); data_h_DemoDone = 1; // EP set level success bytes LevelStatus = 1; // set Level Status DONE @@ -1139,7 +1142,7 @@ loc_StopSplit: // ========================================================================== loc_g_69A6: - dx = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpRight); + dx = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpLeft); PlayField16[*si] = 0x1C03; PlayField16[*si - FieldWidth] = 0x300; goto loc_StopNoSplit; @@ -1160,7 +1163,7 @@ loc_g_69CE: // ========================================================================== loc_g_69F7: - dx = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpRight); + dx = (MurphyVarFaceLeft == 0 ? aniMurphyEatUpRight : aniMurphyEatUpLeft); PlayField16[*si] = 0x1E03; PlayField16[*si + FieldWidth] = 0x300; goto loc_StopNoSplit; @@ -1422,6 +1425,31 @@ loc_g_6C8F: MurphyScreenYPos = MurphyScreenYPos + MurphyDY; #endif + +#if 0 + printf("::: %04d [%03ld, %02d] ----------> %s [%d] [%d, %d] [%d, %d] [%d]\n", + TimerVar, + DemoOffset - DemoPointer, DemoKeyRepeatCounter, + (DemoKeyCode == keyNone ? "(none)" : + DemoKeyCode == keyLeft ? "left" : + DemoKeyCode == keyRight ? "right" : + DemoKeyCode == keyUp ? "up" : + DemoKeyCode == keyDown ? "down" : + DemoKeyCode == keySpace ? "space" : + DemoKeyCode == keySpaceLeft ? "space + left" : + DemoKeyCode == keySpaceRight ? "space + right" : + DemoKeyCode == keySpaceUp ? "space + up" : + DemoKeyCode == keySpaceDown ? "space + down" : "(unknown)"), + DemoKeyCode, + MurphyScreenXPos, MurphyScreenYPos, + MurphyPosIndex % 60, MurphyPosIndex / 60, + ClearPos); +#endif + +#if 0 + Delay(500); +#endif + #if 1 if (!(ClearPos < 0)) // clear field that murphy is leaving subCopyFieldToScreen(ClearPos, 0); @@ -1448,7 +1476,7 @@ loc_g_6C8F: X = GetStretchX(dxPos) + tDeltaX; Y = GetStretchY(dxPos) + tDeltaY; - Tmp = (SeqPos < 0 ? 0 : 0); // 9StepBugFix!(red disk move right) + Tmp = (SeqPos < 0 ? 0 : SeqPos); // 9StepBugFix!(red disk move right) StretchedSprites.BltEx(X, Y, dx[Tmp]); #if 1 @@ -2303,6 +2331,34 @@ int subSpPortTest(int si) int i, cx, bx; +#if 1 + cx = LInfo.SpecialPortCount; // number of special ports + + for (i = 0; i < cx; i++) + { +#if 1 + /* this assumes that PortLocation is stored as big endian */ + bx = LInfo.SpecialPort[i].PortLocation; +#else + /* this assumes that PortLocation is stored as little endian */ + bx = HighByte(LInfo.SpecialPort[i].PortLocation); + MovHighByte(&bx, LowByte(LInfo.SpecialPort[i].PortLocation)); +#endif + + if (bx / 2 == si) + { + GravityFlag = LInfo.SpecialPort[i].Gravity; + FreezeZonks = LInfo.SpecialPort[i].FreezeZonks; + SnikSnaksElectronsFrozen = LInfo.SpecialPort[i].FreezeEnemies; + + // RandomTime = RandomTime Xor RandomSeed 'is RandomTime used at all? no! + + break; + } + } + +#else + cx = LInfo.SpecialPortCount; // number of special ports for (i = 1; i <= cx; i++) { @@ -2317,9 +2373,9 @@ int subSpPortTest(int si) // RandomTime = RandomTime Xor RandomSeed 'is RandomTime used at all? no! i = cx + 1; } - } } +#endif return subSpPortTest; } // subSpPortTest