K3の住民

最近はレア社のゲームについては書いていませんが、一応レア社のゲームが一番好きな人です。『雪圀』で"圀"は"国"とほぼ同義ですが、国ではありませんって当たり前か(笑)。

【時オカ】「Reverse Bottle Adventure(RBA)」「Bottle Adventure(BA)」を詳しく解説(再掲・前編)

※遊びでやる際はくれぐれもセーブだけはしないように。

後編→http://ryoryoau24.hatenablog.com/entry/2017/10/29/130504


皆さん、こんにちは。雪圀です。
今回、RBAこと「Reverse Bottle Adventure(以下RBA)」とBAこと
「Bottle Advbenture(以下BA)」について、間違えた箇所がありそれが多すぎたので
もう一度書くことにしました。

元の記事は削除済みです。


前準備(Bアイテムあきビン化)

これらのバグを行う前に準備しなければならないことがあります。
それは「Bアイテムのあきビン化」です。

Bアイテムには通常「コキリの剣」もしくは「マスターソード」「巨人のナイフ」
「ダイゴロン刀」がセットされていると思います。
N64ゼルダ系統では基本的にBアイテムをあきビン化することが可能で、色々と方法は
あるのですが、3D版でも出来るようにこの記事ではBアイテムをCアイテム化すること
でBアイテムをあきビン化する方法を紹介します。
先ずは、BアイテムをアイテムID0「デクの棒」に変えます。この方法はインゴーに
支配されている状態のロンロン牧場でも可能ですが、難しいので最も簡単な釣り堀を
利用したBアイテムのCアイテム化をしましょう。
時オカでは通常釣り竿は盗めませんがある方法を使うことで釣り竿を盗むことが
出来ます。その方法は以下の通りです。

バーブーツの浮遊を利用(N64版Ver1.0限定)
バーブーツの浮遊効果が切れる直前にBを押すと釣り竿を振るとともに落下
モーションが発生し釣り糸が出てる状態のまま歩くことが出来るようになります。

浅瀬で潜る方法(N64版限定)
リンクを泳いでいる状態にし、浅瀬で潜って泳ぎ状態が解除される直前にBを押すと
釣り竿を振るとともに落下モーションが発生し釣り糸が出てる状態のまま歩くこと
が出来るようになります。

禁止アイテム使用バグを利用する方法(3D版限定)
釣り堀ではバクダンが使用出来ません。しかし、ヘビーブーツやホバーブーツは
使用することが出来ます。
時オカ3Dでは使用可能アイテムと使用不可能アイテムを入れ替えるとアイテム
セレクト画面を閉じた一瞬の間だけ使用不可能アイテムを使うことが出来るように
なります。
これを利用しバクダンを置いて、釣り竿を振ります(池の方向に投げた方が良い)。
すると、釣り糸がまだ出し切っていない間に爆発が起こり、リンクは釣り糸を出した
まま歩けるようになります。

以上の方法を利用して、釣り竿を持ったまま釣り堀から出ます。
すると、釣り竿は釣り堀以外では出せない仕様になっているので、Bボタンを押さない
ように、湖を泳ぎ、また釣り堀に入って出ます
すると、BアイテムのアイテムIDが初期値0となり、アイテムID0「デクの棒」がセット
されます。あとはデクの棒の所持数を0にし(N64版では子供時代で所持数を0にして
いないとフリーズするので注意)、ビン系アイテムを一回使って手にビンを持った
ままにして以下の方法を使い、Bアイテムをビン系アイテムに変えます。

バック宙を使う方法
ビンに中身がある状態で、バック宙をしてその途中でビン→Bアイテムと順に押す。

ESSポジションを使う方法
ビンに中身がある状態で、スティックをESSポジション*1にしてZ/L注目をし、
ビン→Bアイテムと順に押す。

あきビンを振っている途中でBを押す方法(高難易度)
すぐにBをビン系アイテムに変えたい場合、この方法が良いでしょう。
あきビンの状態でビンに入れるものがあったとき、ビン→Bアイテムと順に押す。猶予
は1Fしか無い。

このとき、N64版はC→ボタン、3D版はIIボタンにアイテムがあるとRBAが発生して
しまうので、何も起こらないように、セットしていない状態にしておきましょう。

以上でRBA、BAの準備が出来ました。

Reverse Bottle Adventure

RBAは、N64版の場合はC→ボタン、3D版の場合はIIボタンに何らかのアイテムが
セットされている状態でBアイテムのアイテムIDを変更すると、それに応じた不具合
が起こるバグです。
何故こうなるのか。N64版が理解できれば3D版も理解出来ると思うのでN64版の原理
を解説します。

時オカでは、Bアイテム、Cアイテムは以下のように保存しています。


セットする
アイテム
0x11A638Bアイテム
0x11A639C←アイテム
0x11A63AC↓アイテム
0x11A63BC→アイテム


セットしている
アイテムの格納先
0x11A63CC←アイテム
の格納先
0x11A63DC↓アイテム
の格納先
0x11A63EC→アイテム
の格納先

「セットするアイテム」は、そのアイテムIDを持ったアイテムをどのボタンに
割り当てるのかを決定する為のものであり、「セットしているアイテムの格納先」は
セットしているアイテムがどこに格納されているのかを指定する為のものです。

セットしたアイテムのアイテムIDはどのように変更されているのか。先ずは通常の
場合を見てみましょう。
C←にあきビンをセットし、C←のあきビンをサカナ入りビンに変更します。但し、
あきビンが格納されているメモリアドレス(以降「アイテムスロット」と呼ぶ)は
0x11A657とし、ジャンプする為の番号が19であることから、これをアイテム
スロット19と呼ぶことにします。

メモリアドレスアイテム・領域名

セットする
アイテム
0x11A638*
0x11A639あきビン20
0x11A63A*
0x11A63B*

セットしている
アイテムの格納先
0x11A63Cアイテムスロット1919
0x11A63D*
0x11A63E*

あきビンのアイテムIDは20で、サカナ入りビンのアイテムIDは25です。あきビンを
サカナ入りビンに変えたとき、C←アイテムのメモリアドレスより3つ先のメモリ
アドレスにあるアイテムスロット19には何が格納されているかのチェックが行われ、
格納されているのがアイテムID20「あきビン」であることを確かめた後にC←アイテム
のアイテムID、アイテムスロット19に格納されているアイテムIDは共に20から25に
書き換えられます。よって最終的にはこのようになります。

メモリアドレスアイテム・領域名

セットする
アイテム
0x11A638*
0x11A639サカナ入りビン25
0x11A63A*
0x11A63B*

セットしている
アイテムの格納先
0x11A63Cアイテムスロット1919
0x11A63D*
0x11A63E*

次にBにセットされているアイテムID20「あきビン」をアイテムID29「ムシ入りビン」
に変更します。但し、C↓にアイテムID9「ボムチュウ」をセットし、C→にはアイテム
ID8「時のオカリナ」をセットします。C↓アイテムのアイテムスロットはアイテム
スロット8、C→アイテムのアイテムスロットはアイテムスロット7であるとします。

メモリアドレスアイテム・領域名

セットする
アイテム
0x11A638あきビン20
0x11A639*
0x11A63Aボムチュウ9
0x11A63B時のオカリナ8

セットしている
アイテムの格納先
0x11A63C*
0x11A63Dアイテムスロット88
0x11A63Eアイテムスロット77

あきビンをムシ入りビンに変えたとき、Bアイテムのメモリアドレスより3つ先の
メモリアドレスにあるアイテムスロット8には何が格納されているかのチェックが
行われ、格納されているのがアイテムID9「ボムチュウ」であることを確かめた後に
BアイテムのアイテムID、アイテムスロット8に格納されているアイテムIDは共に
29に書き換えられます。よって最終的にはこのようになります。

メモリアドレスアイテム・領域名

セットする
アイテム
0x11A638ムシ入りビン29
0x11A639*
0x11A63Aムシ入りビン29
0x11A63B時のオカリナ8

セットしている
アイテムの格納先
0x11A63C*
0x11A63Dアイテムスロット88
0x11A63Eアイテムスロット77

・・・これで分かったでしょうか。時オカでは、アイテムや格納先を判断するとき
値でしか判断しておらず、結果アイテムIDをアイテムスロットの値と判断してその
ジャンプ先にジャンプ、そしてそのアイテムスロットに格納されているアイテムID
を書き換えてしまうのです。
何故書き換えてしまうのかというと、Bアイテムにはアイテムスロット用のメモリ
アドレスが用意されておらず、更にアイテムIDを書き換える際に3つ先のメモリ
アドレスを参照するようにしているので、結果的にC→アイテムを参照するように
なってしまうからです。

これはアイテムスロットだけで無く、アイテムスロット以降のメモリアドレスにも
影響を及ぼします。
アイテムの所持数、装備アイテムの所持情報、アイテムの所持数上限・・・等々、
様々な情報の書き換えが可能です。



後編に続きます。本当はBAもこの記事で書きたかったんだけど、思った以上に記事の
量が多かったので分割することにしました。

今回はこれくらいにしときます。


参考サイト
Bottle Duplication - ZeldaSpeedRuns
 →このサイトではもう一つBアイテムをあきビン化する方法が載っていますが、
  そこまでメジャーじゃないと思ったので省略しました。すみません。
Reverse Bottle Adventure - ZeldaSpeedRuns
 →RBAに使われるメモリアドレスはこちらを参照させていただきました。
Halfmilk RBA - ZeldaSpeedRuns
 →ロンロン牛乳による特殊なメモリ書き換え法です。原理をまとめる際に参考に
  させていただきました。
  分割してしまったので次回紹介するかもしれません。

*1:スティックを前以外に少しだけ押している状態で、このときリンクは回転する