File: bit_map.c

package info (click to toggle)
acidwarp 1.0-2
  • links: PTS
  • area: main
  • in suites: hamm, slink
  • size: 260 kB
  • ctags: 130
  • sloc: ansic: 1,885; makefile: 51
file content (243 lines) | stat: -rw-r--r-- 12,023 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
/* Bit_Map Image Uncompressor (C)Copyright 1992 by Noah Spurrier	*/

#include <stdlib.h>
#include "handy.h"
#include "bit_map.h"

/* Bit Map is 2 Bits per pixel, with 4 pixels per byte. The 4 pixels are
 * in a horizontal row. I.e. 1234 NOT 1 NOR 4
 *                                    2     3
 *                                    3     2
 *                                    4     1
 */

UCHAR TITLE_DATA [(X_TITLE * Y_TITLE / 4)] =
{ 
	 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
	 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
	 85, 85, 85, 85, 85, 85,117, 85, 85, 85,117, 85, 85, 85,117, 85, 85,213, 85, 85,
	 85, 85, 85, 85, 85, 87,213, 85, 85, 87,213, 85, 85, 87,213, 85, 95, 85, 85, 85,
	 85, 85, 85, 85, 85,127,213, 85, 85,127, 85, 85, 85,127, 85, 85,255, 85, 85, 85,
	 85, 85, 85, 85, 85,255,213, 85, 85,253, 85, 85, 85,253, 85, 87,255, 85, 85, 85,
	 85, 85, 85, 85, 87,247,213, 85, 87,245, 85, 85, 87,245, 85, 95,223, 85, 85, 85,
	 85, 85, 85, 85,127,215,213, 85,127,213, 85, 85,127,213, 85,255, 95, 85, 85, 85,
	 85, 85, 85, 85,255, 87,213, 85,255, 85, 85, 85,255, 85, 87,253, 95, 85, 85, 85,
	 85, 85, 85, 87,253, 87,213, 87,253, 85, 85, 87,253, 85, 95,245, 95, 85, 85, 85,
	 85, 85, 85, 95,245, 87,213, 95,245, 85, 85, 95,245, 85,127,213, 95, 85, 85, 85,
	 85, 85, 85,127,245, 87,213,127,245, 85, 85,127,245, 85,255,213, 95, 85, 85, 85,
	 85, 85, 85,255,255,255,213,255,213, 85, 85,255,213, 87,255, 85, 95, 85, 85, 85,
	 85, 85, 85,255,255,255,213,255,213, 85, 85,255,213, 87,255, 85, 95, 85, 85, 85,
	 85, 85, 87,255,213, 87,215,255,213, 85, 87,255,213, 95,255, 85, 95, 85, 85, 85,
	 85, 85, 87,255,213, 87,215,255,213, 85, 87,255,213, 95,255, 85, 95, 85, 85, 85,
	 85, 85, 87,255,213, 87,215,255,213, 85, 87,255,213, 95,255, 85, 95, 85, 85, 85,
	 85, 85, 87,255,213, 87,215,255,255,255,215,255,213, 95,255,255,255, 85, 85, 85,
	 85, 85, 87,255,213, 87,215,255,255,255,215,255,213, 95,255,255,255, 85, 85, 85,
	 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
	 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
	170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,
	170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,
	170,170,170,170,170,170,170,170,170,128,  0,  0,  0,170,170,170,170,170,170,170,
	170,170,170,170,170,170,170,168,  0,  0,  0,  0,  0,  0,  2,170,170,170,170,170,
	170,170,170,170,170,170,168,  0,  0,  0,  0,  0,  0,  0,  0,  0,170,170,170,170,
	170,170,170,170,170,170,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,170,170,170,
	170,170,170,170,170,160,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 42,170,170,170,
	170,170,170,170,168,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,170,170,170,170,
	170,170,170,170,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,170,170,170,170,
	170,170,170,170,  0,  0,  0,  0,  0,170,168,  0,  0,  0,  0,  0,170,170,170,170,
	170,170,170,160,  0,  0,  0, 10,170,171,255,252,  0,255,255,  0, 42,170,170,170,
	170,170,170,128,  0,  0, 22,170,171,255,255,255,255,255,255,233, 10,170,170,170,
	170,170,170,  0,  0,  1,106,170,255,255,255,255,255,255,255,255,146,170,170,170,
	170,170,168,  0,  0, 22,170,175,255,255,255,255,255,255,255,255,228,170,170,170,
	170,170,160,  0,  0, 90,170,191,255,255,255,255,255,255,255,255,254,170,170,170,
	170,170,160,  0,  1,106,170,255,255,255,255,255,255,255,255,255,255,170,170,170,
	170,170,160,  0,  5,106,170,255,255,255,255,255,255,255,255,255,255,234,170,170,
	170,170,160,  0,  5,106,170,255,255,255,255,255,255,255,255,255,255,234,170,170,
	170,170,160,  0,  5, 90,170,255,255,255,255,255,255,255,255,255,255,234,170,170,
	170,170,160,  0,  5, 86,170,191,255,255,255,255,255,255,255,255,255,234,170,170,
	170,170,160,  0,  5, 85,170,  0,  0,  3,255,255,255,255,255,255,255,234,170,170,
	170,170,160,  0,  1, 85,  0,  0,  0,  0, 63,255,255,192,  0,  0, 47,234,170,170,
	170,170,160,  0,  0, 80,  2,170,169, 85,107,255,255,  0, 85, 85,  2,170,170,170,
	170,170,160,  0,  0,  0, 22,169, 85, 85, 90,255,253, 86,191,255,226,170,170,170,
	170,170,160,  0,  1, 80, 85, 85, 21, 85, 90,191,253, 85, 69,255,232,170,170,170,
	170,170,134,144,  5, 85, 85, 80,  2,149,106,191,254,149,  0, 90,170,170,170,170,
	170,170,  6, 96, 21, 90,149,104, 10,191,170,191,255,175, 66,165,170,250,170,170,
	170,170,  6,  0, 21,106,170,170,170,255,170,191,255,234,170,170,255,234,170,170,
	170,170,  8, 36, 21,106,191,255,255,255,170,255,255,255,255,255,254,170,170,170,
	170,170,138,170,  5, 90,255,255,255,255,170,255,255,255,255,255,254,170,170,170,
	170,170,138,  2,  0, 90,191,255,255,255,171,255,255,255,255,255,254,170,170,170,
	170,170,133, 40,  0, 22,175,255,255,250,171,255,255,255,255,255,255,170,170,170,
	170,170,160,170,  0, 22,175,255,255,245, 86,175,235,255,255,255,251,170,170,170,
	170,170,168,170,  0, 85,171,255,255,233,106, 86,150,255,255,255,239,170,170,170,
	170,170,170,  1, 65, 85,170,255,255,234,170,175,255,255,255,255,239,170,170,170,
	170,170,170,170,129, 85,106,191,255,234,175,255,255,255,255,255,174,170,170,170,
	170,170,170,170,161, 85,106,171,255,170,255,255,255,255,255,255,170,170,170,170,
	170,170,170,170,160, 85, 90,170,170,165, 85, 85,175,255,255,254,170,170,170,170,
	170,170,170,170,168, 21, 86,170,168,  0,  0,  0,  0, 43,255,250,170,170,170,170,
	170,170,170,170,170,  5, 85,170,170,170,191,255,254,255,255,234,170,170,170,170,
	170,170,170,170,170,160, 85, 90,170,170, 85, 86,170,255,254,170,170,170,170,170,
	170,170,170,170,170,170,  5, 85,170,170,170,170,175,255,250,170,170,170,170,170,
	170,170,170,170,170,170,160, 85,106,175,255,255,255,255,168,170,170,170,170,170,
	170,170,170,170,170,170,170,  5, 90,191,255,255,255,250,138,170,170,170,170,170,
	170,170,170,170,170,170,170,160, 85,175,255,255,255,232,170,170,170,170,170,170,
	170,170,170,170,170,170,170,170,  1,106,191,255,252, 10,170,170,170,170,170,170,
	170,170,170,170,170,170,170,170,168,  0,  0,  0,  2,170,170,170,170,170,170,170,
	170,170,170,170,170,170,170,170,170,160,  0,  0,170,170,170,170,170,170,170,170,
	170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,
	170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,
	 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
	 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
	 85, 85, 85, 85,213, 85, 85, 85,117, 85, 85,213, 85, 85, 85,213, 85, 85, 85,213,
	 85, 85, 85, 95, 85, 85, 85, 87,213, 85, 95, 85, 85, 85, 95, 85, 85, 85, 95, 85,
	 85, 85, 85,253, 85, 85, 85,127, 85, 85,255, 85, 85, 85,255, 85, 85, 85,255, 85,
	 85, 85, 87,245, 85, 85, 85,253, 85, 87,255, 85, 85, 87,255, 85, 85, 87,255, 85,
	 85, 85, 95,213, 85, 85, 87,245, 85, 95,223, 85, 85, 95,223, 85, 85, 95,223, 85,
	 85, 85,255, 85, 85, 85,127,213, 85,255, 95, 85, 85,255, 95, 85, 85,255, 95, 85,
	 85, 87,253, 85, 85, 85,255, 85, 87,253, 95, 85, 87,253, 95, 85, 87,253, 95, 85,
	 85, 95,245, 85, 85, 87,253, 85, 95,245, 95, 85, 95,245, 95, 85, 95,245, 95, 85,
	 85,127,213, 85, 85, 95,245, 85,127,213, 95, 85,127,213, 95, 85,127,213, 95, 85,
	 85,255,213, 85, 85,127,245, 85,255,213, 95, 85,255,213, 95, 85,255,213, 95, 85,
	 87,255, 85, 85,213,255,213, 87,255,255,255, 87,255,255,255, 87,255,255,255, 85,
	 87,255, 85,127, 85,255,213, 87,255,255,255, 87,255,255,255, 87,255,255,255, 85,
	 95,255, 87,255,215,255,213, 95,255, 85, 95, 95,255,253, 85, 95,255, 85, 85, 85,
	 95,255,127,215,247,255,213, 95,255, 85, 95, 95,255, 95,213, 95,255, 85, 85, 85,
	 95,255,253, 85,127,255,213, 95,255, 85, 95, 95,255, 85,253, 95,255, 85, 85, 85,
	 95,255,245, 85, 95,255,213, 95,255, 85, 95, 95,255, 85,127, 95,255, 85, 85, 85,
	 95,255, 85, 85, 87,255,213, 95,255, 85, 95, 95,255, 85,127, 95,255, 85, 85, 85,
	 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
	 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
	 87,247,255,127, 93, 85, 95,215,245,215, 85,127,245,245, 85,255,117,119,127,245,
	 93, 85,117,117,221, 85, 93,119, 93,221, 85, 87, 87, 93, 85,213, 93,215, 87, 85,
	 93, 85,117,127, 93, 95,223,215,245,245, 85, 87, 87, 93, 85,253, 87, 87, 87, 85,
	 93, 85,117,119, 93, 85, 93,119, 93,221, 85, 87, 87, 93, 85,213, 93,215, 87, 85,
	 87,245,117,117,223,213, 95,215, 93,215, 85, 87, 85,245, 85,255,117,119, 87, 85,
	 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
};


/* This function assumes that the colors 0, 9, 17, and 25 will be
 * appropriate for the current palette. See 'switch (bits)' below.
 */

void bit_map_uncompress (UCHAR *buf_graf, UCHAR *bit_data, int x_map, int y_map, int xmax, int ymax)
{
	int x, y, tx, ty;

	int beg_x, beg_y, end_x, end_y;

	int bits2;

	beg_x = (xmax - 2 * x_map) / 2;
	beg_y = (ymax - 2 * y_map) / 2;
	end_x = 2 * x_map + beg_x;
	end_y = 2 * y_map + beg_y;

	if (beg_x < 0 || beg_y < 0 || end_x >= xmax || end_y >= ymax)
		return;

	for (y = beg_y; y < end_y; y += 2)
	{
		for (x = beg_x; x < end_x; x += 2)
		{
			tx = (x - beg_x) / 2;
			ty = (y - beg_y) / 2;

			bits2 = *(bit_data + ((x_map * ty + tx) / 4) );

			switch ((x_map * ty + tx) % 4)
			{
				case 0:
					bits2  &= 0xc0;
					bits2 >>= 6;
				break;

				case 1:
					bits2  &= 0x30;
					bits2 >>= 4;
				break;

				case 2:
					bits2  &= 0x0c;
					bits2 >>= 2;
				break;

				case 3:
					bits2  &= 0x03;
				break;
			}

			switch (bits2)
			{
/*       	case 0 :
          writePixel(x,   y,   RANDOM(8) + 192 + 0);
          writePixel(x+1, y,   RANDOM(8) + 192 + 0);
          writePixel(x,   y+1, RANDOM(8) + 192 + 0);
          writePixel(x+1, y+1, RANDOM(8) + 192 + 0);
				break;

				case 1 :
          writePixel(x,   y,   RANDOM(8) + 192 + 9);
          writePixel(x+1, y,   RANDOM(8) + 192 + 9);
          writePixel(x,   y+1, RANDOM(8) + 192 + 9);
          writePixel(x+1, y+1, RANDOM(8) + 192 + 9);
				break;

				case 2 :
          writePixel(x,   y,   RANDOM(8) + 192 + 17);
          writePixel(x+1, y,   RANDOM(8) + 192 + 17);
          writePixel(x,   y+1, RANDOM(8) + 192 + 17);
          writePixel(x+1, y+1, RANDOM(8) + 192 + 17);
				break;

				case 3 :
          writePixel(x,   y,   RANDOM(8) + 192 + 25);
          writePixel(x+1, y,   RANDOM(8) + 192 + 25);
          writePixel(x,   y+1, RANDOM(8) + 192 + 25);
          writePixel(x+1, y+1, RANDOM(8) + 192 + 25);
				break;
			}
*/
				case 0 :
          *(buf_graf + xmax * (y+0) + (x+0)) = (UCHAR)RANDOM(8) + 192 + 0;
          *(buf_graf + xmax * (y+1) + (x+0)) = (UCHAR)RANDOM(8) + 192 + 0;
          *(buf_graf + xmax * (y+0) + (x+1)) = (UCHAR)RANDOM(8) + 192 + 0;
          *(buf_graf + xmax * (y+1) + (x+1)) = (UCHAR)RANDOM(8) + 192 + 0;
				break;

				case 1 :
          *(buf_graf + xmax * (y+0) + (x+0)) = (UCHAR)RANDOM(8) + 192 + 9;
          *(buf_graf + xmax * (y+1) + (x+0)) = (UCHAR)RANDOM(8) + 192 + 9;
          *(buf_graf + xmax * (y+0) + (x+1)) = (UCHAR)RANDOM(8) + 192 + 9;
          *(buf_graf + xmax * (y+1) + (x+1)) = (UCHAR)RANDOM(8) + 192 + 9;
				break;

				case 2 :
          *(buf_graf + xmax * (y+0) + (x+0)) = (UCHAR)RANDOM(8) + 192 + 17;
          *(buf_graf + xmax * (y+1) + (x+0)) = (UCHAR)RANDOM(8) + 192 + 17;
          *(buf_graf + xmax * (y+0) + (x+1)) = (UCHAR)RANDOM(8) + 192 + 17;
          *(buf_graf + xmax * (y+1) + (x+1)) = (UCHAR)RANDOM(8) + 192 + 17;
				break;

				case 3 :
          *(buf_graf + xmax * (y+0) + (x+0)) = (UCHAR)RANDOM(8) + 192 + 25;
          *(buf_graf + xmax * (y+1) + (x+0)) = (UCHAR)RANDOM(8) + 192 + 25;
          *(buf_graf + xmax * (y+0) + (x+1)) = (UCHAR)RANDOM(8) + 192 + 25;
          *(buf_graf + xmax * (y+1) + (x+1)) = (UCHAR)RANDOM(8) + 192 + 25;
				break;
			}
		}
	}
}

void writeBitmapImageToArray (UCHAR *buf_graf, int image_number, int xmax, int ymax)
{
	switch (image_number)
	{
		case NOAHS_FACE:	/* TITLE IMAGE */
			bit_map_uncompress (buf_graf, TITLE_DATA, X_TITLE, Y_TITLE, xmax, ymax);
		break;

		default:
		break;
	}
}