projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20100303-1-src
[rocksndiamonds.git]
/
src
/
game_sp
/
Explosions.c
diff --git
a/src/game_sp/Explosions.c
b/src/game_sp/Explosions.c
index 629e4818676b940b7b6879938ec705754ebb6c30..8983a3781b131c0889435dba76e7eafe57babb27 100644
(file)
--- a/
src/game_sp/Explosions.c
+++ b/
src/game_sp/Explosions.c
@@
-30,6
+30,10
@@
int subAnimateExplosion(int si)
return subAnimateExplosion;
bl = HighByte(PlayField16[si]);
return subAnimateExplosion;
bl = HighByte(PlayField16[si]);
+#if 0
+ printf("::: subAnimateExplosion: %d [%d, %d] [%d]\n",
+ bl, PlayField16[si], si, FrameCounter);
+#endif
if ((bl & 0x80) != 0) // infotron explosion!
goto loc_g_28D0;
if ((bl & 0x80) != 0) // infotron explosion!
goto loc_g_28D0;
@@
-38,12
+42,28
@@
int subAnimateExplosion(int si)
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
X = GetStretchX(si);
Y = GetStretchY(si);
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
X = GetStretchX(si);
Y = GetStretchY(si);
+#if 1
+
+#if 1
+ GfxGraphic[GetX(si)][GetY(si)] = aniDefaultExplosion;
+#else
+ StretchedSprites.BltImg(X, Y, aniDefaultExplosion, bl);
+#endif
+
+#else
StretchedSprites.BltEx(X, Y, aniFramesExplosion[bl]);
StretchedSprites.BltEx(X, Y, aniFramesExplosion[bl]);
+#endif
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if (bl == 8)
{
PlayField16[si] = 0;
ExplosionShake = 0; // nothing explodes
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if (bl == 8)
{
PlayField16[si] = 0;
ExplosionShake = 0; // nothing explodes
+
+#if 1
+ GfxGraphic[GetX(si)][GetY(si)] = aniSpace;
+#else
+ StretchedSprites.BltImg(X, Y, aniSpace, 0);
+#endif
} // loc_ret_g_28CF:
return subAnimateExplosion;
} // loc_ret_g_28CF:
return subAnimateExplosion;
@@
-54,6
+74,15
@@
loc_g_28D0: // explosion produces infotron
{
PlayField16[si] = fiInfotron;
MovLowByte(&ExplosionShake, 0); // nothing explodes
{
PlayField16[si] = fiInfotron;
MovLowByte(&ExplosionShake, 0); // nothing explodes
+
+#if 1
+ GfxGraphic[GetX(si)][GetY(si)] = aniInfotron;
+#else
+ X = GetStretchX(si);
+ Y = GetStretchY(si);
+ StretchedSprites.BltImg(X, Y, aniInfotron, 0);
+#endif
+
return subAnimateExplosion;
} // loc_g_28E3:
return subAnimateExplosion;
} // loc_g_28E3:
@@
-61,7
+90,17
@@
loc_g_28D0: // explosion produces infotron
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
X = GetStretchX(si);
Y = GetStretchY(si);
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
X = GetStretchX(si);
Y = GetStretchY(si);
+#if 1
+
+#if 1
+ GfxGraphic[GetX(si)][GetY(si)] = aniElectronExplosion;
+#else
+ StretchedSprites.BltImg(X, Y, aniElectronExplosion, bl - 0x80);
+#endif
+
+#else
StretchedSprites.BltEx(X, Y, aniExplosionInfo + bl - 0x80);
StretchedSprites.BltEx(X, Y, aniExplosionInfo + bl - 0x80);
+#endif
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
return subAnimateExplosion;
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
return subAnimateExplosion;
@@
-112,6
+151,8
@@
void ExplodeFieldSP(int si)
LetExplodeFieldSP(si + FieldWidth, cx, dl);
LetExplodeFieldSP(si + FieldWidth + 1, cx, dl);
LetExplodeFieldSP(si + FieldWidth, cx, dl);
LetExplodeFieldSP(si + FieldWidth + 1, cx, dl);
+ GfxGraphic[GetX(si)][GetY(si)] = -1; // restart for chain-explosions
+
// loc_g_2C3B:
subSoundFXExplosion();
} // ExplodeFieldSP
// loc_g_2C3B:
subSoundFXExplosion();
} // ExplodeFieldSP
@@
-124,6
+165,10
@@
static void LetExplodeFieldSP(int tsi, int cx, int dh)
return;
al = LowByte(PlayField16[tsi]);
return;
al = LowByte(PlayField16[tsi]);
+#if 0
+ printf("::: LetExplodeFieldSP: got %d [%d, %d] [%d]\n",
+ al, PlayField16[tsi], tsi, FrameCounter);
+#endif
switch (al)
{
case fiHardWare:
switch (al)
{
case fiHardWare:
@@
-166,6
+211,8
@@
static void LetExplodeFieldSP(int tsi, int cx, int dh)
PlayField16[tsi] = cx;
break;
}
PlayField16[tsi] = cx;
break;
}
+
+ GfxGraphic[GetX(tsi)][GetY(tsi)] = -1; // restart for chain-explosions
}
static int subExplodeZonk(int tsi, int cx)
}
static int subExplodeZonk(int tsi, int cx)
@@
-277,7
+324,17
@@
int subClearFieldDueToExplosion(int si)
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
X = GetStretchX(si);
Y = GetStretchY(si);
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
X = GetStretchX(si);
Y = GetStretchY(si);
+#if 1
+
+#if 1
+ GfxGraphic[GetX(si)][GetY(si)] = aniSpace;
+#else
+ StretchedSprites.BltImg(X, Y, aniSpace, 0);
+#endif
+
+#else
StretchedSprites.BltEx(X, Y, fiSpace);
StretchedSprites.BltEx(X, Y, fiSpace);
+#endif
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
return subClearFieldDueToExplosion;
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
return subClearFieldDueToExplosion;
@@
-300,7
+357,18
@@
int subRedDiskReleaseExplosion()
// +++++++++++++++++++++++++++++++++++++++++
X = GetStretchX(si);
Y = GetStretchY(si);
// +++++++++++++++++++++++++++++++++++++++++
X = GetStretchX(si);
Y = GetStretchY(si);
+#if 1
+
+#if 0
+ // !!! causes flicker -- fix in Murphy.c !!!
+ GfxGraphic[GetX(si)][GetY(si)] = aniRedDisk;
+#else
+ StretchedSprites.BltImg(X, Y, aniRedDisk, 0);
+#endif
+
+#else
StretchedSprites.BltEx(X, Y, fiRedDisk);
StretchedSprites.BltEx(X, Y, fiRedDisk);
+#endif
// +++++++++++++++++++++++++++++++++++++++++
RedDiskReleasePhase = RedDiskReleasePhase + 1;
if (RedDiskReleasePhase >= 0x28)
// +++++++++++++++++++++++++++++++++++++++++
RedDiskReleasePhase = RedDiskReleasePhase + 1;
if (RedDiskReleasePhase >= 0x28)