comparison oldchsool/sprites.pl @ 0:acb5694e93d9

Initial import.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 18 May 2010 04:25:44 +0300
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:acb5694e93d9
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