メニューへ

雑記帳

ここの更新は更新記録のページには記載していないことが多々あります。よろしく。

各見出し部分に各記事へのリンクを表示するようにしましたので必要な方はご利用ください。

改装中

この記事へのリンク

v12モックアップ ようやくトップページの制作にかかったところ。まだあちこち仮の状態です。

改装開始

この記事へのリンク

模様替えを始めました。まずはこのページから。

CSSの指定で、背景画像が何枚でも指定できるようになってるので使ってみました。例えばH2(このページでは各エントリのタイトル)は3枚で、1番上は赤→透明のグラデーション、2番目は赤の紗綾形、1番下はピンクの紗綾形です。以前は1枚しか指定できなくて苦労した気がします。

GIMP用画像ローダー作成計画 その5

この記事へのリンク

MAGローダー完成。いや、PIローダーを作ってたんですけど、わかんないので棚上げしてMAGを作ったと。

GIMPのコメント PICローダーでもコメントがあれば読み込むようにしましたが、MAGはコメント領域にセーバーがなにがしかの情報を入れているようなのでGIMPの画像コメントに読み込むようにしました。

MAGフォーマットについては「まぐろのすべて」を参考にしました。丁寧に解説してあってとても助かりました。

さて、Javascript版のMAGローダーを見つけました。HTML5 まぐろーだー HTML5対応ということで、MAGファイルをドラッグ&ドロップしてやると画像が表示されます。ブラウザからファイルを開く必要がなく、ドラッグ&ドロップで済むというのはやはり便利ですねえ。

GIMP用画像ローダー作成計画 その4

この記事へのリンク

書こうと思ってたことを書き忘れてる気がするので続きをば。

X68用画像・国産画像フォーマットを現在のMacで表示するソフトがない、と書きましたが、方法がないわけではないです。SheepShaver でMacOS9環境を作ってやればPixelCatが使えます。また X68000EMでX68000環境を構築する方法もあります。(うちではどちらもとりあえず稼働する程度にはしてあるけど今から新たに環境を作るとしたら大変かも)

ということでビューワーは稼働しないこともない。それなのになんで自分で作ろうと思ったのかというと、色関係です。

X68000は16ビットカラーで、実際はたいがいのCGが15ビットカラーなのでRGB各5ビットずつ。今のパソコンは24ビットカラー・RGB各8ビットなので、表示するには5ビットを8ビットに換算する必要があります。足りない3ビット分をどうするか。ビューワーでは0で埋めるものが多いようです。この場合、15ビットカラーでの真っ白の色を24ビットカラーに換算すると 0xFFFFFF ではなく 0xF8F8F8 になります。数字で見てもわかんないので画像で見ましょう。
白色0xFFFFFFと0xF8F8F8の違い Aが0xFFFFFFで、Bが0xF8F8F8です。左側のように離れていると差はわかりませんが、右側のように隣り合っていると違いがあるのがわかります。もっとも、パソコンのグラフィック環境によってはわからんかもというところ。はっきり言ってそんなに差はないです。ビューワーが3ビットを0で埋める処理をするのは妥当と言えるでしょう。

ただ、私の目的は「古いフォーマットの作品を今のフォーマットに移したい」ことなので、それではちと困るというか嫌なわけで。まあ、グラフィックソフトのレベル調整あたりで補正は可能なんだけど面倒くさい(グラフィックソフトに読み込ませるにはエミュレータ上でビューワーで表示させて別フォーマットで保存して、という段取りが必要なので、さらに面倒くささ倍増)。ということで、GIMP用のプラグインを書いてみようとなったわけです。

さて、こうやってPythonで展開できるんだったらJavascriptでもできるよなー、と思ったらすでに作ってる人がいました。JavaScript PIC/Pi/MAG/MAKIファイルローダー。早いしコメントも表示してくれる。いいね。

さて余談です。上の5ビットのRGB値を8ビットに換算する計算方法についてです。

まず真面目に計算する方法。変換したい数値をCとすると、これは、C × (変換先のビットの数が取りうる最大値) ÷ (変換元のビットの数が取りうる最大値) です。5ビットから8ビットなので C × 255 ÷ 31 となり、結果の値は整数である必要があるので四捨五入するなりの処理をします。

次に0で埋める場合。これはコンピューターで計算する場合は「シフト演算」を使います。C<<3 という計算式になります。2進数を3桁左へずらして足りないところは0で補うという計算です。

そしてもう一つ。「足りない桁は元の数値の上の桁を繰り返したらいいんじゃね?」という手法です。計算式は (C<<3) + (C>>2) となります。真面目に割り算するよりも計算負荷は軽いはずなので簡易計算と呼んでおきましょう。

さて、真面目に割り算して四捨五入、真面目に割り算して切り捨て、簡易計算、0で埋める、この4者の計算結果にどれくらい違いが出るか、表にしてみました。(Javascriptに計算させて表示しています)

元の数(5bit)8bitに拡張
四捨五入切り捨て簡易計算0埋め

「四捨五入」の数値と違うところに色をつけて差が大きいほど色が濃くなるようにしてます。簡易計算が意外と優秀でちょっとびっくり。

GIMP用画像ローダー作成計画 その3

この記事へのリンク

PICローダーできました。やっぱりベタフォーマットより格段に難易度が高かったですね。それでも曲がりなりにもできあがったのは、PICファイルフォーマット解説にローダーのC言語ソースがついてたから。CからPythonへの移植をしたというところかな。

PICには機種モードや色数などのバリエーションがいくつかあって、できるだけ対応したいと思ってたのですが、結局X68000の15ビット色のみの対応となりました。手元に他のPICがなくて動作確認ができなかったからです。16ビット色は対応できると思うんだけど動作確認ができないのでなんともかんとも。(現状では1カ所放置しているところがあるので、16ビット色PICは開けないです)

展開速度がどうしようもなく遅いのはあきらめてくだされ。

GIMP用画像ローダー作成計画 その2

この記事へのリンク

Mac用GIMP.appでクラッシュすることが判明。Macports版GIMPでは大丈夫(というかこっちで動作確認してたので)。

調べてみると、スクリプト1行目のパスが原因の模様。参考にしたPython を使用して GIMP 用のプラグインを作成するの通り、#!/usr/bin/pythonとしてたのを、他に参考にしたものが全て#!/usr/bin/env pythonだったので、そちらにしたらMac用GIMP.appでも動作した。

ところで、起動時にダイアログを出してオプションを選択してもらうためにどうしたらいいか、よくわからないでいる。既存画像に処理をするような普通のプラグインスクリプトであれば、入力パラメーターを設定してあれば起動時にダイアログが出る。画像の読み込み系のプラグインスクリプトでは filename と raw-filename が必須のようだが(入力パラメーターが最低2つないとGIMPの起動時に「標準のつくりになってない」とはねられてしまう)、読み込みファイルの選択のあとスクリプトが呼ばれるので、入力パラメーターが2つの時はダイアログが開くことはない。ここで3つ目のパラメータを設定してもダイアログは開かない。パラメーターを4つにしたらやっとダイアログが開いた。ただし表示されたのは4つめからで3つ目のパラメーターは無視された形だ。3つ目は何か決まった役割があるパラメーターなのだろうか。

ということで、とりあえずダイアログを出せるようになったので、PIX、GLMに続いて、オプション指定付きでGLXローダー完成。ただ、Linuxでの挙動がおかしい。4つ目のパラメーターも無視される。

Mac用GIMP.appでのダイアログ
Mac用GIMP.appでのダイアログ。
UbuntuのGIMPでのダイアログ
UbuntuのGIMPでのダイアログ。4つ目のパラメーターが無視される。

謎だ……。