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