忍者ブログ

データ置き場

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

[PR]

×

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

ドラクエ2の任意コード実行(ACE)の可能性

はじめに

マドハンドバグで作れるバグアイテム0x6bを戦闘中に使用するとメモリー上の$0b/00a9※からコードを実行させることができますが、大抵はうまく行かずにフリーズ等が起きます。しかし、色々と条件を整えると、サマルトリアの王子の名前をコードとして実行したりそこからゲームパッド入力の領域($4218-$421f)にジャンプしたりする事ができます。こちらこちらを参考にLsnes上で4つのゲームパッドからの1フレーム分の命令はなんとか実行できたのですが、2フレーム目からは狙った命令が実行されませんでした。原因がよくわからないので、とりあえず方法をまとめておきます。
※この記事はSNES ADDRESSで表示します

名前をコードとして実行させる方法

サマルトリアの王子の名前2文字目 ($0160) からコードを実行させる方法

  • 条件1.アイテムID0x6bのバグアイテムなしを作成する
  • 条件2.右1マス移動後、上か下に1マス移動した位置でエンカウントする($00ee,$00ef の設定)
  • 条件3.出現したモンスターが1グループまたは2グループのパーティである ($00aa)
  • 条件4.ドラゴンフライやどろにんぎょうなど、右端の出現モンスターが特定のIDである ($00ab)
以下、各条件の解説、エンディング呼び出しなど
PR

世界樹の葉を諦めによるアイテム増殖と命の紋章リセット

概要

道具欄いっぱいで世界樹の葉を諦めると入手フラグが巻き戻り、直前に入手したマップ上のアイテムが再配置される。

【手順】

  1. マップに配置された増殖したいアイテムを拾う。
  2. 世界樹までマップに配置されたほかのアイテムは拾わない(*)
  3. アイテム欄を埋めた状態で世界樹の葉の場所へ向かう
  4. 世界樹の葉を拾いに行き、いったん「いいえ」を選んで諦める(拾得フラグがOFFになる)
  5. 連続で行わない場合は世界樹の葉を回収する
  6. アイテムが再配置されているので回収する
*)下のようなアイテムを復活できないアイテムは拾っても良い(命以外の紋章?)

【フラグ巻き戻しが出来ないことが確認されたもの】

  • 太陽の紋章(炎の祠)
  • 星の紋章(大灯台)(戦闘後自動でメッセージ窓が開く)

【なにか】

どちらも取得時に7e10b6が書き換わらない。世界樹入手時に「いいえ」を選んだ時に7e10b6の値に対応するアイテムの拾得済フラグが消されて再配置される。アイテム回収して回ってこのメモリが変化しないのを探すのが早そう。(7e10b6は直前に取得したアイテムのフラグ先をビット単位で示すオフセット イベントアイテムで確認)
フラグが消えた状態になるから初期状態の中身が入った状態に戻る。所持品は減らないが紋章はこのフラグで取得済みか判定されて消える?

【使用例】

  • 不思議な帽子を複数回拾う
  • ザハンの祈りを温存しておいて葉っぱ回収の前後に入手
命の木の実を詰んで低レベルでシドーに挑む試みもあるらしい。
「再現なしバグあり」で世界樹増殖とか病気サマルLv22マヌザラとかを合わせるのも面白いのかもしれない

モンスターの行動再選択とMP消費

【モンスターのMP消費と行動再選択の関係性】(DQ2の仕様)

最大MPが255(無限)であるか呪文を封じられているか、仮選択された呪文を使えるだけのMPがない場合、MPは消費しません。
それ以外の呪文選択時は、一時的にMPを減算します。
魔封じ・MP不足以外の理由で行動再選択となった時に各行動のサブルーチンSRでMPを元に戻しますが、次の呪文は再選択されてもMPを元に戻しません。
消費する行動:ルカナン[2]、スクルト[2]、メガンテ[1]
※[]内の数値はMP消費
さらに最大HP255以上のモンスターによるホイミ(自)[3]、ベホイミ(自)[5]、ベホマ(自)[8]も一時的に選択されただけでMPを消費します。これに該当するのはベリアルのベホマだけです。(ハーゴンはMP無限のため該当しません)
また、1ターンにモンスターあたり最大で8回行動が仮選択され、8回目も実行しない場合は非痛恨の打撃に確定となります。このため実行されない呪文によるMP消費は最大で1ターン8回起こることになります。ベリアルで起こす事ができればMPを64消費して打撃1発撃つ事になります。

【各行動の再選択条件】

ルカナン:死者も含めたプレイヤーキャラの守備力が全員0になっている。
スクルト:判断力1以上ある。行動時に出現中の全モンスターの守備力が、初期値の2倍または255に達している。
メガンテ:「術者の現在HP ≧ (左端のモンスターの最大HPを8で割った値の整数部)」 となる時(バズズはHP31以上の時)
ベリアルのベホマ:現在HPが160以上

コピペが多くて見づらいかも知れませんが、再選択条件はこちらにも記述しています。
カレンダー
02 2024/03 04
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 2024 データ置き場 All rights reserved.
Template Design by LockHeart|powered by NINJA TOOLS 忍者ブログ [PR]