projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20100315-2-src
[rocksndiamonds.git]
/
src
/
game_sp
/
Explosions.c
diff --git
a/src/game_sp/Explosions.c
b/src/game_sp/Explosions.c
index 0dc2cc71fd0513cd1b3a3d8d31e4d69c5bd0b23c..ea9368c56b2830ca2d1da260756dd0b8f9584921 100644
(file)
--- a/
src/game_sp/Explosions.c
+++ b/
src/game_sp/Explosions.c
@@
-4,49
+4,53
@@
#include "Explosions.h"
#include "Explosions.h"
+
static void LetExplodeFieldSP(int tsi, int cx, int dh);
static void LetExplodeFieldSP(int tsi, int cx, int dh);
-static
int
subExplodeInfotron(int tsi, int cx);
-static
int
subExplodeZonk(int tsi, int cx);
+static
void
subExplodeInfotron(int tsi, int cx);
+static
void
subExplodeZonk(int tsi, int cx);
-// static char *VB_Name = "modExplosions";
-// --- Option Explicit
// ==========================================================================
// SUBROUTINE
// Animate explosion
// ==========================================================================
// ==========================================================================
// SUBROUTINE
// Animate explosion
// ==========================================================================
-int subAnimateExplosion(int si)
-{
- int subAnimateExplosion;
- // int ax, bx, bl, X, Y;
+void subAnimateExplosion(int si)
+{
int ax, bl, X, Y;
if (LowByte(PlayField16[si]) != fiExplosion)
int ax, bl, X, Y;
if (LowByte(PlayField16[si]) != fiExplosion)
- return
subAnimateExplosion
;
+ return;
ax = (TimerVar & 3);
if (ax != 0)
ax = (TimerVar & 3);
if (ax != 0)
- return
subAnimateExplosion
;
+ return;
bl = HighByte(PlayField16[si]);
bl = HighByte(PlayField16[si]);
+
if ((bl & 0x80) != 0) // infotron explosion!
goto loc_g_28D0;
bl = bl + 1;
MovHighByte(&PlayField16[si], bl);
if ((bl & 0x80) != 0) // infotron explosion!
goto loc_g_28D0;
bl = bl + 1;
MovHighByte(&PlayField16[si], bl);
+
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
X = GetStretchX(si);
Y = GetStretchY(si);
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
X = GetStretchX(si);
Y = GetStretchY(si);
-
StretchedSprites.BltEx(X, Y, aniExplosion[bl])
;
+
GfxGraphic[GetX(si)][GetY(si)] = aniDefaultExplosion
;
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
if (bl == 8)
{
PlayField16[si] = 0;
ExplosionShake = 0; // nothing explodes
if (bl == 8)
{
PlayField16[si] = 0;
ExplosionShake = 0; // nothing explodes
+
+ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ GfxGraphic[GetX(si)][GetY(si)] = aniSpace;
+ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
} // loc_ret_g_28CF:
} // loc_ret_g_28CF:
- return
subAnimateExplosion
;
+ return;
loc_g_28D0: // explosion produces infotron
bl = bl + 1;
loc_g_28D0: // explosion produces infotron
bl = bl + 1;
@@
-54,18
+58,22
@@
loc_g_28D0: // explosion produces infotron
{
PlayField16[si] = fiInfotron;
MovLowByte(&ExplosionShake, 0); // nothing explodes
{
PlayField16[si] = fiInfotron;
MovLowByte(&ExplosionShake, 0); // nothing explodes
- return subAnimateExplosion;
+
+ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ GfxGraphic[GetX(si)][GetY(si)] = aniInfotron;
+ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+ return;
} // loc_g_28E3:
MovHighByte(&PlayField16[si], bl);
} // loc_g_28E3:
MovHighByte(&PlayField16[si], bl);
+
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
X = GetStretchX(si);
Y = GetStretchY(si);
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
X = GetStretchX(si);
Y = GetStretchY(si);
-
StretchedSprites.BltEx(X, Y, aniExplosionInfo + bl - 0x80)
;
+
GfxGraphic[GetX(si)][GetY(si)] = aniElectronExplosion
;
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
- return subAnimateExplosion;
-} // subAnimateExplosion
+}
// ==========================================================================
// SUBROUTINE
// ==========================================================================
// SUBROUTINE
@@
-74,7
+82,6
@@
loc_g_28D0: // explosion produces infotron
void ExplodeFieldSP(int si)
{
void ExplodeFieldSP(int si)
{
- // int ax, al, cx, dl, dh;
int ax, cx, dl;
ax = LowByte(PlayField16[si]);
int ax, cx, dl;
ax = LowByte(PlayField16[si]);
@@
-85,7
+92,7
@@
void ExplodeFieldSP(int si)
if (ax == fiMurphy)
{
#if 1
if (ax == fiMurphy)
{
#if 1
- printf("::: Explosions.c: ExplodeFieldSP(): kill murphy\n");
+ printf("::: Explosions.c: ExplodeFieldSP(): kill
ing
murphy\n");
#endif
KillMurphyFlag = 1;
#endif
KillMurphyFlag = 1;
@@
-112,9
+119,11
@@
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:
// loc_g_2C3B:
- subSoundFX
Explosion(
);
-}
// ExplodeFieldSP
+ subSoundFX
(si, ax, actExploding
);
+}
static void LetExplodeFieldSP(int tsi, int cx, int dh)
{
static void LetExplodeFieldSP(int tsi, int cx, int dh)
{
@@
-153,7
+162,8
@@
static void LetExplodeFieldSP(int tsi, int cx, int dh)
case fiMurphy:
#if 1
case fiMurphy:
#if 1
- printf("::: Explosions.c: LetExplodeFieldSP(): kill murphy\n");
+ printf("::: Explosions.c: LetExplodeFieldSP(): killing murphy [%d]\n",
+ tsi);
#endif
KillMurphyFlag = 1;
#endif
KillMurphyFlag = 1;
@@
-165,12
+175,12
@@
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
void
subExplodeZonk(int tsi, int cx)
{
{
- static int subExplodeZonk;
-
int ah;
ah = HighByte(PlayField16[tsi]) & 0xF0;
int ah;
ah = HighByte(PlayField16[tsi]) & 0xF0;
@@
-208,14
+218,10
@@
static int subExplodeZonk(int tsi, int cx)
subClearFieldDueToExplosion(tsi + FieldWidth);
break;
}
subClearFieldDueToExplosion(tsi + FieldWidth);
break;
}
+}
- return subExplodeZonk;
-} // subExplodeZonk
-
-static int subExplodeInfotron(int tsi, int cx)
+static void subExplodeInfotron(int tsi, int cx)
{
{
- static int subExplodeInfotron;
-
int ah;
ah = HighByte(PlayField16[tsi]) & 0xF0;
int ah;
ah = HighByte(PlayField16[tsi]) & 0xF0;
@@
-259,38
+265,30
@@
static int subExplodeInfotron(int tsi, int cx)
subClearFieldDueToExplosion(tsi + FieldWidth);
break;
}
subClearFieldDueToExplosion(tsi + FieldWidth);
break;
}
+}
- return subExplodeInfotron;
-} // subExplodeInfotron
-
-int subClearFieldDueToExplosion(int si)
+void subClearFieldDueToExplosion(int si)
{
{
- int subClearFieldDueToExplosion;
-
int X, Y;
if (LowByte(PlayField16[si]) == fiExplosion)
int X, Y;
if (LowByte(PlayField16[si]) == fiExplosion)
- return
subClearFieldDueToExplosion
;
+ return;
PlayField16[si] = 0;
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
X = GetStretchX(si);
Y = GetStretchY(si);
PlayField16[si] = 0;
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
X = GetStretchX(si);
Y = GetStretchY(si);
-
StretchedSprites.BltEx(X, Y, fiSpace)
;
+
GfxGraphic[GetX(si)][GetY(si)] = aniSpace
;
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+}
- return subClearFieldDueToExplosion;
-} // subClearFieldDueToExplosion
-
-int subRedDiskReleaseExplosion()
+void subRedDiskReleaseExplosion()
{
{
- int subRedDiskReleaseExplosion;
-
int al, X, Y, si;
al = RedDiskReleasePhase; // Red disk release phase
if (al <= 1)
int al, X, Y, si;
al = RedDiskReleasePhase; // Red disk release phase
if (al <= 1)
- return
subRedDiskReleaseExplosion
;
+ return;
si = RedDiskReleaseMurphyPos;
if (PlayField16[si] == 0) // Release red disk
si = RedDiskReleaseMurphyPos;
if (PlayField16[si] == 0) // Release red disk
@@
-299,8
+297,14
@@
int subRedDiskReleaseExplosion()
// +++++++++++++++++++++++++++++++++++++++++
X = GetStretchX(si);
Y = GetStretchY(si);
// +++++++++++++++++++++++++++++++++++++++++
X = GetStretchX(si);
Y = GetStretchY(si);
- StretchedSprites.BltEx(X, Y, fiRedDisk);
+#if 0
+ // !!! causes flicker -- fix in Murphy.c !!!
+ GfxGraphic[GetX(si)][GetY(si)] = aniRedDisk;
+#else
+ StretchedSprites.BltImg(X, Y, aniRedDisk, 0);
+#endif
// +++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++
+
RedDiskReleasePhase = RedDiskReleasePhase + 1;
if (RedDiskReleasePhase >= 0x28)
{
RedDiskReleasePhase = RedDiskReleasePhase + 1;
if (RedDiskReleasePhase >= 0x28)
{
@@
-308,14
+312,10
@@
int subRedDiskReleaseExplosion()
ExplodeFieldSP(si); // Explode
RedDiskReleasePhase = 0;
}
ExplodeFieldSP(si); // Explode
RedDiskReleasePhase = 0;
}
-
- return subRedDiskReleaseExplosion;
}
}
-
int
subFollowUpExplosions()
+
void
subFollowUpExplosions()
{
{
- int subFollowUpExplosions;
-
int ax, si;
// locloop_g_2919:
int ax, si;
// locloop_g_2919:
@@
-333,7
+333,6
@@
int subFollowUpExplosions()
PlayField16[si] = 0xFF18;
ExplodeFieldSP(si); // Explode
}
PlayField16[si] = 0xFF18;
ExplodeFieldSP(si); // Explode
}
-
}
else
{
}
else
{
@@
-344,6
+343,4
@@
int subFollowUpExplosions()
}
}
}
}
}
}
-
- return subFollowUpExplosions;
-} // subFollowUpExplosions
+}