上に戻る
1.nesアセンブラの魅力
概要
 nesアセンブラとは何をするものなのか、なぜ私ぷれさべーはnes改造でアセンブラを利用することを推奨しているのかという事について述べます。
nesアセンブラって何?
 正確な定義は知りませんが、アセンブラというのは、CPUに近い言語であるアセンブリ言語を用いて書かれたプログラムを処理し、CPUが処理しうるバイナリを出力するためのソフトです。ここでは、ソースコードを処理することで、nesファイルが出力されるようにします。小難しい事を言ってもしかたがないので、何が出来るのかを先に説明して行きましょう。
nesアセンブラで何が出来る?
 アセンブラというとプログラムを打ち込むためのものだと思うかもしれません。もちろんそういった使い方が主な使い方であることは間違いありません。しかし、プログラムだけではなく、データを打ち込むことに利用することもできます。データを打ち込めるというのはどういうことでしょうか。
 ゲームソフトは丸ごとデータの塊なわけで、ゲームソフトが行ういかなる処理も書き換えることができます。まあそれは、バイナリエディタでも同じ事が言えるには言えますが、バイナリエディタでできる書き換えは全てできると言う事ができます。
連動して動く値の書き換え
 ある程度バイナリエディタでnesの改造を行ったことのある方なら、複数の箇所の値を連動して書き換えないと正しく動かないといった経験が有るかもしれません。そのような、関連性の有る複数箇所の改造のために、値一つを与えるだけで不整合のない複数のデータを出力することが可能です。
 また、あるデータと、そこを指すアドレスを上手く連動して書き換えないとうまくいかないといった時には、アセンブラは大きな力を発揮します。例えば、バイナリエディタで音楽を改造したことが有る方なら、ループ時などのジャンプアドレスの指定が大きなストレスになったかもしれません。さらに、バイナリエディタでプログラムを打ったことがある方なら、ジャンプ先のアドレスの指定が面倒であることはよく知っていると思います。こういったものはただ大変なだけではなく、もしデータのサイズを変更せざるを得なくなった時に、そのジャンプ先の指定の方も修正しなければならず、それが何箇所あるかもわからず、訂正し忘れて大変なことになる……なんて事も有るでしょう。
 こういった、変動しうるアドレスを扱う際は、アセンブラが本当に役に立ちます。
手順であるソースコードが残る
 非常に抽象的な話となってしまいますが、アセンブラを利用してnesの改造をすることは、バイナリエディタでnesの改造する事と比べ、改造した手順が明記される事が一つの非常に大きなメリットであると思います。これはどういうことかというと、バイナリエディタで改造した場合は、例えば「アドレス$1234を$56に変更した」という結果しか残りません。一方、アセンブラを使って同様の改造を行った場合は「アドレス$1234を$56に改造した」という結果だけではなく、その手順まで残ります。
 一つの改造を作り上げるには、非常に多くの箇所の改造が必要となります。時に、いや、頻繁に不具合も起きます。そういった時に、手順が全て残されているので、その「手順の途中の幾つかだけを無効にした時の結果」を簡単に出力し、検証することができます。
プログラムを簡単に打ち込める
 敢えてここまでプログラム改造の話は避けてきたのですが、アセンブラは基本的にプログラムを打ち込むためのものなので、当然、非常に大きな力となります。先程も少し言いましたが、バイナリエディタでプログラムを追加で打ち込んだ経験の有る方なら、後で不足した処理を書き足すために自分で打ち込んだバイナリの箇所から、ジャンプ命令で空き領域に飛ばして、その空き領域に処理を書き足して、そして元の位置に戻すなんて言う事をした方も居られるでしょう。そこまで出来る方なら、アセンブラを使えばはるかに能率的にプログラムを打ち込みを行うことが可能です。尤も、そこまでnesを把握しておられる方で、アセンブラを利用できないという事は無いと思うのですが……
オチ
 抽象的な話すぎて、何が何だかわからないかもしれません。次回からより具体的な話になるので、さっぱり理解できなくても先に進んで良いと思います。
 まとめると、アセンブラを使えばデータの打ち込みプログラムの打ち込みもできるし、一部の変更だけをOnにしたりOffにしたりも容易にできるので検証がとても楽であるという事です。
(242)2013年5月25日 プレさ兵衛
inserted by FC2 system