P6用ゲームソフトの中のグラフィックデータを参照、編集できるツール、名づけて「P6GraphBinEdit」を作ってみました。(命名超適当)
取り扱うデータはP6用のベタテープイメージを想定していますが、特にフォーマットは規定していません。P6の色フォーマットでビットマップがベタに記録されているファイルであれば何でも開けます。
逆に言うと、インテルHEXのテープイメージやディスクイメージでは難しいと思います。
まずはツールで適当なゲームソフト(ここではタイニーゼビウスマーク2)のテープイメージを開いてみます。
ランダムっぽい模様が表示されます。本来プログラムバイナリであるものを無理やりグラフィックとして表示しているのだから当然です。この中からグラフィックデータがないか探していきます。ここでは下の方にタイトルの影っぽいものが見えます。
グラフィックデータは一定のバイト幅の繰り返しの形で格納されていると考えられるので、ウィンドウ上部の「オフセット」「幅」の値を調整し、完全な絵として見えるポイントを探していきます。また、スクリーンモードもそのゲームが使っているモードに合わせておく必要があります。
さらにこの画像の上から、ドットをポチポチ打って編集することができます。編集したデータはそのままファイルに保存できます。これでちょっとしたハックロムなら作れます。(右上の方のタイトルデータはうまく見つかりませんでしたorz)
何しろ突貫で作ったので、描画機能はひたすらドットを打つのみ(コピー、貼り付け、塗りつぶし等一切無し)、アンドゥ機能なし、コード領域を破壊しないような保護機構もなし、保存は上書きのみというなんともデンジャラスな仕様です。
ちなみに、モード4カラーのゲームは白黒で表示されます(手抜き)
ただし、編集に際しては赤と青を塗るため、1ドットおき描画機能だけはつけてます。
また、ビットマップとして格納されているデータでも、そのままでは表示できないというケースもあります。
Questを例に取ると、このゲームはマシン語部分もBASICと一緒にロードするため、00が連続するとCLOADが止まるという仕様を回避するために、グラフィックデータの各バイトに0x02を足した値をテープに書き込み、表示前に2を引いて処理するということをしています。
こうしたものについては、エディタ側で個別のゲームに対してのカスタム実装が必要になります。
何しろネタのために突貫で作ったもので、エディタとしての完成度も低くリリースは今のところ考えていません。それでもなにか作りたいという方がいらっしゃれば応相談ということで…。

