DQ2(SFC)グレムリンバグの具体的な条件と対処法

最終更新:2011/02/11

目次

  1. グレムリン前エンカの具体的な設定と考察
    1. 単一グループ
    2. 4グループ
    3. 画面外設定
  2. まとめ
  3. 更に簡潔なまとめ

基本的には3のまとめのみ見れば充分です。

1.グレムリン前エンカの具体的な設定と考察

まず、大灯台2〜7階のエンカウントテーブルは以下のように設定されている。

No.00010203040506
名称ランダム0ランダム1ランダム2ランダム単数単一グループ出現単体出現固定PT
大灯台2-3Fサーベルウルフミイラ男ゴーゴンヘッドアンデッドマンドラゴンフライFF(なし)FF(なし)
大灯台4-7FアンデッドマンゴーゴンヘッドラリホーアントグレムリンドラゴンフライゴールドオークFF(なし)

参考:SFC DQ1・2 RomMap ver.1.01(86 ◆bC2iBDWl3o氏)

No.04と05(単一グループと単体出現)は、他のグループを絡まずに単一グループ(もしくは単体)で出現する。
そして反対に、No.00〜03(ランダムエンカ)は必ず2グループ以上設定され
エンカNo.は重複設定されず、かつランダムエンカ同士でしか連結しないので、最大は4グループである。
また、No.03(ランダム単数)選択後は必ずもう1グループ形成される。

a.単一グループ

前回のまとめに書いた通り、バグの起きる可能性の大半は “最終エンカが単一グループ”の場合である。
これと上記のエンカ設定とを併せて考えると、
バグの可能性のある「2,3匹の単一グループ」の最終エンカとは「ドラゴンフライ」に限定されることになる。

現実には「サーベルウルフ3匹のみ」「ミイラおとこ3匹のみ」のエンカが存在する。
しかし、上記の設定を加味すると、実は単一グループではないことが分かる。
詳しくは後述するが、グラフィックサイズの関係で4匹目以降が画面外に追い出されているため、
一見1グループしかエンカウントしていないように思えるのである。
つまり、グレムリンバグに沿った記述をすると、
最終エンカがサーベルウルフ3匹のみ・ミイラおとこ3匹のみの場合は、絶対にグレバグは起こらないということになる。
(画面外に最低1グループは居る=最低でも4匹目まではモンスターが新規設定されているため。)

b.4グループ

バグの起こる条件の一つとして、
“「4匹4グループ」「3匹3グループ+画面外1グループ」 → 最終:「2グループ」「単一グループ」”というものがあった。
しかし、
Lapse Pointer様(T氏)の情報、および筆者自身の解析の結果、
PTが4グループ設定されるのは非常に限定的ということが分かった。

05C804 LDA $0EF1;"A"=$0EF1(第3グループ)
05C807 CMP #$03
05C809 BNE #$0E ? -> $05C819第3グループ≠03の時、処理を飛ばす
05C80B JSR $C60A -> $05C60A;第4グループのモンスターテーブルNo.決定
05C80E CMP #$FF
05C810 BEQ #$07 ? -> $05C819;(敵ID=FF(モンスターテーブル空白)の時、処理を飛ばす)
05C812 STA $0EF2$0EF2=A(第4グループ)
05C815 TAY
05C816 JSR $C745 -> $05C745;第4グループの個体数決定
05C819 RTS

上記がPT決定ルーチンの一部抜粋であるのだが、
第3グループが03(ランダム単数)モンスターの時のみ「第4グループ」が設定されることが読み取れる。

バグに関係する、大灯台2〜7階のエンカウントテーブルに照らし合わせると、
3グループ目が「アンデッドマン(2-3F)」「グレムリン(4-7F)」の場合のみ、4グループ目が設定されると分かる。
なお、この箇所に入るにあたり確率による分岐は見られなかったため、
この条件の場合は“確実に”4グループ設定されると思われる。

c.画面外設定

前回の記事でも紹介したが、画面上のモンスター以上に敵IDおよびグループ分けが設定されていることがある。
解析を行った結果、敵グラフィックの“横サイズ”合計に応じて合計出現数が制限されていることが分かった。

敵種類横サイズ最大出現数
ラリホーアント 44
グレムリン 54
ゴーゴンヘッド 54
ドラゴンフライ 55
ミイラおとこ 64
アンデッドマン 64
サーベルウルフ 74

参考:SFC DQ1・2 RomMap ver.1.01(86 ◆bC2iBDWl3o氏)

$05C502以降のルーチンによると、
個体の横サイズ×2+個体間(同種同グループ:+1、別種/別グループ:+2)の合計が53以下まで
が実際に出現可能である。

大灯台4〜7階

「アンデッドマン・ゴーゴンヘッド・ラリホーアント・グレムリン」の合計サイズは、
(6+5+4+5)×2 + 2×3 = 46 (≦53)
となり、4匹4グループが設定された場合は、必ず画面上に4匹出現する
(なお、このエンカウントは実際に確認済みである。)
つまり、グループ番号でいうところの012(3)になっている可能性は全く無いということになる。

また、012(2)の可能性についても考察する。
一番大きい組み合わせの例として「ゴーゴン・グレムリン・アンデッド・アンデッド」を計算すると、
(5+5+6+6)×2 + 2×3 = 50 (≦53) となる。
つまり画面内に4匹が収まることとなり、012(2)の可能性も消滅する。

以上のことから、大灯台4〜7階において「4匹目が画面外に設定される」ことは全くない
つまり、3匹エンカの場合、4匹目は絶対に設定されていないと考えられる。

大灯台2〜3階

まずは4種4匹エンカについて考える。
「サーベルウルフ・ミイラ男・ゴーゴンヘッド・アンデッドマン」の横サイズを計算すると、
(7+6+5+6)×2 + 2×3 = 54 (>53)
つまり、4種4匹全てが画面内に収まることはありえない
言い換えると、012(3)の可能性が存在することになる。

ここで、項目b.の「第4グループの設定条件」を考える。
4グループ目が設定されるのは第3グループにNo.03モンスターが選ばれた時、
つまり、大灯台2〜3階の3匹3グループエンカで「3グループ目(右端)がアンデッドマン」の時、
画面外に確実に4匹目が存在し、しかも別グループ
=012(3)のエンカウントということになる。

次に012(2)の可能性を考える。

ミイラ6アンデッド6サーベル7サーベル7:(6+6+7+7)×2 + 2+2+1 = 57
ゴーゴン5アンデッド6サーベル7サーベル7:(5+6+7+7)×2 + 2+2+1 = 55
サーベル7アンデッド6ミイラ6ミイラ6:(7+6+6+6)×2 + 2+2+1 = 55
サーベル7ゴーゴン5ミイラ6ミイラ6:(7+5+6+6)×2 + 2+2+1 = 53
サーベル7ミイラ6ゴーゴン5ゴーゴン5:(7+6+5+5)×2 + 2+2+1 = 51

012(2)の“可能性がある”のは、
「3グループ目がサーベルウルフ(他の条件不問)」「ゴーゴンヘッドを含まず3グループ目がミイラおとこ」の場合である。
“可能性”としたのは、3グループ目が1匹のみの可能性もあるからである。

また、001(2)の場合は先の表を右から眺めると良いだろう。
「サーベルウルフ×2+任意の1匹」「ミイラおとこ×2+アンデッドマン」「ミイラおとこ×2+サーベルウルフ」
が、001(2)の可能性があることが分かる。

これを裏返すと、「絶対に001/011(画面外無し)となる具体例」も把握することができる。
つまり、「ゴーゴンを含む2種3匹エンカは、“サーベル2匹”がいない限り画面外4匹目の設定はない。」
(4匹目が設定された場合、サイズに余裕があるため絶対に画面内に現れる。)

2.まとめ

絶対に安全なパターン

バグの発生する“可能性がある”パターン

 (※大灯台2,3階において右端がアンデッドの場合は絶対に安全。
  逆に、4〜7階の全ての3匹2種エンカ、および
  ゴーゴンを含み「サーベルが0〜1匹」の3匹2種エンカは必ずバグが発生する。はず。)

基本的に、この後に「2匹2グループ以上」のエンカを引けばバグは回避できる。
しかし、

の場合は、2グループを引いても回避できないパターンなので注意すること。
(グループ番号で表すと、012(3) → 0003/0013/0113 → 2グループ の場合。)

3.更に簡潔なまとめ

回避条件は色々あるものの、一々確認するなんてめんどくさい。そんな時。

ベギラマを習得する
全体攻撃であれば、選択できるグレムリンが全滅後でも残りの個体にダメージを与えることができる。

ベギラマ未習得、もしくはサマル死亡の場合。

  1. とりあえず、最終エンカが「ドラゴンフライ×2,3匹」の場合のみ、
    「2グループ以上or4匹以上orサーベルウルフ3匹orミイラおとこ3匹」が出る
    まで頑張る。
    厳密に言うとやや過剰ではあるが、これだけでも大半のバグは防ぐことが出来る。
  2. グレムリンバグが発生した場合、選択できるグループを全て殲滅後(*1)、
    以下の方法で残りの個体に攻撃をする(*2)。
    1. 2グループ認識(1匹+2匹or2匹+1匹): グループ選択画面でカーソルを3つ下(4番目)
    2. 1グループのみ認識(3匹or2匹): 基本的には(*3)カーソルを2つ下(3番目)
    3. *3:(4〜7F)「4匹4種」エンカ or (2〜3F)「3匹3種アンデッドマンが右端(3グループ目)」のエンカ
      に心当たりのある場合は、カーソルを3つ下(4番目)にしないとフリーズする。
      しかしそのあとに、2〜3Fで「3匹2種のエンカ」を引いてしまっていると
      もはや判別不能になっているので、博打をするか諦めるかしかない。
    4. ただし、1.の条件を忠実に守っていれば、バグ発生時は「必ず2グループ認識」のはずなので問題はない。

なお、最終エンカウントが1匹単体の時は、エンカ状況を一つ前倒して考えること。

*1:グレムリン攻撃時の注意

グレムリンバグ発生時のフリーズは、「存在しないグループを攻撃しようとした時」に起こる。
攻撃対象のグループが全滅しそうな時に3人全員で攻撃してしまうと
コンピュータが自動で別のグループを選択してしまい、フリーズする可能性がある。
つまり、攻撃対象“グループ”がターン途中で全滅しそうな時は、防御するなどして手数を調整する必要がある。
(元々2グループ選択可能な時に、別々のグループを「プレイヤー自身が」選択する分には問題ない。)
(ちなみに、ベギラマ等の全体攻撃は「グループを選択する過程がない」ため、フリーズしないのである。)
“コンピュータにグループを選択させないでください”

*2:選択画面に表示されない個体に対する攻撃

表示されている個体を全て倒すと、“何も書かれていない枠”のみが残る。
その際、実はカーソルを下に動かすことが出来る
カーソル位置は、初期位置から順にグループ0、グループ1、グループ2、グループ3に対応しているため、
正しいグループ位置を選択してやると実は攻撃が可能なのである。
逆に言えば、バグ遭遇時に適当に攻撃するとフリーズするのは、存在しないグループを攻撃しようとしているせいである。
(カーソル位置が分からなくなった時は、落ち着いてBボタンでキャンセルすれば問題ない。)

なお、この「選択不可な個体に対する攻撃方法」「カーソル位置と各グループの対応」はbamboo氏の発見である。
参考:SFC版DQ1・2 大灯台2F宝箱のグレムリンバグ遭遇時の対処法(bamboo氏)

文責:Kri (http://com.nicovideo.jp/community/co381358)