JavaScriptが無効です。
HTML5 まぐろーだー
更新履歴
2015-03-16 文書を作成
2015-03-15 初版公開
これは何?
いわゆるHTML5対応のブラウザの機能だけを利用して、MAGフォーマット の画像を表示するスクリプトです。
何がうれしいの?
unlzh.js と組み合わせて、パソコン通信時代の、改変せずに転載することのみが認められている書庫に含まれた画像をWeb上で展示したいなどの非常に微妙な用途くらいしか思いつきません。
(2015-03-17追記) Intel MacではPixelCat でもMAGを開けないらしいので、最近のMacでMAG画像を見たいけどツールがないという向きには有用かもしれません。WindowsではGV が普通に使えるのであまりありがたみがないと思いますが。
技術情報
システム要件
以下のようなWeb標準仕様をサポートしたブラウザであれば動くはずです。
またこのページのデモを動かすには以下のサポートも必要です。
具体的にはInternet Explorer 11や、FirefoxおよびChromeの最新版、Windows 10 version 1511以降のMicrosoft Edgeでは動作しているようです。(2015-03-17追記) OS X 10.10のSafari 8.0.5で動作したという報告 をいただきました。(2015-06-23追記、2015-11-13更新) Windows 10 RTM (version 1507)のMicrosoft Edgeはデスクトップからのドラッグアンドドロップをサポートしていないので、動作しません。
実装メモ
MAGの仕様書はマルチペイントのマニュアルに掲載されていたはずだが発掘できなかったので、MAGBIBLE をもとに実装する。
MAGBIBLEはところどころ16色画像しか想定していないような記述があって、適宜読み替えないと256色画像を正しく表示できない。たとえば「ピクセル」は仮想VRAM上の1ワード=16ビットを指す単位なので、16色画像では4ドット、256色画像では2ドットになるのだが、ピクセルと書くべきところで4ドットと書かれていたりする。
MAGBIBLEにはフラグデータをすべて展開すると1024×1024ドットの画像で128Kものメモリを使ってしまい、現実的ではないなどと書かれていて、時代を感じさせる(結局ラインバッファで実装しているが)。
(2015-03-17追記) フラグAやフラグからビット単位で読み取るときに、MSBから読むのかLSBから読むのか明記されていない(正解はMSBから)。
今のところスクリーンモードは256色かどうかしか見ていないので、200ライン画像は正しいアスペクト比で表示できないと思われる(対応は簡単だが画像の現物が手もとに見当たらなかった)。
(2015-03-17修正) MAGにはパレットの異なる部分セーブ画像を追加することで画像全体の色を変える表現手法が存在したが、canvasのバッキングストアに画像を展開した時点でもとのカラーインデックスの情報は失われてしまうので、未対応(それ以前に部分セーブ画像の追加自体に未対応だが)。
(2015-03-17追記) マルチペイントのマニュアルを発掘できたので、記述を見比べてみる。
やはりフラグが0以外のとき「4ドット」コピーすると書かれていた場所は、「1ピクセル」に訂正されていた。
また「鮪フォーマット解説 」のサイトで指摘されていた部分セーブ時の横幅切り上げについても、256色画像のときは4ドットと追記されていた。12bppのパレットデータを24bppに拡張するときの方法も、「まぐろのすべて」と同じく17倍になっていた。
一方、「正誤表01.DOC」に記載されているMSX SC8のスクリーンモードの訂正はなぜか反映されていない。
ビット単位の読み出し方向は相変わらず明記されていないが、サンプルコードがあるのでそれを見ればMSBから読めばいいことは一応わかる。
Copyright© 2015 Masatoshi Kimura (emk)