2015/12/04(金) [n年前の日記]
#1 [cg_tools][dxruby] EDSCIIでMZ-700のキャラグラを描くためのフォント画像とパレット画像を作成
_ASCII/ANSI Artエディタ EDSCII
で、MZ-700のキャラグラを描くためのフォント画像とパレット画像を用意したので置いときます。
_edscii_append_mz700_20151204.zip
こんな感じのキャラグラが描けるようになります。
ちなみに、MZ-700の文字セットを使いながら、パレットはファミコン(NES)のモノを使って描く、てのもなかなか面白いです。若い人達には「それのどこが面白いの?」だけど、当時を知ってるおじさん達だけは一瞬頭がクラクラ、なのです。
_edscii_append_mz700_20151204.zip
こんな感じのキャラグラが描けるようになります。
ちなみに、MZ-700の文字セットを使いながら、パレットはファミコン(NES)のモノを使って描く、てのもなかなか面白いです。若い人達には「それのどこが面白いの?」だけど、当時を知ってるおじさん達だけは一瞬頭がクラクラ、なのです。
◎ 導入の仕方。 :
- 解凍する。
- fontフォルダに入ってる mz700*.png、mz700*.char を、EDSCIIインストールフォルダ\char フォルダにコピー。
- palフォルダに入ってる mz700*.png を、EDSCIIインストールフォルダ\palフォルダにコピー。
◎ 使い方。 :
EDSCII起動後、TABキーを押すとコマンドラインモードに入るので、
char mz700 pal mz700
char mz700a pal mz700みたいな感じで打ち込むと、文字セットやパレットセットが選べます。
◎ フォント画像とパレット画像について。 :
フォント画像は2つありますが、以下のような違いがあります。
パレットは16色ありますが、8色を2度繰り返してるだけで違いはないです。EDSCIIは8色のパレットを渡すと落ちるっぽいので仕方なく。最低16色無いといかんみたいで。これも見れば分かるか…。
- mz700.png は、大文字アルファベット+カタカナ
- mz700a.png は、小文字アルファベット+ひらがな
パレットは16色ありますが、8色を2度繰り返してるだけで違いはないです。EDSCIIは8色のパレットを渡すと落ちるっぽいので仕方なく。最低16色無いといかんみたいで。これも見れば分かるか…。
◎ EDSCIIの制限。 :
一応メモ。
- 256文字までしか扱えない。
- 使うフォント画像は、記号、数字、アルファベットが含まれている状態が望ましい。UI表示にもその文字群を実際に使うので。
- アルファベットは、大文字のみ、小文字のみでも構わない。できれば両方あったほうが望ましい。
- パレットは最低でも16色は必要。8色だとアプリが落ちる。
◎ EDSCIIのショートカットキー。 :
hキーを押して表示されるヘルプの内容をメモ。
ASCII/ANSI Artエディタ EDSCIIの操作方法についてメモ =================================================== ※ LMBはマウスの左クリック、RMBは右クリック、MMBは中ボタン(ホイール)クリック a : pAint ペイント e : erasE 消しゴム r : pickeR スポイト? n : liNe 線描画 3/4 : brush size down/up ブラシサイズ変更 縮小 / 拡大 t : texT テキスト入力 i : fIll (cycle char/fg/bg) 塗り潰し (押すたびに文字/前景色/背景色の塗り潰しに切り替わる) 選択モードについて ------------------ k : seleKt 選択モード ### 選択モード時の操作 LMB : drag to select 選択 MMB : copy selection コピー RMB : cut selection 切り取り LMB : paste (after cut/copy) 貼り付け(切り取り・コピーをした直後の動作) RMB : abort paste 貼り付け中止 del : clear selection 消去 CTRL-x : cut selection 切り取り CTRL-c : copy selection コピー CTRL-v : paste selection 貼り付け 文字/色選択について ------------------- space : char/color selector 押しっぱなしで、文字/色選択ウインドウ表示 ### 文字/色選択ウインドウ表示時の操作 LMB : select char/fg color 文字/前景色の選択 RMB : select bg color 背景色の選択 ペイント制御 ------------ c : toggle char paint 文字ペイントのon/off f : toggle fg color paint 前景色ペイントのon/off b : toggle bg color paint 背景色ペイントのon/off q/w : previous/next char 選択文字を変更(前後) Q/W : up/down char row 選択文字を変更(行) 1/2 : previous/next fg color 前景色を変更 !/@ : previous/next bg color 背景色を変更 s : swap selected fg/bg 前景色と背景色を交換 その他 ------ h : help screen ヘルプ表示 +/- : screen scale 画面ズーム変更(日本語キーボードの場合は、^/-キー) arrows : pan view 画面をPAN z/Z : undo/redo 取り消し/やり直し ファイル関係 ------------ CTRL-l : load file データファイルを開く CTRL-s : save file データファイルを保存(コマンドラインモードで保存した後に使うべき) CTRL-q : quit アプリ終了 コマンドラインモードについて ---------------------------- TAB : command line コマンドラインモードに入る ### コマンドラインモード時の操作 load : load new art データファイルの開く。例: load hoge.txt save : save art データファイルを保存。例: save hoge.txt char : load new character set 文字セットを変更。例: char dos50 pal : load new color palette パレットを変更。例: pal nes conv : convert raster image export : export as PNG png画像としてエクスポート size : resize art vsize : resize screen help : help screen ヘルプ表示 quit : quit アプリ終了
◎ おまけ。 :
_紅茶羊羹さんが「MZ-700 CGROM後半がこうだったらよかったのに」
とつぶやいてるのを見かけて、「実際こうなってたら、MZ-700の画面はどうなっただろう」と気になったので、試しに件の画像もフォント画像として勝手に用意してみました。
_mz700youkan.char.txt
こんな感じのアレコレが描けたのだろうなあ。
ただ、EDSCIIは256文字しか使えないので、アトリビュートが0か1かのどちらかの状態でしか描けんわけで。…これはもしかして、256文字以上使って描ける何かしらを作らねばならんのだろうか。
EDSCIIって、どうも Python + pygame で書かれてるっぽいんですよね…。てことは、Ruby + DXRuby でも、こういうツールを書けるのかなと思えてきたりして。
でも、せっかく今から作るなら、アルファチャンネルもサポートしたいよな。DXRuby はアルファチャンネルを持った画像を書き出せなかった記憶があるし。別の何かを選択したほうが良いのだろうか。
こんな感じのアレコレが描けたのだろうなあ。
ただ、EDSCIIは256文字しか使えないので、アトリビュートが0か1かのどちらかの状態でしか描けんわけで。…これはもしかして、256文字以上使って描ける何かしらを作らねばならんのだろうか。
EDSCIIって、どうも Python + pygame で書かれてるっぽいんですよね…。てことは、Ruby + DXRuby でも、こういうツールを書けるのかなと思えてきたりして。
でも、せっかく今から作るなら、アルファチャンネルもサポートしたいよな。DXRuby はアルファチャンネルを持った画像を書き出せなかった記憶があるし。別の何かを選択したほうが良いのだろうか。
[ ツッコむ ]
#2 [python] 縦に並んだフォント画像を横に並び替えるPythonスクリプトを書いた
昔の8bitPCのCGROM?画像はえてして縦に並んでるのだけど、今時使うとしたら横に並んでるほうがいいわけで、縦の並びを横の並びにするPythonスクリプトを書いたりして。PIL(Pillow)を使えば簡単ですね。
_conv_h_v.py
これを。
こうするだけのスクリプト。
_conv_h_v.py
# -*- mode: python; Encoding: utf-8; coding: utf-8 -*- """ 8x8ドットのフォントが縦方向で敷き詰められた画像に対して横方向に並び替える """ import sys from PIL import Image def main(): if len(sys.argv) != 3: print "usage: conv_h_v.py INPUT.png OUTPUT.png" sys.exit() infile = sys.argv[1] outfile = sys.argv[2] cw, ch = 8, 8 img = Image.open(infile).convert("RGB") w, h = img.size nimg = Image.new("RGB", (w, h)) for x in range(w / cw): for y in range(h / cw): timg = img.crop((x * cw, y * ch, w, h)) nimg.paste(timg, (y * ch, x * cw)) nimg.save(outfile) if __name__ == '__main__': main()
usage: conv_h_v.py INPUT.png OUTPUT.png
これを。
こうするだけのスクリプト。
[ ツッコむ ]
以上、1 日分です。