忍者ブログ

データ置き場

ニコ生RTA放送を見ていて湧いた疑問を調査してアップするかも。ほぼドラクエのみを扱うブログ風のマニアックなサイト

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

大灯台2F宝箱のグレムリンバグ遭遇時の対処法(SFC版DQ1・2)

2014.01.19追記: 手っ取り早くバグの対策をしたい場合は最近公開した判定ツールを使う事を勧めます。

【グループ分けに関するメモリ(Kriさんが発見されました)】
メモリアドレス7E0F3D以降に出現した敵のグループ番号(0,1,2,...)が格納される。
7E0F3Dは左端の敵に、7E0F3Eはその右隣の敵に対応している。
取りうる値の範囲は7E0F3Dから順に0,0-1,0-2,0-3,0-4,...となる(チートを使用した場合この限りではない)。
通常戦闘ではこのメモリがエンカウントするたびに書き換わる。
敵の出現数と同じだけ書き換わったり、後ろの方のメモリまで書き換わったりする詳細は不明である
敵を選択後サイズ計算して溢れた場合に、出現していない敵のグループ番号が設定される

出現した敵が4体でメモリが0,1,1,2の場合はグループ0が1体(左端)、グループ1が2体、グループ2が1体出現する。
つまり値(グループ番号)が同じ敵は同グループとなる。
攻撃対象のウィンドウにはグループ番号が0のものから順に表示される。
DQ2groupNo.png

【グレムリンバグの発生条件(攻撃対象選択バグ)】
大灯台2Fの宝箱を開けると出現するグレムリン4体の戦闘では、前述のメモリが書き換わらず、直前のエンカウントと同じ状態となっている。
グレムリンバグは7E0F3D-40にある4つの値を並び替えても連続にならない場合に起こる。
例えば1がない0,0,0,2や、2がない0,1,1,3の場合である。
一例をあげると「ゴーゴンヘッド2体,サーべウルフ1体,ミイラ男1体」のエンカウントで"0,0,1,2"となり、
グレムリン4体との戦いの直前に「ドラゴンフライ3体」に遭遇して"0,0,0,2"となった場合である。

余談だが、敵IDの同じ敵が出現した場合、アドレスが若い方から順にA,B,Cと名前にアルファベットが付けられるため、
グループ分けメモリが0,1,0,0となるとグレムリンA,C,Dがグループ0に、グループ2にBが割り振られ、
「せんせー、グレムリンBくんが仲間はずれです!」
とみんなに言われてしまうとか…。

【グレムリンバグの症状】
このバグが起こると出現時のメッセージに表示されていない敵の名前が出ることがある。
画面にはグラフィックが4体分表示されているのに、攻撃対象選択欄には合計で2体か3体しか表示されない。
さらに敵を選択する攻撃(呪文や道具も含む)を行うとフリーズする可能性がある。
それは行動前に選んだグループが全滅していた場合であり、「〇〇のこうげき!」と表示されたままフリーズする。
(ムーンブルクがバギを選択していてもこうげきと表示される)
対象選択欄に表示されたグレムリンを無事に倒し終わると対象選択欄に名前が表示されなくなる
そのまま対象選択欄にカーソルを持って行くと上下に動かすことができるが、選んでもたいてい行動順が回ってきた時点で同様にフリーズする。

【グレバグ遭遇時の対処法】
しかし、実は攻撃対象をうまく選択すればフリーズを避けることができる。
このときの選択欄はカーソルの初期位置がグループ0,その下がグループ1,グループ2,...となっているからである。
つまり、登場時に表示されるグループ数から残りのグレムリンのグループ番号を推定し、
攻撃対象の名前が消えたあとに対応する箇所を選べばよいのである。
RTAなどの低レベル攻略で万が一バグに遭遇してもこの方法で対処することができる。

~対処法~
ベギラマなどの全体攻撃があればなるべくそれだけでダメージを与える。
それ以外の場合、戦闘開始時に攻撃対象が何グループ表示されたか確認する。
全体攻撃以外の攻撃をする場合、行動前に攻撃対象に選んだグループが全滅しないように注意する。
『攻撃対象の名前が消えたあとの敵の選択方法』
最初に1グループだけ表示されていたのであればカーソルの初期位置から3番目を選択すればフリーズしない。
最初に2グループ表示されていたら4番目を選択すれば良い。
カーソルの位置がわからなくなったらBボタンを押して選択し直せば問題ない。
『例外』はチート使わなければたぶんメモリが0,0,0,3の時だけ。
この場合はグループ3が残っているので4番目を選ぶ。
直前のエンカが4体4グループ→単一グループ3体(**)の場合
(ただし、間に2匹のエンカウントが発生したりした場合も起こりうる)
カーソルの初期位置から『(グループ番号格納メモリの値)+1』番目の敵を選択すればフリーズしないと言える。

(**; 追記にて大灯台2F以上では"単一グループ"にあたるドラゴンフライが3体出た場合だけ注意すれば良いとわかりました。)

↓検証に使った例
・1グループ2体のみ表示
0022         →3番目を選択
・1グループ3体のみ表示(*)
0020 0002      →3番目を選択
0003          →4番目を選択
・2グループ表示
0023 0113 0103 0013 →4番目を選択
(*; 選択欄から名前が消えたときに3番目か4番目かどちらを選べば良いのかわからなくなってしまう。)

【グレムリン戦突入前の注意】
といっても直前のエンカウントが単一3体(**)にならないように注意するだけである。
この場合、バグるとメモリが0002か0003か不明なため。

(**; 追記にて大灯台2F以上では"単一グループ"にあたるドラゴンフライが3体出た場合だけ注意すれば良いとわかりました。)

追記
Lapse Pointerのサイトにモンスター出現パターンの解析結果が掲載されています。
http://www.geocities.co.jp/Playtown-Darts/8566/dq/dq2info.htm#3
http://www.geocities.co.jp/Playtown-Darts/8566/
これを元に大灯台2F-3Fで1グループ3体のエンカウントを考えると、
サーべウルフ、ミイラ男、ゴーゴンヘッドのいずれかが3体選ばれた場合必ず、
次のモンスターの選択が行われるので4体目のメモリが書き換わります。
それ以外では単一グループのドラゴンフライが3体出現する場合しかありません。
つまり、メモリが0002や0003になるのはドラゴンフライが3体出現した場合に限られます
その確率は2~3Fでは、ドラゴンフライが出る確率が3/14で3体になるのが1/5なので4.29%程度と推測できます。大灯台4F-8Fも単一グループはドラゴンフライなので同様(ドラゴンフライ3匹の出現率はちょうど4%)。

念のためデータを表記(先に調べたデータ)
【メモリが0123330になったあとの単一3体のエンカウント】
@大灯台2F-3F
1グループ3体のエンカウント
0123330->000 0111サーベルウルフ3体
0123330->000 0112サーベルウルフ3体
0123->0001ミイラ男3体(x2)、サーベルウルフ3体(x3)
0123->0003ドラゴンフライ3体(x4)
()内は遭遇回数

2011.07.02一部修正
PR
Comment form
お名前
メールアドレス
URL
タイトル
コメント
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字
パスワード
カレンダー
07 2017/08 09
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
プロフィール
HN:
bamboo
性別:
非公開
自己紹介:
2010年の3月ごろニコニコ生放送のゲーム放送でRTAを知ってよく見るようになった。
どちらかというとゲームはプレイするものじゃなくてプレイを"みる"ものだと思っている。
逆アセンブル解析というのをかじったものの放置していたが、某放送の影響で解析を再開。
2を初クリアしたのは2011.3.10。ブログの内容はSFC版ドラクエ1・2の解析がメイン。最近はjavascriptとかluaをある程度扱えるようになったので、botでルート検証とかできたらと思いつつも進んでいない。
要点をまとめたり文章書くのが苦手なので記事が長ったらしかったり、日本語のようで日本語でなかったりする。プログラム用語が使えるようになりたいかも。
ツイッター: https://twitter.com/bamb00h
ブログに公開せずツイートのみの情報もあり(twilog
バーコード
ブログ内検索
カウンター
忍者アナライズ
  Copyright 2017 データ置き場 All rights reserved.
Template Design by LockHeart|powered by NINJA TOOLS 忍者ブログ [PR]