0
|
1 #!/usr/bin/perl
|
|
2 ##!/opt/bin/perl5
|
|
3
|
|
4 # color=>grayscale palettes:
|
|
5 #
|
|
6 # 0x00,0x08,0x80,0x88,0x87,0x78,0x77,0x7f,0xf7,0xff
|
|
7
|
|
8 ###########################
|
|
9
|
|
10 $spritz="sprite*allbmps[]={";
|
|
11
|
|
12 $wrct=0;
|
|
13 sub wr
|
|
14 {
|
|
15 printf("0x%x,",$_[0]);
|
|
16 $wrct+=5;
|
|
17 if($wrct>=70){printf("\n");$wrct=0;}
|
|
18 }
|
|
19
|
|
20 sub wrrle
|
|
21 {
|
|
22 my ($ch,$cnt)=($_[0],$_[1]);
|
|
23
|
|
24 if($cnt==0){return;}
|
|
25
|
|
26 $z=-1;
|
|
27 for($i=0;$i<7;$i++){if($cpal[$i] eq $ch){$z=$i;}}
|
|
28
|
|
29 if($z==-1)
|
|
30 {
|
|
31 $cpal[$cpalidx]=$ch;
|
|
32 $cpalidx++;
|
|
33 if($cpalidx==7){$cpalidx=0;}
|
|
34 wr((7<<5)|$cnt);
|
|
35 if($pal{ord($ch)} eq '') { print "/* ERROR - $ch */"; }
|
|
36 print $pal{ord($ch)}.",";
|
|
37 $sz+=3;
|
|
38 }
|
|
39 else
|
|
40 {
|
|
41 wr(($z<<5)|$cnt);
|
|
42 $sz++;
|
|
43 }
|
|
44 }
|
|
45
|
|
46 sub bitmap
|
|
47 {
|
|
48 $bmpname=$_[0];
|
|
49 $sz=0;
|
|
50
|
|
51 @colors=split('/',$_[1]);
|
|
52 foreach(@colors)
|
|
53 {
|
|
54 ($ch,$col,$msk)=split(':',$_);
|
|
55 $pal{ord($ch)}="0x".$col.",0x".$msk;
|
|
56 }
|
|
57
|
|
58 @lines=split("\n",$_[2]);
|
|
59 $xdim=0;$ydim=0;
|
|
60
|
|
61 foreach(@lines)
|
|
62 {
|
|
63 if(length($_)>$xdim) { $xdim=length($_); }
|
|
64 }
|
|
65
|
|
66 print "u8*".$bmpname."_pict,".$bmpname."_mask;\n";
|
|
67 print "u8 ".$bmpname."_cmpr[]={\n";
|
|
68 $ydim=0;
|
|
69
|
|
70 @cpal=('å','å','å','å','å','å','å');$cpalidx=0;
|
|
71 $repch="å";$repcnt=0;
|
|
72 foreach(@lines)
|
|
73 {
|
|
74 for($x=0;$x<$xdim;$x++)
|
|
75 {
|
|
76 $ch=substr($_,$x,1);
|
|
77 if($ch eq "") { $ch=" "; }
|
|
78
|
|
79 if($ch eq $repch)
|
|
80 {
|
|
81 $repcnt++;
|
|
82 if($repcnt==31){$repcnt=0;wrrle($repch,31);}
|
|
83 }
|
|
84 else
|
|
85 {
|
|
86 wrrle($repch,$repcnt);
|
|
87 $repch=$ch;$repcnt=1;
|
|
88 }
|
|
89 }
|
|
90 $ydim++;
|
|
91 }
|
|
92 wrrle($repch,$repcnt);
|
|
93 print "};\n";
|
|
94 print "sprite $bmpname ={ $xdim,$ydim,(char*)$sz,$bmpname"."_cmpr};\n\n";
|
|
95
|
|
96 $spritz .= '&'.$bmpname.',';
|
|
97 }
|
|
98
|
|
99 &bitmap('oldsk',' :00:ff/o:88:00/;:67:00/b:78:00/x:ff:00',<<EOD);
|
|
100 ;;;;;;
|
|
101 bbb;;;;;;
|
|
102 bbbb;;;;;;b;
|
|
103 ; b;;;;;;;;;bbb; ;
|
|
104 ;;;;;xxxxxx;;;;;;;;;;;;
|
|
105 ;;;;;x;;;;x;xxxxxx;;;;
|
|
106 ;;;; x;xx;x;x;;;;x;;;
|
|
107 ;; x;;;;x;x;xx;x;;
|
|
108 xxxxxx;x;;;;x
|
|
109 ;;;;;xxxxxx
|
|
110 ;;;;;;;;;;
|
|
111 bbb;o;o;;bbb
|
|
112 bbbbbbbbbbbbb
|
|
113 bbbbbbbbbb
|
|
114 bbbbbbbbb
|
|
115 bbbbbbbb
|
|
116 bb bbbb
|
|
117 bb bbb
|
|
118 bb
|
|
119 b
|
|
120 EOD
|
|
121 # ppppppppppppp ppppp ppppp pppppppppppppp
|
|
122 # ppppppppppppp ppppp ppppp pppppppppppppp
|
|
123 # ppppp ppppp ppppp ppppp ppppp ppppp
|
|
124 # ppppp ppppp ppppp ppppp ppppp ppppp
|
|
125 # ppppppppppppp ppppp ppp ppppp pppppppppppppp
|
|
126 # ppppppppppppp ppppp ppp ppppp pppppppppppppp
|
|
127 # ppppp ppppp ppp ppppp ppppp
|
|
128 # ppppp ppppppppppppppppppp ppppp
|
|
129 # ppppp ppppppppppppppppppp ppppp
|
|
130 #
|
|
131 &bitmap('bdash0',' :00:ff/b:44:00/*:77:00/b:6e:00/w:55:00',<<EOD);
|
|
132
|
|
133
|
|
134 wwww
|
|
135 wwwwwwww
|
|
136 ww wwwwww
|
|
137 ww wwwwww
|
|
138 wwwwww
|
|
139 wwww
|
|
140 ****
|
|
141 **wwww
|
|
142 ****
|
|
143 bbwwwwbbbb
|
|
144 bb ww
|
|
145 bb ww
|
|
146 wwww
|
|
147
|
|
148 EOD
|
|
149 &bitmap('bdash1',' :00:ff/b:44:00/*:77:00/b:6e:00/w:55:00',<<EOD);
|
|
150
|
|
151
|
|
152 wwww
|
|
153 wwwwwwww
|
|
154 ww wwwwww
|
|
155 ww wwwwww
|
|
156 wwwwww
|
|
157 wwww
|
|
158 ****
|
|
159 **wwww
|
|
160 ****
|
|
161 bbwwwwbb
|
|
162 bb bb
|
|
163 bb bbww
|
|
164 wwww ww
|
|
165
|
|
166 EOD
|
|
167 &bitmap('bdash2',' :00:ff/b:44:00/*:77:00/b:6e:00/w:55:00',<<EOD);
|
|
168
|
|
169
|
|
170
|
|
171 wwww
|
|
172 wwwwwwww
|
|
173 ww wwwwww
|
|
174 ww wwwwww
|
|
175 wwwwww
|
|
176 wwww
|
|
177 ****
|
|
178 **wwww
|
|
179 ****
|
|
180 wwww
|
|
181 bbbb
|
|
182 bbbbww
|
|
183 wwww ww
|
|
184
|
|
185 EOD
|
|
186 &bitmap('bdash3',' :00:ff/b:44:00/*:77:00/b:6e:00/w:55:00',<<EOD);
|
|
187
|
|
188
|
|
189
|
|
190 wwww
|
|
191 wwwwwwww
|
|
192 ww wwwwww
|
|
193 ww wwwwww
|
|
194 wwwwww
|
|
195 wwww
|
|
196 ****
|
|
197 **wwww
|
|
198 ****
|
|
199 wwww
|
|
200 bbbbbbbb
|
|
201 bbbbbb ww
|
|
202 wwww ww
|
|
203
|
|
204 EOD
|
|
205 &bitmap('bdash4',' :00:ff/b:44:00/*:77:00/b:6e:00/w:55:00',<<EOD);
|
|
206
|
|
207
|
|
208 ww ww
|
|
209 ww ww
|
|
210 ww wwww ww
|
|
211 ww wwww ww
|
|
212 wwwwwwww
|
|
213 wwww
|
|
214 wwwwwwww
|
|
215 ww **** ww
|
|
216 ** wwww **
|
|
217 ****
|
|
218 wwww
|
|
219 bb****bb
|
|
220 bb bb
|
|
221 ww bb
|
|
222 wwww wwww
|
|
223 EOD
|
|
224 &bitmap('brick0',' :00:00/w:93:00/*:77:00',<<EOD);
|
|
225 wwwwwwwwwwwwwwww
|
|
226 wwwwwwwwwwwwwwww
|
|
227 ww wwww ww
|
|
228 wwww wwwwww ww
|
|
229 ww** wwww** ww
|
|
230 wwwwwwwwwwwwwwww
|
|
231 wwwwwwwwwwwwwwww
|
|
232 wwwwwwwwwwwwwwww
|
|
233 wwwwwwwwwwwwwwww
|
|
234 wwwwwwwwwwwwwwww
|
|
235 wwwwwwwwwwwwwwww
|
|
236 ww wwww ww
|
|
237 wwww wwwwww ww
|
|
238 ww** wwww** ww
|
|
239 wwwwwwwwwwwwwwww
|
|
240 wwwwwwwwwwwwwwww
|
|
241 EOD
|
|
242 &bitmap('brick1',' :00:00/w:ff:00/*:77:00/x:88:00',<<EOD);
|
|
243 www wwwwwwwwww
|
|
244 **x ww********
|
|
245 *xx ww*xxx**xx
|
|
246
|
|
247
|
|
248 wwwwwwwwww www
|
|
249 *********w ww*
|
|
250 xx*xx**xxx ww*
|
|
251
|
|
252
|
|
253 wwwwww wwwwwww
|
|
254 *****x ww*****
|
|
255 *****x ww*****
|
|
256 *xx*xx ww*xxx*
|
|
257
|
|
258
|
|
259 EOD
|
|
260 &bitmap('pelush1',' :00:ff/r:44:00/Y:66:00/y:38:00/.:11:00/W:77:00',<<EOD);
|
|
261 yyyyyyyy
|
|
262 yy
|
|
263 rrrrrrrrr
|
|
264 rrrrrrrrrrrrrr
|
|
265 YYYYYY.....
|
|
266 WWWWWW...WW.
|
|
267 WWWWWWW.....
|
|
268 WWWWWWWWWWWW
|
|
269 WWWWWWWWWWWWWW
|
|
270 WWWWWWWWWWWWWWWW
|
|
271 WWWWWW
|
|
272 WWWWWWWW
|
|
273 WWWWWWWWWWW rr
|
|
274 WWWWWWWWWWWWWW
|
|
275 WWWWWWWWWW
|
|
276 WWWWWW
|
|
277 EOD
|
|
278 &bitmap('pelush0',' :00:ff/r:44:00/Y:66:00/y:38:00/.:11:00/W:77:00',<<EOD);
|
|
279 yyyyyy
|
|
280 yy
|
|
281 rrrrrrrrr
|
|
282 rrrrrrrrrrrrrr
|
|
283 YYYYYY.....
|
|
284 WWWWWW...WW.
|
|
285 WWWWWWW.....
|
|
286 WWWWWWWWWWWW
|
|
287 WWWWWWWWWWWWWW
|
|
288 WWWWWWWWWWWWWWWW
|
|
289 WWWWWW
|
|
290 WWWWWW
|
|
291 WWWWWWW
|
|
292 WWWWWWW rr
|
|
293 WWWWWWWWWWWWWW
|
|
294 WWWWWWWWWWW
|
|
295 EOD
|
|
296 &bitmap('pelush2',' :00:ff/r:44:00/Y:66:00/y:38:00/.:11:00/W:77:00',<<EOD);
|
|
297 yyyy
|
|
298 yy
|
|
299 rrrrrrrr
|
|
300 rrrrrrrrrrrrr
|
|
301 YYYYYYYYYY
|
|
302 WWWWW......
|
|
303 WWWWWWWWWWW
|
|
304 WWWWWWWWWWW
|
|
305 WWWWWWWWWWWWW
|
|
306 WWWWWWWWWWWWWWW
|
|
307 WWWWW
|
|
308 WWWWWWWWWWWWWWW
|
|
309 WWWWWWWWWWWWWW
|
|
310 WWWWWWWWWWW
|
|
311 WWWWWWW
|
|
312
|
|
313 EOD
|
|
314 &bitmap('boulder','.:00:ff/x:33:00/y:37:00/;:88:00',<<EOD);
|
|
315 ................
|
|
316 ......xxxxx.....
|
|
317 .....xxxxxxx....
|
|
318 ....xxxyyyyxx...
|
|
319 ...xxxxxxxyxx...
|
|
320 ...;xxxxxxyyyx..
|
|
321 ..xxxxxxxxxxyx..
|
|
322 ..xxxxxxxxxxxxx.
|
|
323 .xxxxxxxxxxxxxx.
|
|
324 .xxxxxxxxxxxxxx.
|
|
325 .;xxxxxxxyxyxyx.
|
|
326 .;xxxxxxxxyxyx..
|
|
327 ..;xxxxxxxxyxy..
|
|
328 ..;xxxxxxxyxy...
|
|
329 ...;xxxxxxxyx...
|
|
330 ....;xxxxxxx....
|
|
331 EOD
|
|
332 &bitmap('splat0',' :00:ff/b:44:00/B:4c:00',<<EOD);
|
|
333
|
|
334
|
|
335
|
|
336 bb
|
|
337
|
|
338 bbbbb
|
|
339 bb bb
|
|
340 bbbbb
|
|
341 bbBBBBBbb
|
|
342 bbBBBBBBbb b
|
|
343 bbbbbbbb b
|
|
344 bbbbbbbb
|
|
345 bbbb
|
|
346 bbbb
|
|
347
|
|
348 bb
|
|
349 EOD
|
|
350 &bitmap('splat1',' :00:ff/b:44:00/B:cc:00',<<EOD);
|
|
351 bbbb
|
|
352
|
|
353 bbb
|
|
354 bbbbbb
|
|
355 bbbbbbb
|
|
356 bbbbbbbbb
|
|
357 bbBbbbBbbbb
|
|
358 bbbbbbBbbbb
|
|
359 bbbBBBBBbbbb
|
|
360 bBBBBBBBBbbbb
|
|
361 BbBBBBBbbbb
|
|
362 bbbbBBBbbbb
|
|
363 bbbbbbbbbb
|
|
364 bbbbbbbb
|
|
365
|
|
366
|
|
367 EOD
|
|
368 &bitmap('splat2',' :00:ff/b:4c:00/B:ce:00/x:ee:00',<<EOD);
|
|
369 bbbbbb
|
|
370 bbbbbxbbb
|
|
371 bbbbbbbbbbb
|
|
372 bbbbbbxBBbbb
|
|
373 bbbbBBxBBbbb
|
|
374 bbbbBBBxBbbbbb
|
|
375 bbbxBBxxxbbxbb
|
|
376 bxbxBxxxbbbxb
|
|
377 bbbbbBBxBBbbbb
|
|
378 bbbBBBBxBBBbbbb
|
|
379 bBbBBBxBbbbb
|
|
380 bbbbBBBbbbbb
|
|
381 bbbbbbbbbbb
|
|
382 bbbbbxbb
|
|
383 bbbb
|
|
384 EOD
|
|
385 &bitmap('splat3',' :00:ff/b:6e:00/B:66:00/x:ee:00',<<EOD);
|
|
386 bbbbbb
|
|
387 bbbbbbbbbb
|
|
388 bbbbbbbbbbbbb
|
|
389 bbbbbb BBbbbb
|
|
390 bbbb b bbb
|
|
391 bbbb bbbb
|
|
392 bbbx bxbb
|
|
393 bxb bbxb
|
|
394 bbbb bbb
|
|
395 bbbBB bbbbb
|
|
396 bbBbBBBxBbbbbb
|
|
397 bbbbbbbbbbbbb
|
|
398 bbbbbbbbbbb
|
|
399 bbbbbxbb
|
|
400 bbbbb
|
|
401 EOD
|
|
402 &bitmap('splat4',' :00:ff/b:40:00/x:04:00',<<EOD);
|
|
403 bbb bb
|
|
404 b bb bb
|
|
405 bbb bb
|
|
406 b
|
|
407 bb b bbb
|
|
408 bb bb
|
|
409 bb
|
|
410
|
|
411 b bb
|
|
412 b bbb
|
|
413 b b b bb
|
|
414 bbbb bb bb
|
|
415 bbbb
|
|
416 bbbbbxbb
|
|
417 bbbbb
|
|
418 EOD
|
|
419 &bitmap('tietzka',' :00:ff/*:77:ff/B:99:ff/w:66:ff/!:ff:ff',<<EOD);
|
|
420
|
|
421
|
|
422 ********
|
|
423 *BBBBBB*
|
|
424 *BBBBBB* ****
|
|
425 *BBBBBB* *!!*
|
|
426 ******** ****
|
|
427 ****** ****
|
|
428 **** ****
|
|
429 wwwwwwwwwwwwwww
|
|
430 wwwww wwwww
|
|
431 www www
|
|
432 www www
|
|
433 EOD
|
|
434
|
|
435
|
|
436 &bitmap('pelu','n:44:00/-:00:ff/ :00:ff/@:87:00/.:11:82/x:44:00/Z:e6:00/o:ff:00',<<EOD);
|
|
437 --------------------------------
|
|
438 nnnnnnnnnnn
|
|
439 nn
|
|
440 nn
|
|
441 xxxxxxxxxxxxx
|
|
442 xxxxxxxxxx
|
|
443 ....ZZZZZZ
|
|
444 .....@@@@@
|
|
445 .o...@@@@@
|
|
446 ....@@@@@@@
|
|
447 @@@@@@@@@@@
|
|
448 @@@@@@@@@@@@@
|
|
449 @@@@@@@@@@@@@@@
|
|
450 @@@@
|
|
451 xx @@@@@@@
|
|
452 @@@@@@@@@@@@@
|
|
453 @@@@@@@@@@@
|
|
454 @@@@@@@@@
|
|
455 @@@@@@@@@
|
|
456 @@@@@@
|
|
457 @@@@@
|
|
458 @@@@
|
|
459 EOD
|
|
460
|
|
461 print <<JOOH;
|
|
462 void decompress_bitmap(u8*dpic,u8*dmask,u8*s,int count)
|
|
463 {
|
|
464 u8 pal[7],palm[7],palidx=0;
|
|
465 u8 col,msk,rep,*s1=s+count;
|
|
466
|
|
467 while(s<s1)
|
|
468 {
|
|
469 u8 a=*s++;
|
|
470
|
|
471 rep=a&31;
|
|
472 col=a>>5;
|
|
473
|
|
474 if(col==7){pal[palidx]=col=*s++;palm[palidx]=msk=*s++;palidx++;if(palidx==7)palidx=0;}
|
|
475 else{msk=palm[col];col=pal[col];}
|
|
476
|
|
477 if(rep)
|
|
478 for(;rep;rep--){*dpic++=col;*dmask++=msk;}
|
|
479 }
|
|
480 }
|
|
481 JOOH
|
|
482
|
|
483 print $spritz,"NULL };\n";
|
|
484
|
|
485 print <<JOOH2
|
|
486 void decompress_allbmp()
|
|
487 {
|
|
488 u8*d,*d2;
|
|
489 sprite**s=allbmps;
|
|
490 while(*s)
|
|
491 {
|
|
492 d=malloc((*s)->width*(*s)->height*sizeof(u8));
|
|
493 d2=malloc((*s)->width*(*s)->height*sizeof(u8));
|
|
494 decompress_bitmap(d,d2,(*s)->mask,(int)((*s)->pict));
|
|
495 (*s)->pict=d;
|
|
496 (*s)->mask=d2;
|
|
497 s++;
|
|
498 }
|
|
499 }
|
|
500 JOOH2
|