<   2009年 10月 ( 6 )   > この月の画像一覧

フェイの問題

各データのアドレス表は以下の場所にあります。第1問から順に並んでいて、1問につき3バイトです。

03B77C以降……通路・部屋の入口・水脈
03B812以降……道具
03B8A8以降……階段
03B93E以降……罠
03B9D4以降……モンスター
03BA6A以降……部屋
03BB00以降……出現する罠

そして、中身のフォーマットは以下の通りです。[]は括弧内を繰り返すことを意味します。

通路・部屋の入口・水脈:[X座標 Y座標 地形コード] FF
道具:[X座標 Y座標 種類 値2 識別 商品] FF (*1)
階段:X座標 Y座標
罠:[X座標 Y座標 罠コード+C0] FF (*2)
モンスター:[X座標 Y座標 種族 レベル 状態] FF (*3)
部屋:[部屋番号 左-1 上-1 右+1 下+1 部屋の状態] FF
出現する罠:出やすい罠のコードを5バイト、出にくい罠のコードを6バイト

*1:識別は00で未識別、01で識別済み。商品は00で通常、01で商品。
*2:第42問の店主専用スペースも罠コード+C0の部分に85を入れて設置していました。
*3:状態は00で起きている、01で睡眠1。

シレンの初期位置は少し離れた場所にあって、03AE13以降に"[00 00 00 00 08 問題番号 X座標 Y座標]"というデータがあるのでそれを変更すれば良いです。
[PR]
by oyasen | 2009-10-25 20:15 | 改造・解析

やみふくろうで時限爆弾

前回の続きです。前回、やみふくろうを迷路部屋に置くとどろぼうハウスのバグが起こることを説明しましたが、それではやみふくろうを通路(部屋の入口では駄目)に置くとどうなるでしょう。
通路の地形コードは30です。するとbit0が1になるのは$7EC196です。これはそのフロアに出現する罠リストの一部です。もし、この値が14(大型地雷)だったとしましょう。bit0が1になると15(時限爆弾)になるではありませんか!
以前、剛魔窟でどろぼうハウスのバグが出たフロアで時限爆弾が出たというページがありましたが、実は両者は関係していました。
あまり面白みはないですが、バネの出るフロアでは同様に投げ矢も作れます。$7EC196には出やすい罠(出現する罠の決定を参照)しか入らないので、残念ながら他の没罠は出せません。

無限増殖セット+カラクロイドの肉+やみふくろうの肉をお持ちの方は、お暇ならこばみ谷で時限爆弾探しでもしてみて下さい。

1.カラクロイドの肉でそのフロアに出現する罠の種類を調べる
2.大型地雷が出なければ次のフロアへ、1.に戻る
3.やみふくろうを通路に置く
4.もう1度カラクロイドの肉で罠を沢山作ってみる
5.運が良ければ時限爆弾発見。大型地雷が作られたら($7EC196は大型地雷ではなかった)次のフロアへ、1.に戻る

道具出現と次のフロアに移動するのにデバッグモードを使いましたが、とりあえずZSNESで確認済みです。実機でも運が良ければ見つかる筈です。
時限爆弾を作った時は、それのグラフィックが読み込まれていないので正しく表示されませんが、中断・再開することで正しく表示されます。

ということで、やみふくろうは部屋にいる時以外は暗闇にする処理の必要がないのに無条件で処理をしてしまっているという、何とも初歩的なミスでしたが、"X"を地形コードのとり得る範囲とすると、$7EC166+"X"はモンスターハウスの種類と罠リスト以外は未使用のよう(つまり、どろぼうハウスと時限爆弾以外のバグは起こりそうにない)なので、ミスに気付かなかったのかも知れません。

と、ここまで書いて気付いたのですが、どろぼうハウスの報告も時限爆弾の報告もこばみ谷22Fでした。シューベルがやみふくろうを呼び出した、とかでもないとこれでは説明が付かないのですが。まあそれでも、意図的に出す方法を発見したということで。
[PR]
by oyasen | 2009-10-20 20:11 | 改造・解析

どろぼうハウスのバグ

通常のモンスターハウスなのに、「どろぼうハウスだ!!」と表示されることがあるというバグがありますが、その原因が判明しました。
バグが発生する条件から言うと、迷路部屋または暗い柱部屋にやみふくろうがいて、尚かつ通常のモンスターハウスがある場合、その部屋に突入すると「どろぼうハウスだ!!」と表示されます。

$7EC166-$7EC16Fは、部屋の状態を表すフラグで、その中身は以下の通りです。

bit0 暗闇,bit1 隠し部屋,bit2 迷路、暗い柱部屋,bit3 モンスターハウス
bit4 浮島,bit5 店,bit6 bit7と併せて埋蔵金,bit7 水脈(水脈で分断された部屋、網目部屋、水溜まり)

やみふくろうがいると、毎ターンそのやみふくろうの足元の地形(ダンジョン編集を参照)を"X"に入れて、$7EC166+"X"のbit0を1にします。そのやみふくろうが部屋にいる場合、足元の地形は部屋番号と等しいので上手くいきます。
しかし、やみふくろうが迷路部屋にいるとどうなるでしょう。迷路部屋の地形コードは10です。するとbit0が1になるのは$7EC176です。$7EC176は、そのフロアにモンスターハウスがある場合、その種類を表します。

00 モンスター,01 どろぼう,02 ドレイン,03 1ッ目,04 ゴースト,05 パワー,06 番犬隊

$7EC176は、通常のモンスターハウスの場合は00ですが、このバグによって01になってしまいます。その結果、その部屋に突入すると「どろぼうハウスだ!!」と表示されてしまいます。
こばみ谷では、迷路部屋はテーブルマウンテン以降にしか出現しませんし、テーブルマウンテンでは、やみふくろうは23~25Fにしか出現しません。このバグがテーブルマウンテンの後半で報告されることが多いのにも納得です。
勿論、こばみ谷以外でもこのバグは起こります。その場合、通常のモンスターハウスのみならず、ドレインハウスが1ッ目ハウスに、ゴーストハウスがパワーハウスになることもある筈です(誰か確認して下さい)。
迷路部屋の敵にやみふくろうの肉を投げ付けてモンスターハウスに突入してみましょう。暗い柱部屋でも可能です。
当たり前ですが、やみふくろうを作ってモンスターハウスの巻物を読むのは、モンスターハウスができる前にやみふくろうが消滅してしまうので駄目です。
[PR]
by oyasen | 2009-10-18 19:45 | 改造・解析

ガイコツまどうの杖のバグ

ガイコツまどうの杖を投げると、モンスターの特技としてのガイコツまどう系の杖の効果が出ることがあるというバグがありますが、その原因が判明しました。

ガイコツまどうの杖を振った時の処理は031EC3以降にあります。実はこのルーチンはガイコツまどう系の杖を振った時の処理と共通で、このルーチンで分岐するようになっています。
このルーチンは、$00(振られた側)と$01(振った側)を引数としています。魔法弾が反射した場合は$00は反射された側、$01は反射した側になります。
更に、7E935Eのbit7も参照します。7E935Eのbit7は、シレンが道具を使った時やガイコツまどう系が杖を振った時に、それらの処理の前に更新され、その行動の結果魔法弾が反射されるときに1になり、そうでないときに0になります。
7E935Eのbit7が0のときに$01(振った側)の、1のときに$00(反射された側、すなわち杖を振った側)の外見を読み込みます。その結果、必ず杖を振った側の外見が読み込まれ、それがシレンのときにガイコツまどうの杖の処理に、シレンでないとき(ガイコツまどう系に杖を振られたか、シレンがそれらの肉の特技を使った場合)にガイコツまどう系の杖の処理に分岐するようになっています。

しかし、7E935Eのbit7はシレンが杖を投げた時には更新されません。従って、ガイコツまどう系に杖を振られてやまびこの盾で反射したり、エーテルデビルに杖を振って反射された後、他の道具を使わずにガイコツまどうの杖を投げると、ガイコツまどう系の杖の効果が出てしまいます。
杖を投げた時は、$00は投げた側、$01は投げられた側です。しかし、7E935Eのbit7が1のままなので、本来ならば$01(投げた側)の外見が読み込まれなければならない所を、$00(投げられた側)の外見が読み込まれ、それは当然シレンではないので、ガイコツまどう系の杖の効果が出ることになります。
レベルも同様で、本来ならば投げた側のレベルに応じた効果を出さなければならない所を、投げられた側のレベルに応じた効果が出ることになります。例えば、デブーチョにガイコツまどうの杖を投げると、かなしばりやいかずちの効果が出たりします。

ということで掛軸裏の洞窟でも、エーテルデビルに杖を振って反射された後、レベル3のモンスターにガイコツまどうの杖を投げれば肉が手に入る可能性があります。残念ながらエーテルデビルはレベル1しかいないので、エーテルデビルの肉は手に入りませんが。
掛軸裏の洞窟でこのバグが出にくいと言われているのは、やまびこの盾が出ないのでエーテルデビルに杖を振るしか方法がないからでしょう。
このバグ技を意図的に使って、風来のシレンランキング等にエントリーしたりしないで下さい。
[PR]
by oyasen | 2009-10-16 20:01 | 改造・解析

道具を落とす確率のバグ

「洞窟マムルが道具を落とす確率は100%ではない」という指摘をかなり前(5ヶ月前)に頂いたのですが、ようやく検証ができました。
実は、とんでもないバグがあって、道具を落とす確率はモンスターのレベルに関係なく、そのモンスターの種族レベル1の値を見ていました。
従って、マムル、あなぐらマムル、洞窟マムルが道具を落とす確率は全て1/64です。他の種族も確認はしていませんが恐らく同様です。
怪物のステータスリストの、道具の落としやすさレベル2,3の値は全く意味がないということが判明してしまいました。

まあ、確率に関するバグは発見が難しいかも知れません。デバッグチームにも詳細な確率は教えていないかも知れません。
しかし、洞窟マムルのパラメータを設定した人は、フェイの最終問題をクリアしなかったのでしょうか?
フェイの最終問題をクリアしていれば洞窟マムルも何匹か倒しているでしょうし、それなら洞窟マムルが必ずしも道具を落とさないことに気付く筈です。
それとも、レベル毎に値を設定してみたものの、結局没にしてしまったのでしょうか?
[PR]
by oyasen | 2009-10-12 18:03 | 改造・解析

とりあえず報告だけ

キャラのグラフィックデータの展開に成功しました。
圧縮方法は古印体のそれとよく似ていて、圧縮していてもROMのうちかなりの部分をキャラのグラフィックデータが占めているようです。
詳しくはまた後日にでも。
[PR]
by oyasen | 2009-10-03 22:21 | 日記