【ソフト名】：MZ-700 Graphic Converter (略称：M7GC)
【バージョン】：0.11
【作者】：かねごん ( Twitter: @kanegonMZ )
【動作(確認)環境】：Windows 11

【概要】
　最初のバージョンでは、ちづ子さん作の「MZ風画像変換」(※1)で変換した画像を、MZ-700のキャラグラ形式である、CGEDIT形式(※2)に変換するだけの目的のものでしたが、プログラムで使うデータとしては CGEDIT形式そのままでは使いにくいのでバイナリデータに変換できるようにしました。

　変換対象は、必ずしも「MZ風画像変換」で変換した画像や、CGE7で画像化したものでなくても構いません。
　ごく普通の写真やら画像でも構いません。ただし、そういうのを変換するのであれば、「MZ風画像変換」のほうが圧倒的に綺麗です。
　また、セミグラであれば、bugfire2009 さん の DumpListEditor(※３)のほうが綺麗です。
　ツールはそれぞれなので、使いやすいものを使っていただければ。その中の一つの選択肢としてこんなのもありますよ、という感じです。

　また、元画像のリサイズはできるようにしましたが、位置調整とか角度とかは調整できないので、そういうところは汎用的なグラフィックツールで調整しておいてください。
　色も基本的に、閾値で単純 2値化しているだけなので、事前に適当に変換しておいた方がよいかもしれません。
　Ver.0.07から画像のクリップボードからのコピーに対応したので、連携はしやすくなったかと思います。

【サポートしている形式】
・入力
　・画像ファイル(bmp,png,jpg..)
　・クリップボードの画像
　・CGEDIT形式
　・V-RAMに書き込みやすいrawデータ(バイナリ) ディスプレイコード 1000バイト + アトリビュート1000バイト
・出力
　・画像ファイル(png)
　・CGEDIT形式(.txt)
　・生データ形式(.m7r)
　　V-RAMに書き込みやすいrawデータ(バイナリ) ディスプレイコード 1000バイト + アトリビュート1000バイト
　・MZ-700で動作するビュアーと結合したプログラム(.mzt)
　　MZ-700 実機やエミュレータで表示できるよう、ビュアーとデータを同梱した mzt ファイル。
　・CGE7 や Magical.MapEditor(※４) のMZ-700形式のクリップボードに対応しています。

【機能】
　サポートしている形式のファイルを読み込んで、サポートしている形式のファイルに変換できます。
　入力ファイルが画像の場合、変換方式を指定できます。
　入力画像ファイルは縦横比を無視して 320x200 に変換します。(デフォルト)


【使い方】
・共通
　まず、「MZ700FON.DAT」を用意し、実行ファイルと同じディレクトリにおいてください。。
　詳細は、AKDさんの「MZ-700WIN フォントデータの作成」( http://mzakd.cool.coocan.jp/starthp/subpage15.html )に詳しく書いてありますので、そちらを参考にしていただければ。(感謝)
　欧州版のフォントを使いたい場合は、なんとかして用意し、MZ700FON_EU.DAT というファイル名で実行ファイルを同じディレクトリにおいてください。

・GUI
　起動すると4つのWindowが出ます。操作するのは、ボタンがある、「MZ-700画像変換 V0.09」Windowのみです。
　①「元ファイルロード」ボタンを押して入力ファイルを指定、読み込んでください。D&D でロードさせることもできます。
　②読み込んだファイルが画像ファイルの場合は、4列目のボタンで変換してください。
　③5列目の保存したい形式のボタンを押して保存先ディレクトリを指定してください。

　1列目は、オリジナル画像の読み込みや変換時の閾値、変換後のMZ-700の画面サイズを指定するためのものです。
　「変換後サイズ」はテキストボックスに数値を入力後、「更新」ボタンを押してください。
　2列目のボタンは、「オリジナル画像」から「変換前画像」にリサイズするためのものです。
　3列目のボタンは、「変換前画像」を加工するためのものです。
　今は「彩度変更」しかないです。ここでの加工の結果が気に入らなかった場合は、2列目の「元画像から再読み込み」で読み込みなおしてください。
　４列目のボタンは、変換方法を指定するボタンです。
　５列目のボタンはファイルに保存、またはクリップボードにコピーするためのものです。

・CUI
　MZ700GraphicConverter.exe [オプション] 入力ファイル名
　コマンドラインオプションは以下の通り。

　-JP
　 日本版フォント(MZ700FON.DAT)を使います(デフォルト)
　-EU
　 欧州版フォント(MZ700FON_EU.DAT)を使います

　-o txt/png/m7r/defb/bas
　 出力ファイル形式の指定。
　   txt は CGEDIT形式
　   m7r は ディスプレイコード 1000 + アトリビュート 1000
　   mzt は ROMモニタからロードする前提のビュアーとデータが結合されたもの。$1200からロードします。
　   defb は raw を defb 形式で(未実装)
　   bas は BASIC の DATA文形式で(未実装)

　-O 出力ファイル名
　　指定されたファイル名で保存します。

　-OD 出力先ディレクトリ。
　　指定されたディレクトリに保存します。
　　この場合、ファイル名は入力ファイル名と同じで、拡張子は出力形式に応じて設定されます。
　　ディレクトリパスの末尾に \ は不要です。

  -O も -OD も指定されなかった場合は、入力ファイルと同じディレクトリに、拡張子を出力形式に変えて出力します。

　-c pm/pmm/semi/mesh
　 画像からの変換方式の指定。
　   pm  ：単純パターンマッチ(デフォルト)
　   pmm ：単純パターンマッチ＋ベタ部分はメッシュに。
　   semi：セミグラパターンに。
　   mesh：メッシュパターンに。

　-tb 青の閾値(0-255) default 127
　-tr 赤の閾値(0-255) default 127
　-tg 緑の閾値(0-255) default 127
　 変換時の RGB の閾値を指定します。

　-saturation 彩度の% 
　 元の画像の彩度を指定された % に変換する。

　-resize_mode リサイズモード
　 元の画像をキャラグラ変換前の画像に変換するモードを指定します。
　   0:縦横比無視resize
　   1:横いっぱいにresize
　   2:縦いっぱいにresize
　   3:そのままサイズ

　-screen_size x y
　 元の画像をキャラグラ変換後のMZ-700の画面サイズを指定します。
　 -resize_mode 3 が指定されている場合はそちらを優先します。

　-z n
　 PNG で保存時、変換後画像を n 倍で保存します。320x200そのままだと小さいと感じる場合にどうぞ。

　-S サイレントモード
　   廃止。無視します。
　   出力形式が png でない場合は常にサイレントモードにします。

　-F バッチ処理モード
　   入力ファイル名のファイル内に1行1つのファイル名一覧を読み込んで連続変換します。
　   ファイルの中に列挙するファイル名の文字コードは S-JIS にしてください。
　   最後のパラメータとして書かれたファイル名が一覧に相当します。

　例）CGEDIT形式の D:\DATA\MZ700\LILIA_001.txt を読み込んで PNG形式に変換し、R:\LILIA_001.png として保存します。
　　　MZ700GraphicConverter.exe -o png -OD R: D:\DATA\MZ700\LILIA_001.txt

　例）filelist.txt 内に書かれたファイルをすべて m7r形式に pmm方式で変換し、m7r ディレクトリに出力する。
　　　MZ700GraphicConverter.exe -S -o m7r -c pmm -OD m7r -F filelist.txt

　　　filelist.txt の例
　　　　png\YMMMXOP_0000.png
　　　　png\YMMMXOP_0001.png
　　　　png\YMMMXOP_0002.png

　以上。


【今後の妄想】
・PNG のテキストチャンクに CGEDIT形式を埋め込んだ形での読み書き
・パターンマッチングの精度？を上げたい。
・色とか輪郭強調とかいい感じにきゅっと変換できるようになってほしい
・変換元の範囲を指定できるようにしたい。
・圧縮して出力したい。

【既知の不具合】
　・バッチ処理モードの時、処理はまだ終わっていないのにコマンドラインには戻ってしまう。
　・CGE7形式で読み込み時にエラーで異常終了する(アトリビュートの bit3=1)

※1：「MZ風画像変換」
　ちづ子さん( Twitter: @chizuko610 ) さんが制作された画像変換ツール。
　http://chizuko.raindrop.jp/GAZOU.html

※2：CGEDIT形式
　古旗さん( https://twitter.com/openspc )による MZ-700用きゃらぐらエディタ( http://www.openspc2.org/~bgm/CG700/index.html ) で使用している形式。
　紅茶羊羹さん( https://twitter.com/youkan700 ) による Windowsで動作するキャラグラエディタ( http://www.maroon.dti.ne.jp/youkan/mz700/ ) も対応している形式。

※３：DumpListEditor
　bugfire2009 さん( https://twitter.com/bugfire01 ) の DumpListEditor( http://bugfire2009.ojaru.jp/download.html#dleditor )。
　その名前からは想像できないですが、セミグラ、動画、フォント、テープイメージの変換、BASICリストの編集、などなどこれでもかと機能が詰まったツール。
　「ダンプリストとはいったい…」と考えさせられる一品。

※４：Magical.MapEditor
　あの、内藤 時浩さん( https://twitter.com/NAITOTokihiro ) が作成している、Magical.MapEditor( https://codeknowledge.livedoor.blog/archives/21133161.html )。
　高機能かつ、多数の機種を想定したものとなっており、その中の１つとしてMZ-700にも対応しています。
　40x25 を超えるキャンパスサイズで MZ-700 のキャラグラを編集できる唯一のツール。(2023/ 4/ 9 独自調べ)