1 // ----------------------------------------------------------------------------
3 // ----------------------------------------------------------------------------
5 #include "OrangeDisk.h"
7 static char *VB_Name = "modOrangeDisk";
9 // ==========================================================================
11 // Animate/move orange disks (falling)
12 // ==========================================================================
14 int subAnimateOrangeDisks(int si)
16 int subAnimateOrangeDisks;
21 if (LowByte(ax) != fiOrangeDisk)
22 return subAnimateOrangeDisks;
24 if (ax >= 0x3008) // disk is falling
27 if (ax >= 0x2008) // disk is in wait state before falling
30 if (PlayField16[si + FieldWidth] == 0)
33 return subAnimateOrangeDisks;
35 loc_g_27CF: // below is empty -> disk may start to fall
36 MovHighByte(&PlayField16[si], 0x20);
37 MovHighByte(&PlayField16[si + FieldWidth], fiOrangeDisk);
38 return subAnimateOrangeDisks;
41 if (PlayField16[si + FieldWidth] == 0)
43 PlayField16[si] = fiOrangeDisk;
44 return subAnimateOrangeDisks;
47 bl = HighByte(PlayField16[si]) + 1;
48 if (bl == 0x22) // wait phase is finished
51 MovHighByte(&PlayField16[si], bl);
52 return subAnimateOrangeDisks;
54 loc_g_2804: // disk is falling
55 // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
56 dx = HighByte(PlayField16[si]) & 0x7;
59 StretchedSprites.BltEx(X, Y, 0);
60 StretchedSprites.BltEx(X, Y + TwoPixels * (dx + 1), fiOrangeDisk);
61 // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
62 bl = HighByte(PlayField16[si]) + 1;
65 MovHighByte(&PlayField16[si], bl);
66 return subAnimateOrangeDisks;
70 PlayField16[si + FieldWidth] = fiOrangeDisk;
72 if (PlayField16[si + FieldWidth] == 0)
74 MovHighByte(&PlayField16[si], 0x30); // go on falling down
75 MovHighByte(&PlayField16[si + FieldWidth], fiOrangeDisk);
76 return subAnimateOrangeDisks;
79 if (LowByte(PlayField16[si + FieldWidth]) == fiExplosion)
80 return subAnimateOrangeDisks;
82 ExplodeFieldSP(si); // Explode
84 return subAnimateOrangeDisks;
85 } // subAnimateOrangeDisks