Wizardry (NES) Memory Map ========================= 使い回しもあるので注意 RAM ($0000-$07FF) ----------------- $10 U8 フレームカウンタ(ただし壁に当たったりすることで0にリセットされる) $11-14 U8[4] 1P 入力バッファ $15-18 U8[4] 2P 入力バッファ $19 U8 スタックポインタ退避用 $1D-$20 U8[4] 方向キー入力記録用?入力処理の消費クロック数に影響 $2E-2F U16 間接アドレッシングのためにしばしばキャラデータアドレスが書き込まれる $3B U8 x座標 $3C U8 y座標 $3D U8 階層 $3E U8 方角 # 0:北, 1:東, 2:南, 3:西 $3F ? ? $40 U16 乱数 $6D U16/U8 打撃ダメージ/キャラメイク時の選択可能職業(bitset) # 打撃ダメージはU16 $84- ? メッセージバッファ? $022A U8[8] 戦闘時のアイテム別装備フラグ $0238-$023B U8[4]? unknown $0249 char[8] キャラメイク時の名前 $0251 U8 キャラメイク時の種族 # 0:HUM, 1:ELF, 2:DWA, 3:GNO, 4:HOB $0252 U8 戦闘/キャラメイク時の職業 # 0:FIG, 1:MAG, 2:PRI, 3:THI, 4:BIS, 5:SAM $0253 U8 戦闘/キャラメイク時のアラインメント # 0:善, 1:中立, 2:悪 $0254 U8 キャラメイク時のSTRENGTH $0255 U8 キャラメイク時のI.Q. $0256 U8 キャラメイク時のPIETY $0257 U8 キャラメイク時のVITALITY $0258 U8 キャラメイク時のAGILITY $0259 U8 キャラメイク時のLUCK $025B U8 キャラメイク時のボーナスポイント $0273-$276 U8[4] 現在階の未解析64Byteデータのうちのどれか4Byte(変化するようだが法則未解析) $027A U8 直前x座標? $027B U8 直前y座標? $027C U8 戦闘時の攻撃者(術者)番号/宝箱開封時の開封者番号 $027D U8 戦闘時の被攻撃者番号 $027E U8 戦闘時の被攻撃者数($027D 以下、この数だけ攻撃される。存在しない分は無視) # PTステータス $027F U8 光源値 # 1歩で1減少。0xFF で無限(LOMILWA の場合) $0280 U8 敵識別フラグ # 非0で識別あり。LATUMAPICを使うと 0xFF になる $0281 S8 永続ACボーナス # 城に戻るまで常にこの値がPT全体のACに加算される。MAPORFICを使うと 0xFE (-2) になる $0282 U8 呪文封じフラグ # 非0で呪文が効果を発揮しない("But nothing happens")。呪文封じエリアに踏み込むと 0xFF になる $028D U8 unknown (呪文関係と思われる) $028E U8 unknown (呪文関係と思われる) $02BB U8 unknown $0500 ItemData 戦闘時、アイテムデータがロードされる $0540-$058F U8[0x50] 玄室エンカウントフラグ? # bit5が立っていると対応する玄室で玄室エンカウント SRAM ($6000-$7FFF) ------------------ $6000 CharaData 訓練所リスト1人目のキャラデータ $6080 U8[0x80] ? # これが20人分存在する($73FF まで) $7400 U8 ボルタック在庫初期化フラグ # 0:未初期化, 1:初期化済 $7401-7465 U8[101] ボルタックの在庫 # 0xFF で無限 # 0xFE の状態でもう1つ売っても 0xFE のまま。 # つまり元々在庫無限のもの以外は無限にならない $7500-$75D2 char[211] 画面下のPTステータス画面表示用バッファ $7870-$79EFあたり char[] キャラステータス画面表示用バッファ $7ABF U8 先制値 # 0:無, 1:PT先制, 2:敵先制 $7AC0 U16 PT内でステータス異常にかかっていない者のLVの合計 $7AC2 U16 ステータス異常にかかっていない敵のLVの合計 $7AC4 U8 PT生存者数(DEAD以上で死亡と判定) $7AC5-$7AC8 U8[4] 各敵グループの生存者数 $7AC9-$7ACC U8[4] 各敵グループのMAGE呪文LV $7ACD-$7AD0 U8[4] 各敵グループのPRIEST呪文LV $7AD1 U8 メイン敵ID $7AD2-$7AD5 U8[4] 各敵グループのモンスターID $7AD6-$7ADB U8[6] 各PTキャラのタイプ別打撃防御1Byte目 $7ADC-$7AE1 U8[6] 各PTキャラのタイプ別打撃防御2Byte目 $7AE2 U8[6] 各PTキャラの命中力 $7B0C-$7B12 U8[6] 各PTキャラのクリティカルフラグ $7B36-$7B3B U8[6] 各PTキャラのヒーリング値 $7B60-$7B65 U8[6] 各PTキャラの攻撃回数 $7B8A-$7B8F U8[6] 各PTキャラの属性抵抗 $7BB4-$7BB9 U8[6] 各PTキャラのステータス $7BBA-$7BDD U8[4][9] 敵のステータス # 存在しない敵は 0xFF # グループ番号順に9Byteずつ。敵を普通に倒すと 0x05 (DEAD) になる。 $7BDE-$7C07 U8[42] 味方/敵の現在HPの下位バイト # 味方(PT並び順)、敵第1グループ、…という順 $7C08-$7C31 U8[42] 味方/敵の現在HPの上位バイト $7C32-$7C5B U8[42] 味方/敵の最大HPの下位バイト $7C5C-$7C85 U8[42] 味方/敵の最大HPの上位バイト $7C86-$7CAF U8[42] 味方/敵のLV # 味方のLVが 0xFF を超えている場合は 0xFF になる $7CB0-$7CD9 U8[42] 戦闘時の行動ID $7CDA-$7D03 U8[42] 戦闘時の行動順位 $7D04 U8[42] 沈黙値 # TODO: 値自体に意味はあるのか? $7D2E-$7D33 U8[6]? unknown $7D34-$7D57 S8[36] 敵のAC $7D58-$7D5D U8[6] 各PTキャラの攻撃対象グループ番号(1-origin) $7D82-$7D87 U8[6] 各PTキャラのダメージダイス個数 $7D88-$7D8D U8[6] 各PTキャラのダメージダイス面数 $7D8E-$7D93 U8[6] 各PTキャラのダメージダイス追加値 $7D94-$7D99 U8[6] 運勢値1 $7D9A-$7D9F U8[6] 運勢値2 $7DA0-$7DA5 U8[6] 運勢値3 $7DA6-$7DAB U8[6] 運勢値4 $7DAC-$7DB1 U8[6] 運勢値5 # 倍打判定にはバグがあるので注意 $7DB2-$7DB7 U8[6] 各PTキャラのタイプ別倍打1Byte目 $7DB8-$7DBD U8[6] 各PTキャラのタイプ別倍打2Byte目 $7DBE-$7DC3 U8[6] 各PTキャラのドレインを受けたかどうかのフラグ(0:受けてない、1:受けた) $7DC4-$7DC9 U8[6] 各PTキャラのレベルの下位バイト $7DCA-$7DCF U8[6] 各PTキャラのレベルの上位バイト $7DD0-$7DD5 S8[6] 各PTキャラのAC $7DD6-$7DDB U8[6] 各PTキャラのPOISON値 $7DDC-$7DE1 U8[6] 各PTキャラのキャラデータアドレスの上位バイト(0x60 + 訓練所内ID) $7DEE U8 エンカウントの種類? # 0:徘徊(廊下), 1:徘徊(室内), 2:玄室 $7DEF U8 PTの人数 $7DF0- ? unknown $7DF6 U8 ALARMフラグ? # B4Fの警報床では変化しないようだ $7DF7 U8 宝箱の罠 # 0:無, 1:毒, 2:ガ, 3:矢, 4:爆, 5:ス, 6:テ, 7:メ, 8:プ, 9:警 $7DF8-$7DFD U8[6] 各PTキャラの宝箱の罠調査結果 $7DFE U8 PTの呪文無効化率?? $7DFF-$7E02 U8[4] 各敵グループの呪文無効化率 $7E03-$7E71 MonsterData 戦闘時、モンスターデータがロードされる $7E72- U8[6]? unknown # $7DDC- のコピー?? $7E78 U8 unknown $7E79-$7E7E U8[6]? unknown $7E7F-$7EA2 U8[36] 敵のグループ内位置([0, 8]) # ステータス異常の者はスキップして考える # ターン終了時に更新されるが、ステータス異常の者については書き込み自体行われないのでゴミが残ることに注意