GraphicsConverter Ver 2.0

<---Information

このツールはDIB(デバイス独立ビットマップ)からGAMEBASIC for SEGASATURNフォーマットの ビットマップイメージ、およびテクスチャデータを作ることを目的としたものです。 また、コンバート機能だけでなく、拡大縮小、減色、透過処理など、簡単な画像処理機能、 および、LZSS圧縮ができます。

<---Explanation

<--開く

対応ファイルはWindowsDIB,SSBASICBitmap,LZSS圧縮されたSSBASICBitmapです。 ドラッグ&ドロップにも対応しています。

<--保存

現在表示されている画像をDIB形式で書き出します。

<--コンバート

○ビットマップ・・・SSBAISC形式のビットマップです。8bit、24bit画像に対して有効です。 ○テクスチャ ・・・1bit、4bit、8bit、24bit画像に対して有効です。幅は8の倍数である必要があります。 ○キャラクタ ・・・8×8ブロックで切り出します。8bit画像でかつ、幅、高さともに8の倍数である必要があります。 ○バイナリ形式・・・データをバイナリ形式で出力します。 ○テキスト形式・・・データを16進数に変換し、DATAをつけて出力します。 ○LZSS圧縮・・・コンバートしたデータにLZSS圧縮をかけます。テクスチャ、キャラクタデータに対して有効です。 ○パレット ・・・パレットデータを付加するか付加しないかを設定します。 LZSS圧縮を使用した場合は次のデコードプログラムで復号してください。 '--------------------------------- 'LZSS Ver 2.0 DECODER '--------------------------------- *LZSS_decoder poke 512,0,lzss$:p=6:c=0:pt=0:num=peek(512,4)*256+peek(512,5) for t=0 to num-1:poke 256,t*8,right$(bin$(peek(512,p),1),8):p=p+1:next *lzss_loop if peek(256,c)=48 then poke 0,pt,peek(512,p):p=p+1:pt=pt+1 else n=peek(512,p)*256+peek(512,p+1):b=(n and &Hffe0)/32:n=(n and &H1f)+3 poke 0,pt,peek$(0,pt-b,n):p=p+2:pt=pt+n endif if p<len(lzss$) then c=c+1:goto *lzss_loop return

<--拡大縮小

○幅 ・・・画像の幅を指定します。 ○高さ ・・・画像の高さを指定します。 ○縦横比を固定・・・元画像の縦横比を元に比率を固定します。 パレット使用(256色以下)の場合は近傍画素を用いて拡大します。 フルカラーの場合、拡大時は線形補完、縮小時は領域の平均で縮小します。 一般に、フルカラーでない場合も24bitに変換し、拡大縮小を行ったあと減色すると 高い品質が得られます。

<--色数変更

○色数 ・・・画像のビット数を変更します。 ○ディザリング・・・誤差拡散ディザをかけます。より自然に減色できますが、圧縮率は落ちます。 ○パレット ・・・減色時に最適化パレットを作成するか、SSBASIC標準パレットを使用するか設定します。 ○精度 ・・・最適パレット選択時の精度です、数値が小さいほど品質は上がりますが、速度は落ちます。
色数を16bitにした場合は実質的には24bitビットマップと同じです。 ハイカラーでディザリングをする時に使用します。 減色アルゴリズムはマージ法を使用しています。 高速に高品質なパレットが得られますが、画像サイズが大きくなるほど品質が落ちます。 320*224を基準と考えてください。 また、SSBASICの発色数が32768色のため作成されたパレットはRGB各32階調に最適化されています。

<--透過色

カラーキーを設定します。 画像上をクリックすると、色が選択されます。 その状態で透過色ボタンを押すと、その色を透過色として設定します。 具体的にはコンバート時に256色以下ではパレット番号を0に、32768色では最上位ビットを0にします。もう一度、ボタンを押すか、画像外でクリックしてからボタンを押すと、キャンセルできます。

<---ConvertDataUsing

256色ビットマップのロード
screen 1 clear ,1600 gload "デバイス名:ファイル名.0" 32768色ビットマップのロード
screen 0 clear ,1600 gload "デバイス名:ファイル名.1" テクスチャのロード(16色、バイナリ) open "デバイス名:ファイル名" for input as 1 fread 1,w$,2:w=val("&H"+binhex$(w$)) fread 1,h$,2:h=val("&H"+binhex$(h$)) fread 1,p$,32 fread 1,i$,w*h/2 close 1 palette 10,0,p$ settex テクスチャID,w,h,16,i$ テクスチャのロード(256色、バイナリ) open "デバイス名:ファイル名" for input as 1 fread 1,w$,2:w=val("&H"+binhex$(w$)) fread 1,h$,2:h=val("&H"+binhex$(h$)) fread 1,p$,512 fread 1,i$,w*h close 1 palette 10,0,p$ settex テクスチャID,w,h,256,i$ テクスチャのロード(32768色、バイナリ) open "デバイス名:ファイル名" for input as 1 fread 1,w$,2:w=val("&H"+binhex$(w$)) fread 1,h$,2:h=val("&H"+binhex$(h$)) fread 1,i$,w*h*2 close 1 settex テクスチャID,w,h,32768,i$

このソフトはフリーソフトです。配布などは自由です。

バグ情報などお寄せ下さい。
http://village.infoweb.ne.jp/~fwkh5941