パターンジェネレータ
前回の調査で、ROMファイルの中にグラフィックデータのような部分を見つけられましたが、 圧縮されて格納されているようで、ゲーム中そのままのグラフィックデータとは異なっていました。
そこで、グラフィックデータの展開を行っている部分を調査してみました。


  • グラフィックデータの種類について


  • ZANACのグラフィックデータは、

      ・自機や空中敵等のスプライト用
      ・タイトル画面や、ゲームスタート後の地上の絵やスコア表示などの、バックグラウンドグラフィック用

    の2種類に分けられます。
    今回は、バックグラウンドグラフィック用のグラフィックデータを主に扱います。

    スプライト用のデータについての解析は、今回は見送ります。プログラムの解析がより進まないと難しい為です。
    ゲーム中、空中敵の色がチカチカと目まぐるしく変わったり、 スプライトを重ね合わせて表示していたりと、スプライト表示には複雑な処理が伴っているように見受けられます。


  • パターンジェネレータ


  • バックグラウンドグラフィックの表示は、おおむね次の手順に沿って行われます。

     (1)パターンジェネレータテーブルに、グラフィックデータを登録
     (2)カラーテーブルに、(1)で登録したパターンの色使いを登録
     (3)画面のどこに、どのパターンを表示するか?のテーブルの、表示したい場所にパターン番号を登録

    グラフィックデータの展開は、手順(1)を実行する際に行われます。


  • グラフィックデータの展開


  • 次のプログラムを実行してみてください。

      patview2.exe(patview2.lzh : ファイルサイズ 66,174バイト)

    (LZH形式で圧縮された、Windowsの実行ファイルです。プログラムはhspで作成しました。
    展開後、生成されたpatview2.exeをzanac.romと同一のフォルダに移動し、実行してください。)

    ゲーム中、パターンジェネレータテーブルは以下の3つの状態を遷移します。

     (1)「標準」状態・・・1面〜7面のメインゲーム中
     (2)「タイトル」状態・・・タイトル画面、エンディング画面(ただし、エンディングではまず標準状態に一度戻ってから)
     (3)「最終面」状態・・・8面、0面のメインゲーム中

    patview2.exeの右のボタンで、3状態を再現できます。


  • グラフィックデータの着色


  • 上のプログラムでは、パターンジェネレータの状態を緑と黒の2色で再現していました。
    グラフィックデータ展開ルーチン調査当初は、カラーテーブルの存在を知らなかったためです。

    プログラムの調査を進めていると、グラフィックデータと同じ方式で圧縮された、しかし展開してみると グラフィックデータではないデータを見つけました。これを上述のカラーテーブルに当てはめた結果、 ついにグラフィックデータの着色に成功しました。次のプログラムを実行してみてください。

      patview3.exe(patview3.lzh : ファイルサイズ 66,628バイト)

    (LZH形式で圧縮された、Windowsの実行ファイルです。プログラムはhspで作成しました。
    展開後、生成されたpatview3.exeをzanac.romと同一のフォルダに移動し、実行してください。)


    以上までの調査で、バックグラウンドグラフィックデータの展開方法が明らかになりました。

    展開ルーチンを調査しながら、当時のゲーム製作者の「データを詰め込む!」というひたむきな姿勢が感じられました。
    未だにZANACを面白く感じられるのは、この作り手の情熱が伝わってくるからかもしれません。


    やっとまともなグラフィックが見られました!ZANAC解析のトップへ戻りますか

    トップへ戻る