ロックマン6にはエネルギーバランサーというアイテムがあります。
これは、特殊武器を装備していないときに武器エネルギー回復アイテムを取ると、残り武器エネルギーが少ない特殊武器のエネルギーを回復するという効果のアイテムです。
なお、ラッシュアダプタを装備中は特殊武器を装備していないという扱いになっており、エネルギーバランサーの効果があります。
本ページでは、このエネルギーバランサーに関する不具合とその対策について記載します。
このエネルギーバランサーには、特定の条件で発生する不具合があります。
不具合の内容は不正なメモリ操作にあたり、未クリアのステージがクリア扱いになったり、未獲得の特殊武器が獲得状態に変わったり、酷いときにはフリーズしたりします。
このように書くと、かなり危険に感じられるでしょうし、悪用されてメジャーな不具合になっていてもおかしくないと思われるでしょう。
しかし、この不具合はあまり知られていません。通常プレイでは発生しないからです。
では、発生条件を見ていきましょう。
以上を全て満たすと、不具合が発生します。
発生すると、回復させる武器が無いにも関わらず、何かが回復する音がします。
この時にどこかのメモリが書き換わっています。具体的には、小エネルギーだと2、大エネルギーだと10増えます。どのメモリが書き換わるかは不定です。
さて、ここでエネルギーバランサーの入手方法について紹介しておきます。
エネルギーバランサーは、トマホークマンステージの隠し部屋でブルースに会うと貰うことができます。
この隠し部屋は、入口を塞がれており、パワーロックマンでのみ入口を開けることができます。
そして、パワーロックマンを使用するためのラッシュパワーアダプタは、フレイムマンを撃破することで入手できます。
つまり、パワーロックマンはフレイムマンを撃破することで入手する特殊武器、フレイムブラストと同時に獲得できることになります。
まとめると、エネルギーバランサーを入手しているということは、フレイムブラストという特殊武器を所持しているということになります。
つまり、エネルギーバランサーの不具合が発生する条件の1と2は両立しません。
この不具合は通常プレイでは発生しないと書きましたが、これがその理由です。
ちなみに、壁抜け等によるエネルギーバランサーの不正入手手段は、本稿執筆時点では発見されておりません。
ロックマン6は、壁に埋まると即死することもあり、見つかる可能性も低いと考えられます。
余談になりますが、ロックマン6ではハシゴの下端から手を離した際に一瞬立ててしまう不具合があります。これを利用するとスライディングをして1マスの隙間に入ることができるかもしれません。
しかし、トマホークマンステージの隠し部屋の場合、立ててしまう位置は隙間の1マス下です。そのため、この方法でも入ることは出来ないと考えられます。
この不具合の条件を満たす唯一の方法がパスワードです。
下のようなパスワードを入力することで、特殊武器を所持しておらずエネルギーバランサーを所持している状態でゲームを始めることができます。
逆に言えば、このようなパスワードを使用しない限りは、不具合が発生する状態にはなり得ません。
ここまでで述べたように、特定のパスワードを使用しない限りは起こらない不具合です。
原作のロックマン6を遊ぶ分には全く気にする必要はありません。
ここは改造関連のWebサイトですので、ここからはこちらに焦点を当てた話となります。
原作のロックマン6では起こらない不具合ですが、改造作品となるとこの限りではありません。改造の仕方によっては発生条件を満たしうるのです。
例えば、筆者が作成したRockman 6 AgainSのVer.1.00およびVer.1.10においては、特殊武器無しでもエネルギーバランサーを入手できてしまうため、この不具合が発生しました。(この作品によってこの不具合が見つかってしまった可能性が高いです)
改造作品を遊ぶ際には、気に留めておいた方が良いかもしれません。
ここからは、改造作品製作時における対策について論じることとします。
この不具合への対策としては、次の方法が考えられます。
それぞれ見ていきます。
エネルギーバランサーを所持していなければ不具合は発生しないため、入手できなくしてしまえばほぼ確実に防げます。
ただし、原作同様にパスワードでは入手できます。これは原作からそうなっていますし、対策していないからといって批判されることはないでしょう。
原作同様、特殊武器を所持していないと入手できないようにしていれば、不具合は発生しません。
原作ではパワーロックマンでしたが、他にもジェットロックマン、フレイムブラストを条件とすることが考えられます。特殊武器の性能を変更している場合は、それらも選択肢に入るでしょう。ただし、最初からラッシュアダプタを使用できるようにしている場合は、ラッシュ以外を条件としましょう。
1.と同様に、パスワードでの入手は可能ですが、気にする必要はないでしょう。
改造作品の多くは、特に意識せずとも1.か2.で問題は起きなくなっています。基本的にはこれらの方法での対応で十分だと言えます。
特殊武器を持っていれば不具合は発生しないため、最初から何らかの特殊武器を持たせておくという方法も考えられます。この場合は、ビートが適任と言えるでしょう。
プログラムを変更する必要があるため、1.や2.に比べてハードルが高いですが、特殊なパスワードを使用しても不具合は発生しません。
しかし、1.や2.の対策で十分ですし、この不具合の対策のためだけにこの方法を採用するというのは考えものです。作品の方針に合わないようであれば、別の方法を採ったほうがいいでしょう。
修正方法は、ステージ開始時に行われる「取得している武器残量を満タンにする」処理において、ビートの所持条件に変更を加えます。所持条件のチェックをスキップさせることで、常時ビートを使用可能になります。
この処理はバンク$3Bの$BA3F~$BA78(※)です。ヘッダ付きROMアドレスでは$77A4F~$77B78です。
そのうち、ビートの所持条件チェックは$BA63~$BA72です。この区間の処理を全て削除するか、飛ばすことでビートは常時所持状態になります。実際に変更したIPSパッチはこちらです。
※この処理が実行されるとき、バンク$3Bは$A000-BFFFにマッピングされることに注意してください。
最も確実な方法で、条件を満たしても不具合を発生させなくします。最初からエネルギーバランサーを所持させたい場合は、この方法になるでしょう。
具体的な内容については後で述べます。
改造作品を作る上でのエネルギーバランサーの不具合への対策として、以上のような4つの方法を考えました。
改造の方針などに応じて選択するのが良いでしょう。
ここからはこの不具合がどのような原理で発生しているかを解説し、どのように修正するかについて論じます。
不具合の原理について結論から書くと、「回復対象が初期化されていない」こととなります。
エネルギーバランサーに関わる処理は、バンク$3Bの$949C~$94C9です。ヘッダ付きROMアドレスでは$774AC~$774D9です。
この処理をフローチャートで示すと、以下のようになります。
$01の値が変数Bに入り、これが回復する特殊武器になります。これが#$00の場合は回復対象はロックバスター扱いとなり、回復処理が行われません。#$01~#$08が各特殊武器、#$09がビートです。
特殊武器の残りエネルギーが#$80の場合、その特殊武器は未所持という扱いになります。
エネルギーバランサーを所持しており、特殊武器を何か所持している場合は、$01に回復対象の特殊武器番号が入ります。しかし、特殊武器を何も所持していない場合、$01には何もセットされません。そして、$01は初期化されていないため、この一連の処理が行われる前に使われた値がそのまま入っています。
不具合の内容の項で値が変わるメモリは不定と説明しましたが、これがその原因です。$0688を基準として$01によって書き換わるメモリが変わります。具体的には$0688~$0787の範囲のどこかが変わることになります。この範囲にどのような用途のメモリが存在するかについては、メモリマップを参照してください。
以上のように、不具合の原因は作業メモリの初期化が行われないことです。つまり、修正方法は$01を初期化することとなります。例えば、以下のフローチャートのように修正をすることで、問題は発生しなくなります。
実際に変更したIPSパッチはこちらです。
エネルギーバランサーに関する不具合は原作のロックマン6では基本的には気にする必要のないものですが、改造作品を遊ぶ場合には問題になる場合が無いとは言い切れません。発生条件を意識していれば、作品側で対応されていなくても回避できるかもしれません。
改造作品を作る場合は、このページを参考に発生条件を満たさないように調整するのが良いでしょう。