1 /***********************************************************
2 *                      K O U L E S                         *
3 *----------------------------------------------------------*
4 *  C1995 JAHUSOFT                                          *
5 *        Jan Hubicka                                       *
6 *        Dukelskych Bojovniku 1944                         *
7 *        390 03 Tabor                                      *
8 *        Czech Republic                                    *
9 *        Phone: 0041-361-32613                             *
10 *        eMail: hubicka@paru.cas.cz                        *
11 *----------------------------------------------------------*
12 *   Copyright(c)1995,1996 by Jan Hubicka.See README for    *
13 *                     Liecnece details.                    *
14 *----------------------------------------------------------*
15 *  cmap.c cmap routines for 256color librarys-svgalib style*
16 ***********************************************************/
17 
18 #include "koules.h"
19 static INLINE int
col(int p,CONST float p1)20 col (int p, CONST float p1)
21 {
22   p *= p1;
23   if (p > 63)
24     return (63);
25   if (p < 0)
26     return (0);
27   return (p);
28 }
29 
30 int             fadedout = 0;
31 void
setcustompalette(CONST int p,CONST float p1)32 setcustompalette (CONST int p, CONST float p1)
33 {
34   /* 0-31 black to yellow for starwars scroller */
35   /* 32-63    black to red */
36   /* 64-96    for red koules */
37   /* 96-128   for yellow rockets */
38   /* 128-160   for green rockets */
39   /* 160-192   for blue rockets */
40   /* 192-256   gray cmap for stars */
41   Palette         pal;
42   int             i;
43   for (i = 0; i < 64; i++)
44     {
45       int             r, g, b;
46       r = g = b = 0;
47       if ((i & 32) > 0)
48 	b = (i & 31) << 1;
49       if (i < 32)
50 	{
51 	  r = (i & 3) << 4;	/* 2 bits */
52 	  g = (i & 4) << 3;	/* 1 bit */
53 	  b = (i & 24) << 1;	/* 2 bits */
54 	}
55       pal.color[i].red = col (r + p, p1);
56       pal.color[i].green = col (g + p, p1);
57       pal.color[i].blue = col (b + p, p1);
58     }
59   for (i = 64; i < 64 + 32; i++)
60     {
61       int             r, g, b;
62       r = g = b = 0;
63       r = (32 - (i - 63)) << 1;
64       if (i < 64 + 8)
65 	{
66 	  b = g = (((8 - (i - 63))) << 5) / 5;
67 	}
68       pal.color[i].red = col (r + p, p1);
69       pal.color[i].green = col (g + p, p1);
70       pal.color[i].blue = col (b + p, p1);
71     }
72   for (i = 96; i < 96 + 32; i++)
73     {
74       int             r, g, b;
75       r = g = b = 0;
76       r = g = (32 - (i - 95)) << 1;
77       if (i < 96 + 8)
78 	{
79 	  b = ((8 - (i - 95))) << 3;
80 	}
81       pal.color[i].red = col (r + p, p1);
82       pal.color[i].green = col (g + p, p1);
83       pal.color[i].blue = col (b + p, p1);
84     }
85   for (i = 128; i < 128 + 32; i++)
86     {
87       int             r, g, b;
88       r = g = b = 0;
89       g = (32 - (i - 127)) << 1;
90       if (i < 128 + 8)
91 	{
92 	  r = b = ((8 - (i - 127))) << 3;
93 	}
94       pal.color[i].red = col (r + p, p1);
95       pal.color[i].green = col (g + p, p1);
96       pal.color[i].blue = col (b + p, p1);
97     }
98   for (i = 160; i < 160 + 32; i++)
99     {
100       int             r, g, b;
101       r = g = b = 0;
102       b = (32 - (i - 159)) << 1;
103       if (i < 160 + 8)
104 	{
105 	  r = g = (((8 - (i - 159))) << 3) / 2;
106 	}
107       pal.color[i].red = col (r + p, p1);
108       pal.color[i].green = col (g + p, p1);
109       pal.color[i].blue = col (b + p, p1);
110     }
111   for (i = 0; i < 32; i++)
112     {
113       pal.color[i].red = col (i * 2 + p, p1);
114       pal.color[i].green = col (i * 2 + p, p1);
115       pal.color[i].blue = col (p, p1);
116     }
117   for (i = 0; i < 32; i++)
118     {
119       pal.color[192 + i].red = col (i * 2 + p, p1);
120       pal.color[192 + i].green = col (i * 2 + p, p1);
121       pal.color[192 + i].blue = col (i * 2 + p, p1);
122     }
123   pal.color[0].red = 0;
124   pal.color[0].green = 0;
125   pal.color[0].blue = 0;
126   pal.color[255].red = col (64 + p, p1);
127   pal.color[255].green = col (64 + p, p1);
128   pal.color[255].blue = col (64 + p, p1);
129   WaitRetrace ();
130   SetPalette (&pal);
131 }
132 void
fadeout()133 fadeout ()
134 {
135   if (!fadedout)
136     {
137       float           i;
138       for (i = 1; i >= 0; i -= 0.1)
139 	{
140 	  setcustompalette (0, i);
141 	  usleep (200), tbreak = 1;
142 
143 	}
144       setcustompalette (-65, 0);
145       fadedout = 1;
146     }
147 }
148 void
fadein()149 fadein ()
150 {
151   if (fadedout)
152     {
153       float           i;
154       for (i = 0; i <= 1; i += 0.1)
155 	{
156 	  setcustompalette (0, i);
157 	  usleep (200), tbreak = 1;
158 
159 	}
160       setcustompalette (0, 1);
161       fadedout = 0;
162     }
163 }
164 void
fadein1()165 fadein1 ()			/*better for star background */
166 {
167   if (fadedout)
168     {
169       int             i;
170       for (i = -64; i <= 0; i += 6)
171 	{
172 	  setcustompalette (i, 1);
173 	  usleep (200), tbreak = 1;
174 
175 	}
176       setcustompalette (0, 1);
177       fadedout = 0;
178     }
179 }
180