X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fgame_sp%2FExplosions.c;h=7729d8448f3dcc7c24e00ff668fad0514298f385;hp=ea9368c56b2830ca2d1da260756dd0b8f9584921;hb=3ff2e8a0b5c27b99a9920bdf5ed82bc41bf40181;hpb=ce0bba1a070e5e64939491eb68087f68ef8fe870 diff --git a/src/game_sp/Explosions.c b/src/game_sp/Explosions.c index ea9368c5..7729d844 100644 --- a/src/game_sp/Explosions.c +++ b/src/game_sp/Explosions.c @@ -17,7 +17,7 @@ static void subExplodeZonk(int tsi, int cx); void subAnimateExplosion(int si) { - int ax, bl, X, Y; + int ax, bl; if (LowByte(PlayField16[si]) != fiExplosion) return; @@ -35,15 +35,14 @@ void subAnimateExplosion(int si) MovHighByte(&PlayField16[si], bl); // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - X = GetStretchX(si); - Y = GetStretchY(si); GfxGraphic[GetX(si)][GetY(si)] = aniDefaultExplosion; // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if (bl == 8) { PlayField16[si] = 0; - ExplosionShake = 0; // nothing explodes + ExplosionShake = 0; // nothing explodes + // ExplosionShakeMurphy = 0; // nothing explodes // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ GfxGraphic[GetX(si)][GetY(si)] = aniSpace; @@ -57,7 +56,8 @@ loc_g_28D0: // explosion produces infotron if (bl == 0x89) { PlayField16[si] = fiInfotron; - MovLowByte(&ExplosionShake, 0); // nothing explodes + MovLowByte(&ExplosionShake, 0); // nothing explodes + // MovLowByte(&ExplosionShakeMurphy, 0); // nothing explodes // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ GfxGraphic[GetX(si)][GetY(si)] = aniInfotron; @@ -69,8 +69,6 @@ loc_g_28D0: // explosion produces infotron MovHighByte(&PlayField16[si], bl); // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - X = GetStretchX(si); - Y = GetStretchY(si); GfxGraphic[GetX(si)][GetY(si)] = aniElectronExplosion; // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ } @@ -88,14 +86,13 @@ void ExplodeFieldSP(int si) if (ax == fiHardWare) return; - ExplosionShake = 1; // something explodes + ExplosionShake = 1; // something explodes + if (ax == fiMurphy) { -#if 1 - printf("::: Explosions.c: ExplodeFieldSP(): killing murphy\n"); -#endif - KillMurphyFlag = 1; + + ExplosionShakeMurphy = 30; // Murphy explodes } if (ax == fiElectron) @@ -129,7 +126,7 @@ static void LetExplodeFieldSP(int tsi, int cx, int dh) { int al; - if (tsi < (-FieldWidth)) + if (tsi < -FieldWidth) return; al = LowByte(PlayField16[tsi]); @@ -161,11 +158,6 @@ static void LetExplodeFieldSP(int tsi, int cx, int dh) break; case fiMurphy: -#if 1 - printf("::: Explosions.c: LetExplodeFieldSP(): killing murphy [%d]\n", - tsi); -#endif - KillMurphyFlag = 1; PlayField8[tsi] = dh; PlayField16[tsi] = cx; @@ -269,15 +261,11 @@ static void subExplodeInfotron(int tsi, int cx) void subClearFieldDueToExplosion(int si) { - int X, Y; - if (LowByte(PlayField16[si]) == fiExplosion) return; PlayField16[si] = 0; // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - X = GetStretchX(si); - Y = GetStretchY(si); GfxGraphic[GetX(si)][GetY(si)] = aniSpace; // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ } @@ -297,12 +285,7 @@ void subRedDiskReleaseExplosion() // +++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si); Y = GetStretchY(si); -#if 0 - // !!! causes flicker -- fix in Murphy.c !!! - GfxGraphic[GetX(si)][GetY(si)] = aniRedDisk; -#else - StretchedSprites.BltImg(X, Y, aniRedDisk, 0); -#endif + DDSpriteBuffer_BltImg(X, Y, aniRedDisk, 0); // +++++++++++++++++++++++++++++++++++++++++ RedDiskReleasePhase = RedDiskReleasePhase + 1;