Wizardry(NES) 解析 - モンスタータイプ

モンスタータイプ、モンスタータイプ別ビットマスクについて。また、これらに 関連するバグについても触れる。

モンスタータイプ

モンスタータイプは以下の16種類(ただし値4, 14, 15に該当するモンスターは存 在しない):

名称
0戦士
1魔術師
2僧侶
3盗賊
4小人・忍者(存在しない)
5巨人
6神話
7
8動物
9獣人
10不死
11悪魔
12昆虫
13魔法生物
14(存在しない)
15(存在しない)

モンスタータイプ別ビットマスク

どのモンスタータイプに対して打撃防御や倍打が有効かを示すために2Byteのビッ トマスクが使われる。形式は「本来は」以下の通り:

bitタイプ
bit15(タイプ15に対応。該当モンスターなし)
bit14(タイプ14に対応。該当モンスターなし)
bit13魔法生物
bit12昆虫
bit11悪魔
bit10不死
bit9獣人
bit8動物
bit7
bit6神話
bit5巨人
bit4小人・忍者(該当モンスターなし)
bit3盗賊
bit2僧侶
bit1魔術師
bit0戦士

なのだが、後述のバグのため、1Byte目と2Byte目が入れ替わり、以下のようにな る:

bitタイプ
bit15
bit14神話
bit13巨人
bit12小人・忍者(該当モンスターなし)
bit11盗賊
bit10僧侶
bit9魔術師
bit8戦士
bit7(タイプ15に対応。該当モンスターなし)
bit6(タイプ14に対応。該当モンスターなし)
bit5魔法生物
bit4昆虫
bit3悪魔
bit2不死
bit1獣人
bit0動物

モンスタータイプ関連のバグ

タイプ別倍打判定のコードにはバグがあり、タイプ別倍打とは全く別のアドレス の値を参照してしまう。また、モンスタータイプ別ビットマスクを処理するためのデー タも間違っており、1Byte目と2Byte目が入れ替わって処理されてしまう。推測だが、 タイプ別倍打のバグに対して誤った修正を加えたために二重のバグを生む結果になっ たのではないかと思われる。

ビットマスクのByteが入れ替わってしまうのは、データ $DC97-$DCA6$DCA7-$DCB6 が逆になっているのが原因 なので、これらのデータを入れ替えれば解決するはず。タイプ別倍打のバグについて は敵への打撃攻撃の項目を参照。


Back