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 6855088d326adc00b07b6f91a3fc43d0deff057a..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);
- StretchedSprites.BltEx(X, Y, aniExplosion[bl]);
+#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]);
+#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;
@@
-83,7
+122,13
@@
void ExplodeFieldSP(int si)
ExplosionShake = 1; // something explodes
if (ax == fiMurphy)
ExplosionShake = 1; // something explodes
if (ax == fiMurphy)
+ {
+#if 1
+ printf("::: Explosions.c: ExplodeFieldSP(): killing murphy\n");
+#endif
+
KillMurphyFlag = 1;
KillMurphyFlag = 1;
+ }
if (ax == fiElectron)
{
if (ax == fiElectron)
{
@@
-106,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
@@
-118,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:
@@
-146,6
+197,11
@@
static void LetExplodeFieldSP(int tsi, int cx, int dh)
break;
case fiMurphy:
break;
case fiMurphy:
+#if 1
+ printf("::: Explosions.c: LetExplodeFieldSP(): killing murphy [%d]\n",
+ tsi);
+#endif
+
KillMurphyFlag = 1;
PlayField8[tsi] = dh;
PlayField16[tsi] = cx;
KillMurphyFlag = 1;
PlayField8[tsi] = dh;
PlayField16[tsi] = cx;
@@
-155,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)
@@
-266,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;
@@
-289,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)