現段階で人力でやるのは現実的ではない。理想的に操作ができたとしてもメタル出現率は50%程度で逃げることも十分考えられます。調査内容が一部間違っている可能性を否定しません。0050BF(出現敵決定)エンカウント・半歩移動は8フレーム。周期8フレーム→歩行中の入力精度は8フレーム以内でOKなはず・出現する敵はフレームカウント$68(0-4,周期5フレーム)で決定される・タイミングが重要!1フレームもずれてはならない・$68は画面の切り替わり,メッセージウィンドウ表示,勇者の攻撃などの時にカウントを飛ばすことがある。*入力受付→1F後7E10B9=1→さらに8F後$68取得→さらに2F後画面がフラッシュ*$68が常に1フレームごとに1回カウントされると仮定する。フラッシュから5N+4フレーム後のキー入力を受け付けるときに動画の山の位置へ移動開始する。その後ミスせず移動していれば50%くらいでメタルスライムが出現する。(エンカウント率を平地:山=1:3として考えた。http://www1.axfc.net/uploader/P/so/88548.avi連射設定おかしいのかダメージ固定されていません。直しても撮影したエミュレータだと押しっぱなしでは2回に1回しか入らない模様。原因はよくわからない。0.218の連射機能だとダメージが入るときは途中でキーを離しても必ず入り、外れるメタルはとことん外れる。入力可能なフレームが決まっているのだろうか。”のループ「適切なタイミング」で右へ半歩移動。以後1フレームの無駄もなく動くw下(海)、下(平地)と入力し、角テクで右に半歩さらに下へ半歩移動(ここも平地判定)右(平地)、上(平地)、右(山)[ここまでで半歩移動5回,ループ前半終了]左(平地)、上(海)と入力する。(角テクで右に半歩移動)左(平地)、左(平地)、左(山)ここまでで一ループ。エンカウントするまでひたすら繰り返す。敵出現エリアで同じルートを通っても半歩テクありとなしでその後の乱数が変わってくる。「適切なタイミング」→攻撃エフェクトや足元調査などで変わってくる事前のエンカウントで、エンカウントテーブルの5番目に設定された敵が出現していたとする。このエンカウントのフラッシュが目安。フラッシュした瞬間から5N+3フレーム後に方向キー入力が入れれば良い。テーブルNo2なら5Nフレーム後)ただし、このエンカウントからメタルスライム出現までフレームカウンタ$68が正確に1フレームに1回動いているものと仮定しており、通常はずれるはず。移動のキー入力受付は8フレームに1回しかないのでタイミングが合わないことが多い。・リセット直後はカウントが止まったり、2フレームに一回進んだりする。位置と出現が期待される敵の関係は表のようになる。Comment(0)購入後の所持金と福引券取得の関係DQ1・2【判定法】プログラムのROMアドレス(PC)004812-004827購入後の所持金を16進数にして3バイト(#$00-FF)の合計を計算する。下の位(0-F)が1か3であれば条件を満たす。(アイテムの空きの検索処理は未確認だが空きが2つ以上ないと貰えないはず)一覧表はこちらから所持金Xはメモリの7E0C81,7E0C82,7E0C83に格納されている。MOD(INT(X/65536);16)IF(OR(MOD(A+B+C;16)=1;MOD(A+B+C;16)=3);"もらえる";"もらえない")【数学的に考えてみる】→従来の式は間違ってはいない。購入後の所持金をY、「Yを65536で割った時の商をA」,余りをq(1)とする。q(1)q(1)を「256で割ったときの商をB」,余りをq(2)とする。q(2)A,B,q(2)の和を16で割ったときの商をC,余りをXとする。3Xが1または3となるYが福引券をもらうことのできる金額である。所持金が65536未満であればA=0なので従来の式「255*m+16*n+1,3」は間違ってはいない。mが所持金を256で割ったときの商であることに気づかないと間違った結果になる。0(A=0,B=1,C=16)【(所持金<65536(=#$10000)の時の)16進数で金額のばらつきについて考える】ここでは+1型と+3型は比較せず、同型の貰える金額の差を考えてゆく。・一般的に貰える金額は#$10間隔である。(#$01,11,21,...,F1)・1,2桁目(1と16の位)が繰り上がるときは3桁目が+1されるので1桁目は-1されなければならない。そのため間隔は#$0Fとなる。EF5->F04)1,2,3桁目が繰り上がるときも同様である(_FF2->_001(+F)※_は0~E)ただし、1の位が0の時は1,2桁目が繰り上がるには#$10以上増えなければならないので-1するかわりに+Fされ、間隔が#$1Fとなる。=255or271)増えるたびに起きるはずである。Comment(0)回避(モンスターがプレイヤーに攻撃する場合)DQ1・2回避の判定はマヌーサ(1/2),通常回避(1/64),身かわし(1/8)の順にされる。マヌーサ+身かわしだと○,×○,××○の確率の合計なので57%,マヌーサのみは51%,身かわしのみは14%程度。(058AC5,058F7F以降を解読)ただし、通常攻撃以外の打撃の場合は基本的に通常回避,身かわしによる回避の判定が行われない。詳細は表のとおりである。連続攻撃の二発目は通常攻撃と同様に判定される。判定にはフレームカウンタ7E0067を使用している。メッセージ速度8に設定していて次の行動が敵の通常攻撃である場合、メッセージ送りのボタン入力から9フレーム後の値が0,40,80,C0であれば回避される。フレームカウントが37,77,B7,F7の時にメッセージを送れば攻撃を回避できる。戦闘メッセージ窓が下の枠まで表示されたフレームから9フレーム目に回避判定がある。ここで7E0067=0x00,40,80,C0であれば回避することができる。自己紹介:2010年の3月ごろニコニコ生放送のゲーム放送でRTAを知ってよく見るようになった。どちらかというとゲームはプレイするものじゃなくてプレイを"みる"ものだと思っている。逆アセンブル解析というのをかじったものの放置していたが、某放送の影響で解析を再開。2を初クリアしたのは2011.3.10。ブログの内容はSFC版ドラクエ1・2の解析がメイン。最近はjavascriptとかluaをある程度扱えるようになったので、botでルート検証とかできたらと思いつつも進んでいない。要点をまとめたり文章書くのが苦手なので記事が長ったらしかったり、日本語のようで日本語でなかったりする。プログラム用語が使えるようになりたいかも。