Mercurial > hg > forks > pwpunix
view nykyaeka/sprites.pl @ 62:0e2d7767c00d
convcalc_ascii()'s one argument is unused, remove it.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sat, 09 Jul 2011 11:57:54 +0300 |
parents | acb5694e93d9 |
children |
line wrap: on
line source
#!/usr/bin/perl # color=>grayscale palettes: # # 0x00,0x08,0x80,0x88,0x87,0x78,0x77,0x7f,0xf7,0xff ########################### $spritz="sprite*allbmps[]={"; $wrct=0; sub wr { printf("0x%x,",$_[0]); $wrct+=5; if($wrct>=70){printf("\n");$wrct=0;} } sub wrrle { my ($ch,$cnt)=($_[0],$_[1]); if($cnt==0){return;} $z=-1; for($i=0;$i<7;$i++){if($cpal[$i] eq $ch){$z=$i;}} if($z==-1) { $cpal[$cpalidx]=$ch; $cpalidx++; if($cpalidx==7){$cpalidx=0;} wr((7<<5)|$cnt); if($pal{ord($ch)} eq '') { print "/* ERROR - $ch */"; } print $pal{ord($ch)}.","; $sz+=3; } else { wr(($z<<5)|$cnt); $sz++; } } sub bitmap { $bmpname=$_[0]; $sz=0; @colors=split('/',$_[1]); foreach(@colors) { ($ch,$col,$msk)=split(':',$_); $pal{ord($ch)}="0x".$col.",0x".$msk; } @lines=split("\n",$_[2]); $xdim=0;$ydim=0; foreach(@lines) { if(length($_)>$xdim) { $xdim=length($_); } } print "u8*".$bmpname."_pict,".$bmpname."_mask;\n"; print "u8 ".$bmpname."_cmpr[]={\n"; $ydim=0; @cpal=('å','å','å','å','å','å','å');$cpalidx=0; $repch="å";$repcnt=0; foreach(@lines) { for($x=0;$x<$xdim;$x++) { $ch=substr($_,$x,1); if($ch eq "") { $ch=" "; } if($ch eq $repch) { $repcnt++; if($repcnt==31){$repcnt=0;wrrle($repch,31);} } else { wrrle($repch,$repcnt); $repch=$ch;$repcnt=1; } } $ydim++; } wrrle($repch,$repcnt); print "};\n"; print "sprite $bmpname ={ $xdim,$ydim,(char*)$sz,$bmpname"."_cmpr};\n\n"; $spritz .= '&'.$bmpname.','; } &bitmap('pwp_sf','x:7f:00/ =:00:ff',<<EOD); xxxxxxxxxxx xxxxxxxxxxxxx xx xx xx xx xx xxx x x xxx xx xx x x x x x x xx xx x x x x x x x xx xx xxx x x x xxx xx xx x x x x x xx xx x x x x x xx xx x xxxxx x xx xx xx xx xx xxxxxxxxxxxxx xxxxxxxxxxx EOD &bitmap('esittaa','x:7f:00/ =:00:ff',<<EOD); x x x x x x xxx xxx x xxx xxx xxxx xxxx x x x x x x x x x xxxx xxx x x x x x x x x x x x x x x x x xxx xxxxx x x xx xxx xxx x EOD &bitmap('forevisar','x:7f:00/ =:00:ff',<<EOD); x x xx xx x xx xx x x x xxx xxxx x xx x x x xx x x x x x x x xx x x x x xxx x x x xxx x x x xxxxx x x x x x x x x x x x x xx x xxxx xx x xxxx xxx x x x EOD &bitmap('pelu','n:44:00/-:00:ff/ :00:ff/@:87:00/.:11:82/x:44:00/Z:e6:00/o:ff:00',<<EOD); -------------------------------- - - - - nnnnnnnnnnn nn nn xxxxxxxxxxxxx xxxxxxxxxx ....ZZZZZZ .....@@@@@ .o...@@@@@ ....@@@@@@@ @@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @@@@ xx @@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@@@@@ @@@@@ @@@@ - - - - - - EOD &bitmap('piimae','-:00:ff/k:ee:00/ :00:ff/!:66:00/=:7f:00/x:00:00/;:6e:88',<<EOD); -------------------------------- - - - kkkk !!!! !!!! !!!;!! !!!!!;!!!! !!!!!!!!!!!! !!!!!!!!!;;;!! !!!!!!!!!!!;;!!! !!!!!!!!!!!!;!!! !!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! ================ =xxxxx==x==x==x= =x===x==x==x==xx =xxxxx==x==x==x= =x======x==x==x= =x======x==x==x= =x======x==x==x= ================ !!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! - - - - - EOD &bitmap('taehti','-:44:00/ :44:00/*:6e:00',<<EOD); -------------------------------- - - - * * * - ** *** ** - ******* - ******* - *********** - ******* - ******* - ** *** ** - * * * - - - *** **** ** **** **** - ** ** ** ** ** ** ** ** ** - ** ** ** ***** ** ** - ** ** ** ** ** ** ** ** ** - *** **** ** **** **** - - - * * * * * * * * * * * * - *** *** *** *** - * * * * * * * * * * * * - - - - - - - EOD &bitmap('tankki','z:77:00/ :00:ff/0:00:00/x:88:00',<<EOD); zzzz zzzzzzzzzzzzzzzzzzzzzzzzzzz zzz zzzz xxxxxxxxxxx zxzxzzzxzzxzxzzzzzzzzzzzzzxzzzxzzzxz zzxxxxzxxxxzxxxxzxxxxzxxxxzxxxxzxxxxzz zzx000zx000zx000zx000zx000zx000zx000zz zzx000zx000zx000zx000zx000zx000zx000zz EOD &bitmap('tumpsa','x:88:00/ :00:ff',<<EOD); x xx xxxx EOD &bitmap('isanta',' :00:ff/x:44:00/z:02:00/;:77:00/0:00:00/b:19:00/y:6e:00',<<EOD); zzzz zzzzzzz ;;; ;;;;;; ;;; xxxxxxx ;0;;0; ;;;yy ;0;;0; ;;;;;; bbyy ;;;;;; ;00; bbbb yy yyyyyy bbbbbbbbbbb yyyyyyyyyy bbbbbbbbbbb y yyyyyyyyyyy;bbbbbbbbb yyyyyyyyyy bbbbbbbbb yyyyyyyyyy bbbbbb yyyyyyyyyy 00 00 yyyyyyyyyy 0000 0000 000 000 0000 0000 EOD print <<JOOH; void decompress_bitmap(u8*dpic,u8*dmask,u8*s,int count) { u8 pal[7],palm[7],palidx=0; u8 col,msk,rep,*s1=s+count; while(s<s1) { u8 a=*s++; rep=a&31; col=a>>5; if(col==7){pal[palidx]=col=*s++;palm[palidx]=msk=*s++;palidx++;if(palidx==7)palidx=0;} else{msk=palm[col];col=pal[col];} if(rep) for(;rep;rep--){*dpic++=col;*dmask++=msk;} } } JOOH print $spritz,"NULL };\n"; print <<JOOH2 void decompress_allbmp() { u8*d,*d2; sprite**s=allbmps; while(*s) { d=malloc((*s)->width*(*s)->height*sizeof(u8)); d2=malloc((*s)->width*(*s)->height*sizeof(u8)); decompress_bitmap(d,d2,(*s)->mask,(int)((*s)->pict)); (*s)->pict=d; (*s)->mask=d2; s++; } } JOOH2