見出し画像

Dungeon Savior解析してみた(ヤミギツネ)

はじめに

2000年にGBCで発売した ダンジョンセイバーというゲームがあります。
そのゲームには多くのバグがあり、「攻略本に書かれているのに仲間にならないキャラ」、「ドロップしないアイテム」、「使うとセーブが消える技」等があります。

今回は、その中でも出現条件がわからない「ヤミギツネ」というキャラクターについて、解析して出現条件を調べてみました。

この記事を見に来ている人は大体がゲームをプレイしたことがあると思うので、途中の説明は省きます。ご了承ください。

というわけで。早速、酒場に出現するキャラの選択処理について説明します。

酒場のキャラ選択について

キャラ選択処理は、酒場に入って一回目の「さがす」を押したときに実行されます。

処理は下の順番で実行されます。

  1. 乱数によってキャラを決定

  2. 既に仲間になっているか確認

  3. キャラが出現するマップか確認

  4. キャラ毎の特殊な条件を確認

ヤミギツネのデータを見たところ、出現するマップは特に決まっていないようです。
なので、「4.キャラ毎の特殊な条件を確認」で判定がされているようです。

ヤミギツネの出現条件

次に「4.キャラ毎の特殊な条件を確認」の処理は以下の通り。

  1. キャラが0x06(サイド)の場合、条件チェックルーチンへ遷移

  2. キャラが0x13(ヤミギツネ)の場合、条件チェックルーチンへ遷移

  3. キャラが0x14(フウセツ)の場合、条件チェックルーチンへ遷移

  4. キャラが0x17(マリア)の場合、条件チェックルーチンへ遷移

  5. キャラが0x18(デュレイス)の場合、条件チェックルーチンへ遷移

  6. キャラが0x19(ディアス)の場合、条件チェックルーチンへ遷移

  7. キャラが0x1A(アタミ)の場合、条件チェックルーチンへ遷移

  8. キャラが0x28(ドリポン)の場合、条件チェックルーチンへ遷移

ヤミギツネの場合の処理があるので、出現しない原因はここを見ればよさそうです。
続けてヤミギツネの条件チェックルーチンについて見ていきます。

  1. 2個のフラグをクリア

  2. PTの6キャラ目を取得

  3. キャラがヒノマルならフラグを立てる

  4. キャラがフウセツならフラグを立てる

  5. PTの5キャラ目を取得

  6. キャラがヒノマルならフラグを立てる

  7. キャラがフウセツならフラグを立てる

  8. PTの4キャラ目を取得

  9. 以下略

  10. 1つ目のフラグが立っているか確認
    立っていなければチェック結果を不適合として元の処理に戻る

  11. 2つ目のフラグが立っているか確認
    立っていなければチェック結果を不適合として元の処理に戻る

  12. チェック結果を適合として元の処理に戻る

ということで、「ヒノマル」、「フウセツ」の2人がPTにいれば出現するようです。
この条件は、かなり昔から予測されていたものだと記憶しています。
実際、私も何度もその条件で試しまくった記憶があります。
ですが、出たためしがありません。

「はじめから」を選択すると10ある乱数の内1つが決定され、その乱数により出現アイテムの出る出ないや酒場に登場するキャラクターの出る出ない等が決定される。出現する乱数が3つしかないヤミギツネは滅多に出ない。

https://wikiwiki.jp/syansini/%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88

という情報がありますが、そのような値をチェックしている処理も見当たりません。

ってことは…バグってる?

バグってる?

ヤミギツネの条件チェックについて、もう一度見てみます。

  1. 2個のフラグをクリア

  2. PTの1キャラ目を取得

  3. キャラがヒノマルならフラグを立てる

  4. キャラがフウセツならフラグを立てる

当然、2人分のフラグがクリアされて、各々の条件が成立したときにそれぞれのフラグが立つものだと思いました。
ですが、処理を見ると…「3.」の時と「4.」の時、同じ1つのフラグを更新していました!!

その為、ヒノマルとフウセツがいても 最終的にフラグが1つしか立っていないので、条件が成立せず ヤミギツネが出現しなかったようです。

結局バグなんかい…

という訳で、結論としては、

ヤミギツネが出現しないのは、フラグ更新ミス(バグ)のせいでした!


ヤミギツネを仲間にするには

原因は特定できましたが、結局出現させることはできませんでした。
では 子供の頃の私ががっかりするので、プログラムを修正して出現するか確認してみます。

対象となるのは、フラグ更新処理に該当する、"0x002412D6" と "0x002412DE"。
ここが、どちらも "0xDE" になっているのが原因です。
フラグは $CDDE と $CDDF ですが、上記が両方DE。
つまりどちらも $CDDE を更新していて、$CDDFを更新する処理が実装されていません。
なので、 "0x002412D6" か "0x002412DE"のどちらかを "0xDF" に修正すると…

ヤミギツネが出現しました‼

図鑑もバッチリ

無事ヤミギツネを仲間にすることに成功し、長年続いたモヤモヤが解消された!!
…と思ってたのですが、実はもう一つバグが隠れていました。

隠された?バグ

先程のバグを直したのに、ヤミギツネが出現しない場合があります。
それは、ヒノマルかフウセツが1人目?にいるときです。

ここ(フウセツの位置)に配置していると出現しない

どうやら、先程のヤミギツネの出現チェックの、「PTの1キャラ目を取得」がバグっていて、PTの1キャラ目はチェック対象として認識されないようです。(どうバグってるかはちゃんと見てないです…)
これは、「特定のキャラクターがPTにいる」のが条件となっているキャラクター共通のバグっぽいです。
マリア(ボンビューがPTにいるのが条件)で確認しましたが、同様に1キャラ目に配置した場合は出現せず、配置換えをすると出現しました。

このバグについては、知っていれば回避できるものなので、特に修正する方法も探していません。

という訳で、ダンジョンセイバーのヤミギツネの出現条件を解析したところ、「バグで出現しない」という解析結果となりました。

最後に

何分、昔のマイナーゲームなので参考にされる人は少ないと思いますが、私と同じように長年疑問に思っていた人がいれば、その疑問が解消される一助になれば幸いです。


次はアイテムドロップについて、解析した内容を書こうと思います。
果たしてクラスチェンジアイテムはドロップするのか…!?

この記事が気に入ったらサポートをしてみませんか?