Mercurial > hg > forks > pwpunix
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 |