X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_sp%2FSnikSnaks.c;h=d7b11e175dfe5300b99e231d5c45dbc43346c96b;hb=f7b79b71faf7e5fbe38df38d26d1156f3ba2f0ce;hp=13214817ebc9db6ed8c04ce08bf0f4a7b856f348;hpb=5ba7f2d9a3f07f342afdf215a3307d5487cb6d43;p=rocksndiamonds.git diff --git a/src/game_sp/SnikSnaks.c b/src/game_sp/SnikSnaks.c index 13214817..d7b11e17 100644 --- a/src/game_sp/SnikSnaks.c +++ b/src/game_sp/SnikSnaks.c @@ -17,7 +17,8 @@ static int subSnikSnakFromRight(int si, int bx); static int subSnikSnakTurnLeft(int si, int bx); static int subSnikSnakTurnRight(int si, int bx); -static char *VB_Name = "modSnikSnak"; +// static char *VB_Name = "modSnikSnak"; + // --- Option Explicit // ========================================================================== // SUBROUTINE @@ -33,6 +34,12 @@ int subAnimateSnikSnaks(int si) if (SnikSnaksElectronsFrozen == 1) return subAnimateSnikSnaks; +#if 1 + /* (not sure why this was removed -- this broke several level solutions) */ + if (LowByte(PlayField16[si]) != fiSnikSnak) + return subAnimateSnikSnaks; +#endif + // If LowByte(PlayField16(si)) <> fiSnikSnak Then Exit Function // Debug.Assert (LowByte(PlayField16[si]) == fiSnikSnak); bx = HighByte(PlayField16[si]); @@ -117,7 +124,8 @@ static int subSnikSnakTurnLeft(int si, int bx) { static int subSnikSnakTurnLeft; - int ax, ah, bl, dx, X, Y; + // int ax, ah, bl, dx, X, Y; + int ax, ah, bl; ax = (TimerVar & 3); if (ax != 0) @@ -128,11 +136,16 @@ static int subSnikSnakTurnLeft(int si, int bx) return subSnikSnakTurnLeft; } // loc_g_75E0: +#if 1 + subDrawSnikSnakTurnLeft(si, bx); +#else // +++++++++++++++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si); Y = GetStretchY(si); - StretchedSprites.BltEx(X, Y, aniSnikSnak[bx]); + StretchedSprites.BltEx(X, Y, aniFramesSnikSnak[bx]); // +++++++++++++++++++++++++++++++++++++++++++++++++++++ +#endif + bx = (bx + 1) & 0x7; MovHighByte(&PlayField16[si], bx); return subSnikSnakTurnLeft; @@ -240,7 +253,8 @@ static int subSnikSnakTurnRight(int si, int bx) { static int subSnikSnakTurnRight; - int ax, ah, bl, dx, X, Y; + // int ax, ah, bl, dx, X, Y; + int ax, ah, bl; ax = (TimerVar & 3); if (ax != 0) @@ -251,11 +265,16 @@ static int subSnikSnakTurnRight(int si, int bx) return subSnikSnakTurnRight; } // loc_g_76DB: +#if 1 + subDrawSnikSnakTurnRight(si, bx); +#else // +++++++++++++++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si); Y = GetStretchY(si); - StretchedSprites.BltEx(X, Y, aniSnikSnak[0x10 - bx]); + StretchedSprites.BltEx(X, Y, aniFramesSnikSnak[0x10 - bx]); // +++++++++++++++++++++++++++++++++++++++++++++++++++++ +#endif + bx = ((bx + 1) & 0x7) | 8; MovHighByte(&PlayField16[si], bx); return subSnikSnakTurnRight; @@ -363,8 +382,13 @@ static int subSnikSnakFromBelow(int si, int bx) { static int subSnikSnakFromBelow; - int ax, ah, bl, dx, X, Y; + // int ax, ah, bl, dx, X, Y; + int ax, bl; +#if 1 + subDrawSnikSnakFromBelow(si, bx); + bx = bx - 0xF; // get and increment sequence# +#else bx = bx - 0xF; // get and increment sequence# // +++++++++++++++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si); @@ -372,6 +396,8 @@ static int subSnikSnakFromBelow(int si, int bx) StretchedSprites.BltEx(X, Y, 0); StretchedSprites.BltEx(X, Y - bx * TwoPixels, aniSnikSnakUp + bx); // +++++++++++++++++++++++++++++++++++++++++++++++++++++ +#endif + bl = LowByte(bx); if (bl == 7 && LowByte(PlayField16[si + FieldWidth]) != fiExplosion) { @@ -425,8 +451,13 @@ static int subSnikSnakFromRight(int si, int bx) { static int subSnikSnakFromRight; - int ax, ah, bl, dx, X, Y; + // int ax, ah, bl, dx, X, Y; + int ax, bl; +#if 1 + subDrawSnikSnakFromRight(si, bx); + bx = bx - 0x17; // get and increment sequence# +#else bx = bx - 0x17; // get and increment sequence# // +++++++++++++++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si + 1); @@ -434,6 +465,8 @@ static int subSnikSnakFromRight(int si, int bx) StretchedSprites.BltEx(X, Y, 0); StretchedSprites.BltEx(X - bx * TwoPixels, Y, aniSnikSnakLeft + bx); // +++++++++++++++++++++++++++++++++++++++++++++++++++++ +#endif + bl = LowByte(bx); if (bl == 7 && LowByte(PlayField16[si + 1]) != fiExplosion) { @@ -486,8 +519,13 @@ static int subSnikSnakFromAbove(int si, int bx) { static int subSnikSnakFromAbove; - int ax, ah, bl, dx, X, Y; + // int ax, ah, bl, dx, X, Y; + int ax, bl; +#if 1 + subDrawSnikSnakFromAbove(si, bx); + bx = bx - 0x1F; // get and increment sequence# +#else bx = bx - 0x1F; // get and increment sequence# // +++++++++++++++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si); @@ -495,6 +533,8 @@ static int subSnikSnakFromAbove(int si, int bx) StretchedSprites.BltEx(X, Y, 0); StretchedSprites.BltEx(X, Y + bx * TwoPixels, aniSnikSnakDown + bx); // +++++++++++++++++++++++++++++++++++++++++++++++++++++ +#endif + bl = LowByte(bx); if (bl == 7 && LowByte(PlayField16[si - FieldWidth]) != fiExplosion) { @@ -547,8 +587,13 @@ static int subSnikSnakFromLeft(int si, int bx) { static int subSnikSnakFromLeft; - int ax, ah, bl, dx, X, Y; + // int ax, ah, bl, dx, X, Y; + int ax, bl; +#if 1 + subDrawSnikSnakFromLeft(si, bx); + bx = bx - 0x27; // get and increment sequence# +#else bx = bx - 0x27; // get and increment sequence# // +++++++++++++++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si - 1); @@ -556,6 +601,8 @@ static int subSnikSnakFromLeft(int si, int bx) StretchedSprites.BltEx(X, Y, 0); StretchedSprites.BltEx(X + bx * TwoPixels, Y, aniSnikSnakRight + bx); // +++++++++++++++++++++++++++++++++++++++++++++++++++++ +#endif + bl = LowByte(bx); if (bl == 7 && LowByte(PlayField16[si - 1]) != fiExplosion) { @@ -613,7 +660,7 @@ static int subDrawSnikSnakTurnLeft(int si, int bx) // +++++++++++++++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si); Y = GetStretchY(si); - StretchedSprites.BltEx(X, Y, aniSnikSnak[bx]); + StretchedSprites.BltEx(X, Y, aniFramesSnikSnak[bx]); // +++++++++++++++++++++++++++++++++++++++++++++++++++++ return subDrawSnikSnakTurnLeft; @@ -628,7 +675,7 @@ static int subDrawSnikSnakTurnRight(int si, int bx) // +++++++++++++++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si); Y = GetStretchY(si); - StretchedSprites.BltEx(X, Y, aniSnikSnak[0x10 - bx]); + StretchedSprites.BltEx(X, Y, aniFramesSnikSnak[0x10 - bx]); // +++++++++++++++++++++++++++++++++++++++++++++++++++++ return subDrawSnikSnakTurnRight; @@ -644,8 +691,13 @@ static int subDrawSnikSnakFromBelow(int si, int bx) // +++++++++++++++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si); Y = GetStretchY(si + FieldWidth); +#if 1 + StretchedSprites.BltImg(X, Y, aniSpace, 0); + StretchedSprites.BltImg(X, Y - bx * TwoPixels, aniSnikSnakUp, bx); +#else StretchedSprites.BltEx(X, Y, 0); StretchedSprites.BltEx(X, Y - bx * TwoPixels, aniSnikSnakUp + bx); +#endif // +++++++++++++++++++++++++++++++++++++++++++++++++++++ return subDrawSnikSnakFromBelow; @@ -661,8 +713,13 @@ static int subDrawSnikSnakFromRight(int si, int bx) // +++++++++++++++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si + 1); Y = GetStretchY(si); +#if 1 + StretchedSprites.BltImg(X, Y, aniSpace, 0); + StretchedSprites.BltImg(X - bx * TwoPixels, Y, aniSnikSnakLeft, bx); +#else StretchedSprites.BltEx(X, Y, 0); StretchedSprites.BltEx(X - bx * TwoPixels, Y, aniSnikSnakLeft + bx); +#endif // +++++++++++++++++++++++++++++++++++++++++++++++++++++ return subDrawSnikSnakFromRight; @@ -678,8 +735,13 @@ static int subDrawSnikSnakFromAbove(int si, int bx) // +++++++++++++++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si); Y = GetStretchY(si - FieldWidth); +#if 1 + StretchedSprites.BltImg(X, Y, aniSpace, 0); + StretchedSprites.BltImg(X, Y + bx * TwoPixels, aniSnikSnakDown, bx); +#else StretchedSprites.BltEx(X, Y, 0); StretchedSprites.BltEx(X, Y + bx * TwoPixels, aniSnikSnakDown + bx); +#endif // +++++++++++++++++++++++++++++++++++++++++++++++++++++ return subDrawSnikSnakFromAbove; @@ -695,8 +757,13 @@ static int subDrawSnikSnakFromLeft(int si, int bx) // +++++++++++++++++++++++++++++++++++++++++++++++++++++ X = GetStretchX(si - 1); Y = GetStretchY(si); +#if 1 + StretchedSprites.BltImg(X, Y, aniSpace, 0); + StretchedSprites.BltImg(X + bx * TwoPixels, Y, aniSnikSnakRight, bx); +#else StretchedSprites.BltEx(X, Y, 0); StretchedSprites.BltEx(X + bx * TwoPixels, Y, aniSnikSnakRight + bx); +#endif // +++++++++++++++++++++++++++++++++++++++++++++++++++++ return subDrawSnikSnakFromLeft;