Wizardry(NES) データ構造 ======================== Wiz10進表現 ----------- "\x12\x34\x56" というデータで10進数の 123456 を表す、といった数値表現法がた まに出てくる(EXP, 金など)。 ダイス式 -------- // Size: 3 struct DiceExpr{ U8 個数 U8 面数 U8 追加値 } 乱数範囲 -------- アイテムテーブル、モンスターテーブルで使われる。 // Size: 5 struct RandomRange{ U8 基本値 U8 増分 U8 増分を加える最大回数 U8 最後に加える乱数幅 U8 増分を加える確率 } 詳しくはルーチン $DEE2 を参照。 アイテムデータ -------------- // Size: 0x40 struct ItemData{ U8 不確定名_文字列長 char[16] 不確定名 // 余白は 0x20 で埋められている U8 確定名_文字列長 char[16] 確定名 // 余白は 0x20 で埋められている // -- 0x22 -- U8 種別 // 0x00:武器 // 0x01:鎧 // 0x02:盾 // 0x03:兜 // 0x04:小手 // 0x05:薬/巻物/イベントアイテム // 0x06:その他の装備品 U8 アラインメント // 0x02:中立, 0x04:悪, 0x07:全て U8 呪い // 0x00:呪われていない, 0xFF:呪われている U8 スペシャルパワー // 0x01:STR+1 // 0x11:忍者に転職 // 0x16:最大HP+1 // 0x17:パーティーのHPフル // // SCROLL of PAIN: 0x00 // SCROLL of AGONY: 0x00 // RING of MOVEMENT: 0x00 // RING of DISPELLING: 0x00 // 全てのSTATUE/KEY/RIBBON: 0x00 // その他: 0xFF U8 使用/SP発動時に壊れる確率(256分率) U8 壊れた場合に変化するアイテムID U48 買値 // Wiz10進表現 U8 初期在庫数 // 0xFF:無限 U8 使用時の効果(魔法ID) // 0xFF:使用不可 // -- 0x30 -- U8 装備可能な職業 // 上位bitからNLSBTPMF S8 ヒーリング S8 AC修正値 S8 STR修正値 U8 最低攻撃回数 DiceExpr ダメージダイス U8 クリティカルフラグ // ARMOR of LORDS, SHURIKENのみ 0xFF, 他は全て 0x00 U16 タイプ別打撃防御 // bit15: 竜 // bit14: 神話 // bit13: 巨人 // bit12: 小人・忍者(該当モンスターなし) // bit11: 盗賊 // bit10: 僧侶 // bit9: 魔術師 // bit8: 戦士 // bit7: ?(タイプ15に対応。該当モンスターなし) // bit6: ?(タイプ14に対応。該当モンスターなし) // bit5: 魔法生物 // bit4: 昆虫 // bit3: 悪魔 // bit2: 不死 // bit1: 獣人 // bit0: 動物 U8 属性抵抗 // bit7: ? // bit6: 呪文 // bit5: 石化 // bit4: 吸収 // bit3: 毒 // bit2: 冷気 // bit1: 火 // bit0: 友好 // // WERDNA'S AMULET: 0xFE U16 タイプ別倍打 // 倍打判定にはバグがあるので注意 U8 unknown // 常に 0 U8 unknown // 常に 0 } モンスターデータ ---------------- // Size: 0x6F struct MonsterData{ U8 不確定名単数形_文字列長 char[15] 不確定名単数形 // 余白は 0x20 で埋められている U8 不確定名複数形_文字列長 char[15] 不確定名複数形 // 余白は 0x20 で埋められている U8 確定名単数形_文字列長 char[15] 確定名単数形 // 余白は 0x20 で埋められている U8 確定名複数形_文字列長 char[15] 確定名複数形 // 余白は 0x20 で埋められている // -- 0x40 -- U8 モンスタータイプ // 0x00:戦士, 0x01:魔術師, 0x02:僧侶, 0x03:盗賊, 0x04:小人・忍者(存在しない), // 0x05:巨人, 0x06:神話, 0x07:竜, 0x08:動物, 0x09:獣人, // 0x0A:不死, 0x0B:悪魔, 0x0C:昆虫, 0x0D:魔法生物 U8 unknown // 常に 0 DiceExpr 出現数ダイス DiceExpr HPダイス(ダイス個数=モンスターLVとなる) S8 AC // 最大攻撃回数はCHIMERAの6 U8 攻撃回数 DiceExpr[6] 攻撃ごとのダメージダイス U8 エナジードレインLV U8 ヒーリング U8 アイテムテーブル(徘徊) U8 アイテムテーブル(玄室) // -- 0x60 -- U8 後続モンスターID U8 後続モンスター出現確率(256分率) U8 MAGE呪文LV U8 PRIEST呪文LV U8 unknown // LVL 7 FIGHTERのみ 0x00, 他は全て 0xFF U8 ブレス属性 U8 呪文無効化率(256分率) U8 属性抵抗 U8 弱点/特殊攻撃フラグ // bit7: 常に0 // bit6: 仲間を呼ぶ // bit5: 逃走する // bit4: 弱点:眠 // bit3: 特殊:首 // bit2: 特殊:麻 // bit1: 特殊:毒 // bit0: 特殊:石 U8 unknown // 常に 0 U8 unknown // 常に 0 U8 unknown // 常に 0 U24 EXP // Wiz10進表現 } キャラデータ ------------ // Size: 0x80 struct CharaData{ U8 unknown U8 名前_文字列長 char[8] 名前 // 余白は 0x20 で埋められている U8 種族 // 0:HUMAN, 1:ELF, 2:DWARF, 3:GNOME, 4:HOBBIT U8 職業 // 0:FIG, 1:MAG, 2:PRI, 3:THI, 4:BIS, 5:SAM, 6:LOR, 7:NIN U8 アラインメント // 0:善, 1:中立, 2:悪 U8 STRENGTH U8 I.Q. U8 PIETY // -- 0x10 -- U8 VITALITY U8 AGILITY U8 LUCK U48 GOLD // Wiz10進表現 U48 EXP // Wiz10進表現 U16 現在HP // ビッグエンディアン // -- 0x21 -- U16 最大HP // ビッグエンディアン U16 LV // ビッグエンディアン U8 STATUS // 0:OK, 1:ASLEEP, 2:AFRAID, 3:PARALY, 4:STONED, 5:DEAD, 6:ASHED, 7:LOST S8 年齢 U8 週 // 0x34 で +1 歳 S8 AC U8[7] MAGE呪文現在MP // -- 0x30 -- U8[7] PRIEST呪文現在MP U8[7] MAGE呪文最大MP U8[7] PRIEST呪文最大MP // -- 0x45 -- U8[7] 習得呪文(呪文ID順のビットセット) U8[8] アイテム状態 // bit7: 装備 // bit6: 呪い // bit5: 不確定名 // bit4: // bit3: // bit2: // bit1: // bit0: // -- 0x54 -- U8[8] アイテムID U8 アイテム個数 U8 unknown U8 x座標 U8 y座標 // -- 0x60 -- U8 階層 U8 POISON値 U8[14] unknown U8[16] unknown }