これ、うれますか? - バグったアイテムの売れる条件

バグったアイテム、高く売れたり、ゼロ円だったり、そもそも売れなかったり。これはどうして?

原理

そもそも売れるの?

わざマシン以外のあるアイテムが「たいせつなもの」かどうかを判定し、個数表示をしたり売れるかどうかを判断するルーチンがあります。
ここで使われる「たいせつなもの」フラグは 03:6AA4 から CEE4 の汎用バッファに 15 byte のビットフィールドを読み込み、それを使います。
したがって、アイテム番号 0x01 - 0x78 (120) までのアイテムが売れるかどうかは不変です。
一方、それ以降の領域は初期化されることなく残っているため、直前の戦闘などでバッファを使っているとよくわからない値が入っていることがあります。
おそらく電源を入れなおすことで初期化されてゼロクリアされ、「たいせつなもの」フラグが0になるため、大概のバグアイテムを売れるようになります。

実際の値段は?

わざマシンを除き、実際のアイテムの値段はマスターボール(01) から順に、01:421C から1つのアイテムにつき 3 byte ずつの列として保存されています。
したがって、421C + 3(n-1) の値がそのままBCDでの値段になっており、それを直接読み込んで使っているためアイテムの値段は不変です。
正規のアイテムを突き抜けた分はその後ろにあるアイテム名テーブルを読み込んでいます。
ただし、BCD 想定のデータに 50 D0 2D とか書いてあるので繰り上がり処理等がしっちゃかめっちゃかになり、書いてあるそのままの値段で扱われるわけではありません。

実験

ペゾ(B5)を調べてみます。181 = 22 * 8 + 5 なので、フラグ的には23バイト目の6bit目になります。
普通に売れる投入直後。普通に売れそうです
256516お値段は 256516円。50 D0 2D がどうしてこうなるかは深追いしていません。
適当につかまえてみたそのあと、適当に戦闘を挟んで一匹捕まえます
売れなくなった 所持数表示が消え、売れなくなりました。
このときのバッファは
F0 01 F0 4F 00 9F 00 C0 F0 3B 00 11 B2 D9 1A 7F
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F FF 01
となっていました。

評価

バグアイテムが売れなくなったらとりあえず電源を入れなおせばよいと思います。


戻る
connecting: riko.2rnd.msmrrneda.net