基礎知識
戦闘関係
この項目は、以下ウェブサイト様などを参考にさせていただきました。
ここでは、「ライブ・ア・ライブ」の内部データのどこに何があるのか、つまりデータマップ及び、ゲームプレイ中のメモリマップを紹介する。
上記ウェブサイト様から引用したデータも数多く、先達の皆様に深く感謝する次第である。
筆者のプログラミング知識の不足ゆえに、誤りがある可能性も高いことをご了承いただきたい。
未調査の部分も多く、今後追記するかもしれない。
「ライブ・ア・ライブ」は、容量が「16メガビットロムカセット」のスーパーファミコンソフトである。
1バイトは8ビット(2進数8文字分)なので、16メガビット = 16000000ビット = 2メガバイト = 2000000バイト分のデータで構成されているということになる。
以下では他ページと同じく、16進数の頭には「$」をつけて「$12AB」などと表記し、2進数は頭に「%」をつけて「%0001 0101」のように表記する。2進数はわかりやすさ優先で4桁区切りで間にスペース(空白)を入れる。
このデータがスーパーファミコン本体のメモリ領域に読み込まれてゲームをプレイする。
メモリ領域のアドレスは16進数6桁で表し、上2桁を「バンク」、下4桁を「アドレス」と呼ぶ。
ここでは、
$00:0000
という形で、バンクとアドレスを「:」区切りで表記する。
スーパーファミコンのバンクは$00から$FFまで、その各バンク内に$0000から$FFFFまでアドレスが割り振られている。
1つのアドレスに入るのは、1バイト分のデータである(16進数2文字分、つまり$00~$FFが入る。10進数なら0~255)。
ゲームデータは$00:0000から順に入るのではなく、入る場所が決まっている。
ライブ・ア・ライブだと、
$00~$1Fのアドレス$8000~$FFFF$40~$5Fのアドレス$0000~$FFFFという位置に、ゲームカセット内のデータ16メガビット分が丸ごと入っている。
ゲームカセット内のデータはゲームプレイの元となる基本のデータなので、ゲームプレイの最中、読み取りはしても上書きすることはない。
こういった領域をROM(Read-Only Memory)領域と呼ぶ。
一方で、戦闘のダメージ量計算などに使う、読み取りも書き込みもできる領域がRAM(Random-Access Memory)である。
また、まったく同じデータが入っている(ミラーリング)箇所も多い。
例えばバンク$00~$7Dは、バンク$80~$FDでミラーリングなので、大雑把に言えば、スーパーファミコンのメモリ領域を半分で区切り、前半部を後半部でミラーリングしているようなものである。
なぜ同じデータをミラーリングするのかだが、ゲームプレイの最中、ゲーム内部では各種データの読み込みや書き込みをしつつ様々な計算を行うことになる。
読み込み・書き込みをする時、次に探したいデータの位置が近くにある方が素早くアクセスできる。
ミラーリングにより同じデータを散らし、近い位置のアドレスからより速く読み書きできるようにしている、らしい。
そういう理由から、ゲームプレイ中は頻繁に使われる一部データが更にミラーリングされていることもある。
「ライブ・ア・ライブ」は、スーパーファミコンのメモリの、
$00~$1F(ミラーリング:$80~$1F)のアドレス$8000~$FFFF$40~$5F(ミラーリング:$C0~$DF)のアドレス$0000~$FFFFに、ゲームデータが入っていると述べた通りだが、筆者にわかる範囲でどこに何があるか記す。
画像・音関係については未調査なので、非常に大雑把である。
詳しくはわからないが同じ文字でひたすら埋まっている箇所もあり、おそらくは未使用のアドレス部分なのであろう。
| バンク | 内容 | ||
|---|---|---|---|
$00 | $80 | プログラム | |
$02 | $82 | テキストデータ(システム関連/現代編シナリオ など) | $02:9380~$02:A695 |
$03 | $83 | BGM関連のデータ(音源?) | |
$10 | $90 | テキストデータ(シナリオ関連) | |
$11 | $91 | テキストデータ(シナリオ関連) | |
$16 | $96 | テキストデータ(敵の名前・技名・技説明 など) | |
$40 | $C0 | プログラム(主にマップ関係) | |
$41 | $C1 | プログラム(主に戦闘関係) | |
$42 | $C2 | プログラム(主にメニュー画面関係) | |
$43 | $C3 | プログラム/BGM関連のデータ(楽譜?) | |
$44 | $C4 | BGM関連のデータ(楽譜?) | |
$45 | $C5 | BGM関連のデータ(楽譜?) | |
$46 | $C6 | BGM関連のデータ(楽譜?) | |
$51 | $D1 | テキストデータ(シナリオ関連) | |
$54 | $D4 | 画像データ(タイルマップなど) | |
$55 | $D5 | 味方キャラデータ(詳細) | $D5:00C0~$D5:04CA |
| 敵キャラデータ(詳細) | $D5:04CB~$D5:24CA | ||
| 味方技データ(詳細) | $D5:24CB~$D5:3DB1 | ||
| 敵技データ(詳細) | $D5:3DB2~$D5:56CA | ||
| 行動異常データ(詳細) | $D5:644B~$D5:64CA | ||
| 敵移動データ | $D5:64CB~$D5:71C3 | ||
| アイテムデータ(詳細) | $D5:71C4~$D5:81C3 | ||
$56 | $D6 | 敵パーティデータ(詳細) | $D6:4280~$D6:512F |
| テキストデータ(システム関連) | $D6:AC00~$D6:CFFF | ||
| テキストデータ(技の説明テキスト) | $D6:E000~$D6:EF7F | ||
プログラム関係はバンク$C0~$C3、各種データはバンク$D5~$D6からロードすることが多いようである。つまりミラーリングから読み込みしている。
以下は各種データアドレスページに解説を載せているので参照のこと。
筆者が調べた範囲のみ。
| アドレス | 内容 |
|---|---|
$C0:1A69~$C0:1ADB | マップタイマーのカウントダウン計算 |
$C0:328A~$C0:32AF | マップタイマー初期値読み込み |
$C0:263E~$C0:266B | カウントアップ処理(サモを仲間にする時与えるアイテム用 他もありかも) |
$C0:378F~$C0:37BE | マップでの乱数イベント関連(戦闘中のテレポート飛び先判定も含む) |
$C0:37D8~$C0:3806 | 持ち物一覧を開いて何かのアイテムを選ぶことで進行するイベント |
$C0:47E8~$C0:482C | アイテム取得時に持ち物欄の空欄に該当アイテムを入れ個数を+1する、または既に所持しているなら該当アイテムの個数を+1する処理 |
$C0:4839~$C0:4853 | アイテム使用時に持ち物欄から指定アイテム個数を-1する処理 |
$C0:B900~$C0:B924 | マップ乱数計算 |
$C0:BA16~$C0:BA75 | 16bit×16bit乗算サブルーチン |
$C2:42D9~$C2:43B5 | 指定テキストを$7E:2000~にロードする |
$C2:5383~$C2:53F3 | 入力テキストと$7E:2000~が一致しているか判定 |
$C2:55C7~$C2:55E2 | 文字一覧表に文字を設置 |
| アドレス | 内容 |
|---|---|
$C1:0CF2~$C1:0D5A | ラーニング用 $7E:9200~に使用技を書き込み+使用技判定処理 |
$C1:156D~$C1:1630 | ラーニング用 $7E:9200~に書き込まれた使用技を習得技として記録する処理 |
$C1:166E~$C1:169D | 戦闘終了時 ドロップアイテム判定 |
$C1:17E6~$C1:17E2 | 行動異常発生時 レベル修正 |
$C1:1CF7~$C1:1CA8 | 行動異常発生時 行動順修正 |
$C1:2363~$C1:243D | 戦闘終了時 取得経験値計算 |
$C1:25D7~$C1:2633 | 戦闘開始時 幕末編のNAMEタイプの敵ステータス処理 |
$C1:3546~$C1:35C3 | 戦闘開始時 行動異常 |
$C1:35C7~$C1:35E9 | 戦闘開始時 状態異常(実際のゲームでは未使用) |
$C1:3E18~$C1:3F25 | 戦闘開始時 幕末編のNAMEタイプの敵 名前処理 |
$C1:5095~$C1:50EA | テキストデータから文字画像データ呼び出し |
$C1:6150~$C1:61A4 | 戦闘用乱数計算 |
$C1:77CE~$C1:783A | 単発ダメージ計算 |
$C1:7843~$C1:7851 | 単発ダメージ+乱数ブレ分 |
$C1:90A2~$C1:90C4 | 行動異常継続判定 |
$C1:92D0~$C1:92F8 | 行動異常発生後、BREAKDOWN対象の敵のみ行動異常解除 |
$C1:9D13~$C1:9D86 | Xボタンの「ひとつ前の技」関連処理 |
$C1:CC29~$C1:CC3F | 行動異常発生処理 |
$C1:CD32~$C1:CD53 | 総ダメージ量の回避属性半減処理・999を越えている時999に変える処理 |
$C1:CDF7~$C1:CE08 | 2桁の16進数の値を10進数に解釈し直すサブルーチン |
$C1:D9DA~$C1:DA24 | カウンター行動異常 |
$C1:D6B9~$C1:D725 | 攻撃技のヒット数計算 |
$C1:D726~$C1:D7F4 | 攻撃技の敵ターゲット決定 |
$C1:D870~$C1:D8B1 | 命中判定計算 |
$C1:D9A7~$C1:D9D9 | 敵へダメージ与える前の処理(眠り状態解除~オディオモールなら単発ダメージ量を1に) |
$C1:DB38~$C1:DBF4 | 状態異常 発生判定処理 |
$C1:DC66~$C1:DC99 | 状態異常 依存ステータス判定 |
$C1:DC0A~$C1:DC4A | 武器の追加効果の状態異常処理 |
$C1:DF27~$C1:DF3B | 武器の追加効果の状態異常判定 |
$C1:E94E~$C1:E9FC | 「ひとつ前の技」がない場合は、味方キャラデータの技一覧から、最初の技のIDを取り出して、「ひとつ前の技」に登録 |
$C1:F50E~$C1:F623 | 最終編ランダムエンカウント時の敵パーティ算出 |
$C1:FC0A~$C1:FC3E | 戦闘開始時 敵データのロード&$00:1A??~への書き込み |
$C1:FC78~$C1:FD0F | 戦闘開始時 敵データから$7E:AA??~への書き込み、行動異常・状態異常に初期値設定 |
RAM(Random-Access Memory)領域はバンク$00~$3Fの$0000~$1FFF、バンク$7E(ただしバンク$7E:$0000~$1FFFはバンク$00:$0000~$1FFFのミラーリング)で、先に記した通りにバンク$80~にはバンク$00~がミラーリングされている。
何かしらの計算をする時はだいたい、$00:0000~$00:1FFF(ミラーリング:$7E:0000~$7E:1FFF)の領域を一時的な変数のように扱っている、と思って良い。
解説サイトなどでは、ミラーリングである$7E:????でどのメモリが何の役割かを説明していることが多いことから、ここでもわかりやすさ優先で、ミラーリングのバンク$7Eの値を以下に記す。
※下位バイト・上位バイトについて
アドレス1つに入るデータは1バイト(16進数2文字)だが、中には連続した2つのアドレスを使って、2バイト(16進数4文字)のデータを記録している値もある。
その場合は、下位バイトのアドレスに下2桁、上位バイトのアドレスに上2桁が入っており、上位バイトアドレスの値・下位バイトアドレスの値を繋げて2バイト分のデータとする。
戦闘時の共通部分含む。
| アドレス | 内容 |
|---|---|
$7E:0000 | コントローラーのボタンを押した判定(合計値が入る) Rボタン:$10 / Lボタン:$20 / Xボタン:$40 / Aボタン:$80 |
$7E:0001 | コントローラーのボタンを押した判定(合計値が入る) 右:$01 / 左:$02 / 下:$04 / 上:$08 / スタートボタン:$10 / セレクトボタン:$20 / Yボタン:$40 / Bボタン:$80 |
$7E:000C | マップ乱数計算用の値(戦闘中一時停止) |
$7E:000D | マップ乱数(戦闘中一時停止) |
$7E:002D | ランダムエンカウント時 増加値(下4ビット) |
$7E:0036 | マップ乱数($7E:000Dと同値) |
$7E:0070 | 通常は$00、デモ画面は$01以上(変動) |
$7E:0107 | ランダムエンカウント時 危険度 |
$7E:010B~$7E:01FF | (※スタック領域。PHXやPHYなどのニーモニックで値を一時的に記録するアドレス。詳細:65C816のスタック) |
$7E:011F | ランダムエンカウント時 エリア危険度 |
$7E:013D | アイテム取得や使用時、該当アイテムのアイテムIDが入る |
$7E:0160 | 場面チェンジのエフェクト $00=黒にフェードアウト/$02=白にフェードアウト/$04=モザイク/$05=丸囲み/$06=三角囲み(戦闘突入時) |
$7E:01A0~$7E:01A3 | 味方キャラ1~4の移動時の状態? |
$7E:01A4~$7E:01A8 | 味方キャラ1~4の移動時の状態? |
$7E:01A9 | マップ上移動速度 $10:通常歩き $20:ダッシュ $40:おぼろ丸のダッシュ |
$7E:01AE | $7E:01A9と同値? |
$7E:01B0 | ポゴが匂いを嗅いで、匂いに触れた時に出ている吹き出しの中身 |
$7E:01BB | ランダムエンカウント時 危険度合計値 |
$7E:01C0~ | セリフ関係(テキスト呼び出し、吹き出し形状など) |
$7E:01C1 | 吹き出しの位置と形状(吹き出しについている▽のマークの位置も) |
$7E:01C6~$7E:01C7 | セリフテキスト読み込み位置指定 |
$7E:0200 | 通常$00 フィールドでプレイヤーが操作できない時$01?(セリフ中や、敵シンボルと接触した時) |
$7E:020A | コントローラーのボタンを押した判定(合計値が入る) 右:$01 / 左:$02 / 下:$04 / 上:$08 / スタートボタン:$10 / セレクトボタン:$20 / Yボタン:$40 / Bボタン:$80 |
$7E:0565 | 現代編 対戦相手画面 (通常$FF、対戦相手を選ぶと値が入る。ナムキャット$00、エイジャ$01、トゥーラ・ハン$02、森部$03、モーガン$04、イヤウケア$05、オディ・オブライト$07 ※ $7E:0566は通常$FF、それ以外$00 |
$7E:06B9 | 現代編 1番目に倒した対戦相手ID(1戦目終わるまでは$FF) |
$7E:06BA | 現代編 2番目に倒した対戦相手ID(2戦目終わるまでは$FF) |
$7E:06BB | 現代編 3番目に倒した対戦相手ID(3戦目終わるまでは$FF) |
$7E:06BC | 現代編 4番目に倒した対戦相手ID(4戦目終わるまでは$FF) |
$7E:06BD | 現代編 5番目に倒した対戦相手ID(5戦目終わるまでは$FF) |
$7E:06BE | 現代編 6番目に倒した対戦相手ID(6戦目終わるまでは$FF) |
$7E:06BF | 現代編 倒した対戦相手の人数累積($00~$06) |
$7E:0A00 | プレイ中のシナリオ 対応表 |
$7E:0A01 | シナリオのクリア状況 (8ビットが各シナリオ対応。上の桁から順に中世、原始、SF、功夫、西部、現代、近未来、幕末) |
$7E:0A02~03 | 現在居るエリアのID (マップに対応した数値、シナリオ毎に異なる) |
$7E:0A10 | 最終編主人公 対応表 |
$7E:0A11 | 2人目のシナリオ別キャラデータID |
$7E:0A12 | 3人目のシナリオ別キャラデータID |
$7E:0A13 | 4人目のシナリオ別キャラデータID |
$7E:0A14 | パーティの人数($00:1人、$01:2人、$02:3人、$03:4人) |
$7E:0A15 | 心山拳老師&師範が誰か(功夫編・最終編のみ) $00=老師 $01=ユン $02=レイ $03=サモ |
$7E:0A20 | キャラ1 移動中のX座標のマスとマスの間の位置? |
$7E:0A21 | キャラ1 マップのX座標(マス目) |
$7E:0A22 | キャラ2 移動中のX座標のマスとマスの間の位置? |
$7E:0A23 | キャラ2 マップのX座標(マス目) |
$7E:0A24 | キャラ3 移動中のX座標のマスとマスの間の位置? |
$7E:0A25 | キャラ3 マップのX座標(マス目) |
$7E:0A26 | キャラ4 移動中のX座標のマスとマスの間の位置? |
$7E:0A27 | キャラ4 マップのX座標(マス目) |
$7E:0A28 | キャラ1 移動中のY座標のマスとマスの間の位置? |
$7E:0A29 | キャラ1 マップのY座標(マス目) |
$7E:0A2A | キャラ2 移動中のY座標マスとマスの間の位置? |
$7E:0A2B | キャラ2 マップのY座標(マス目) |
$7E:0A2C | キャラ3 移動中のY座標マスとマスの間の位置? |
$7E:0A2D | キャラ3 マップのY座標(マス目) |
$7E:0A2E | キャラ4 移動中のY座標マスとマスの間の位置? |
$7E:0A2F | キャラ4 マップのY座標(マス目) |
$7E:0A34 | キャラ1 向き 下=$00/上=$01/左=$02/右=$03 |
$7E:0A35 | キャラ2 向き 下=$00/上=$01/左=$02/右=$03 |
$7E:0A36 | キャラ3 向き 下=$00/上=$01/左=$02/右=$03 |
$7E:0A37 | キャラ4 向き 下=$00/上=$01/左=$02/右=$03 |
$7E:0A38 | キャラ1 出入り口(0,0)との相対距離の移動中のX座標のマスとマスの間の位置? |
$7E:0A39 | キャラ1 出入り口(0,0)との相対距離のX座標(マス目) 左方向は$FF~、右方向は$01~ |
$7E:0A3A | キャラ2 出入り口(0,0)との相対距離の移動中のX座標のマスとマスの間の位置? |
$7E:0A3B | キャラ2 出入り口(0,0)との相対距離のX座標(マス目) |
$7E:0A3C | キャラ3 出入り口(0,0)との相対距離の移動中のX座標のマスとマスの間の位置? |
$7E:0A3D | キャラ3 出入り口(0,0)との相対距離のX座標(マス目) |
$7E:0A3E | キャラ4 出入り口(0,0)との相対距離の移動中のX座標のマスとマスの間の位置? |
$7E:0A3F | キャラ4 出入り口(0,0)との相対距離のX座標(マス目) |
$7E:0A40 | キャラ1 出入り口(0,0)との相対距離の移動中のY座標のマスとマスの間の位置? |
$7E:0A41 | キャラ1 出入り口(0,0)との相対距離のY座標(マス目) 上方向は$FF~、下方向は$01~ |
$7E:0A42 | キャラ2 出入り口(0,0)との相対距離の移動中のY座標マスとマスの間の位置? |
$7E:0A43 | キャラ2 出入り口(0,0)との相対距離のY座標(マス目) |
$7E:0A44 | キャラ3 出入り口(0,0)との相対距離の移動中のY座標マスとマスの間の位置? |
$7E:0A45 | キャラ3 出入り口(0,0)との相対距離のY座標(マス目) |
$7E:0A46 | キャラ4 出入り口(0,0)との相対距離の移動中のY座標マスとマスの間の位置? |
$7E:0A47 | キャラ4 出入り口(0,0)との相対距離のY座標(マス目) |
$7E:0A53 | 1人目のキャラの向き? 下=$00/上=$01/左=$02/右=$03 |
$7E:0A54 | 1人目のキャラの座標?状態? |
$7E:0A55 | 1人目のキャラに対する2人目のキャラの相対距離?(移動中$00 ダッシュ$04 停止$80 向き変えで値変わる) |
$7E:0A56 | 1人目のキャラに対する3人目のキャラの相対距離? |
$7E:0A57 | 1人目のキャラに対する4人目のキャラの相対距離? |
$7E:0A60 | フィールド上BGM サウンドルームBGMとは異なる BGM一覧表 |
$7E:0A61 | BGMの再生ピッチ?(通常$FF、「いいお天気でしょっ!」の夜バージョンは$60) |
$7E:0AB0 | 最終編だと$01 他シナリオは$00 |
$7E:0AB1 | 最終編だと$00 他シナリオは$01 |
$7E:0AB4~$7E:0AB5 | セーブ回数 下位バイト/上位バイト 999回($03E7)を越えると0に戻る |
$7E:0AC0~$7E:0AC1 | マップタイマー00~15のON・OFF C0に下位バイト、C1に上位バイト |
$7E:0AC2~$7E:0AC3 | マップタイマー00~15関連フラグ値 C2に下位バイト、C3に上位バイト |
$7E:0AC5 | 原始編・近未来編のシンボルエンカウントのON/OFF? |
$7E:0ACA~$7E:0ACB | ポゴがパーティにいる時のみ、匂いを嗅いだ時の漂う匂いの表示タイマー。 匂いを嗅ぐと、 $7E:0ACAに$01、$7E:0ACBに$68が入り、360フレーム(6秒)のカウントを行う |
$7E:0ACE | 主人公キャラID(最終編は$08で固定)対応表 |
$7E:0AE0~$7E:0AE1 | マップタイマー00残り時間 下位バイト/上位バイト |
$7E:0AE2~$7E:0AE3 | マップタイマー01残り時間 下位バイト/上位バイト |
$7E:0AE4~$7E:0AE5 | マップタイマー02残り時間 下位バイト/上位バイト |
$7E:0AE6~$7E:0AE7 | マップタイマー03残り時間 下位バイト/上位バイト |
$7E:0AE8~$7E:0AE9 | マップタイマー04残り時間 下位バイト/上位バイト |
$7E:0AEA~$7E:0AEB | マップタイマー05残り時間 下位バイト/上位バイト |
$7E:0AEC~$7E:0AED | マップタイマー06残り時間 下位バイト/上位バイト |
$7E:0AEE~$7E:0AEF | マップタイマー07残り時間 下位バイト/上位バイト |
$7E:0AF0~$7E:0AF1 | マップタイマー08残り時間 下位バイト/上位バイト |
$7E:0AF2~$7E:0AF3 | マップタイマー09残り時間 下位バイト/上位バイト |
$7E:0AF4~$7E:0AF5 | マップタイマー10残り時間 下位バイト/上位バイト |
$7E:0AF6~$7E:0AF7 | マップタイマー11残り時間 下位バイト/上位バイト |
$7E:0AF8~$7E:0AF9 | マップタイマー12残り時間 下位バイト/上位バイト |
$7E:0AFA~$7E:0AFB | マップタイマー13残り時間 下位バイト/上位バイト |
$7E:0AFC~$7E:0AFD | マップタイマー14残り時間 下位バイト/上位バイト |
$7E:0AFE~$7E:0AFF | マップタイマー15残り時間 下位バイト/上位バイト |
$7E:0B01~$7E:0BFF | アイテム欄に入っているアイテムID(中世編&最終編) |
$7E:0B28~$7E:0B4C | アイテム欄に入っているアイテムID(原始編) |
$7E:0B4D~$7E:0B66 | アイテム欄に入っているアイテムID(西部編) |
$7E:0B67~$7E:0B88 | アイテム欄に入っているアイテムID(幕末編) |
$7E:0B89~$7E:0BBB | アイテム欄に入っているアイテムID(近未来編) |
$7E:0BBD~$7E:0BE0 | アイテム欄に入っているアイテムID(功夫編) |
$7E:0BF5~$7E:0CF9 | アイテム欄に入っているアイテムID(SF編) |
$7E:0C01~$7E:0CFF | アイテム欄に入っているアイテムIDの各個数(中世編&最終編) |
$7E:0C28~$7E:0C4C | アイテム欄に入っているアイテムIDの各個数(原始編) |
$7E:0C4D~$7E:0C66 | アイテム欄に入っているアイテムIDの各個数(西部編) |
$7E:0C67~$7E:0C88 | アイテム欄に入っているアイテムIDの各個数(幕末編) |
$7E:0C89~$7E:0CBB | アイテム欄に入っているアイテムIDの各個数(近未来編) |
$7E:0CBD~$7E:0CE0 | アイテム欄に入っているアイテムIDの各個数(功夫編) |
$7E:0CF5~$7E:0DF9 | アイテム欄に入っているアイテムIDの各個数(SF編) |
$7E:0D00~$7E:0FBF | 【戦闘・マップ共通】シナリオ別キャラデータ(詳細後述) |
$7E:0F92 | 幕末編における忍者(2人組)の遭遇数$00~$06 (戦闘開始直後に増加、「逃げる」コマンド選択時に増えた分だけ減少。 $7E:$0F9Fまで同じ) |
$7E:0F93 | 虚無僧の遭遇数$00~$03 |
$7E:0F94 | 奴の遭遇数$00~$0A |
$7E:0F95 | 浪人の遭遇数$00~$0A |
$7E:0F96 | 藩士の遭遇数$00~$07 |
$7E:0F97 | 強藩士の遭遇数$00~$0A |
$7E:0F98 | 外人の遭遇数$00~$02 |
$7E:0F99 | 商人の遭遇数$00~$04 |
$7E:0F9A | 家老の遭遇数$00~$05 |
$7E:0F9B | 忍者(1人)の遭遇数$00~$08 |
$7E:0F9C | くの一の遭遇数$00~$04 |
$7E:0F9D | 腰元の遭遇数$00~$09 |
$7E:0F9F | 忍者(4人組)の遭遇数$00~$08 |
$7E:10E5 | 最終編の戦闘時のBGM |
$7E:11F0~ | イベントカウンター用メモリ(シナリオによりカウントする値は変わる) |
$7E:1200~$7E:12FF | 【戦闘・マップ共通】シナリオ進行フラグ(詳細はシナリオ進行フラグページ参照) |
$7E:1300~$7E:1301 | 心山拳伝承者 下位バイト/上位バイト $0001ならユン、$0100ならレイ、$0000だとサモ |
$7E:1303 | 初期値$00、西部編最後のマッドドッグとの戦闘で逃げると$01 |
$7E:1304 | 初期値$00、幕末編最後の選択肢で「面白い」を選ぶと$01 |
$7E:1D05 | 現在のBGM BGM一覧表 |
$7E:1DE2 | 現在のBGM BGM一覧表 |
$7E:2A00~$7E:2A3F | メニュー→装備で、該当キャラのシナリオ別キャラデータがそのまま入る($23のみ例外、異なる値が入る) |
$7E:2F3C | 文字入力画面 ページ数($00~、シナリオなどにより最大ページ数は変動) |
$7E:2F40 | 文字入力画面 X軸のカーソル位置 左上座標を(0,0)とする。横方向は11文字。$00~$0A |
$7E:2F42 | 文字入力画面 Y軸のカーソル位置 左上座標を(0,0)とする。縦方向は9文字。$00~$08 |
$7E:2F44 | 文字入力画面 入力した文字数(1文字で+2) $00~$0C |
$7E:2F46~$7E:2F47 | 文字入力画面 入力欄1文字目(2バイト) |
$7E:2F48~$7E:2F49 | 文字入力画面 入力欄2文字目(2バイト) |
$7E:2F4A~$7E:2F4b | 文字入力画面 入力欄3文字目(2バイト) |
$7E:2F4C~$7E:2F4d | 文字入力画面 入力欄4文字目(2バイト) |
$7E:2F4E~$7E:2F4f | 文字入力画面 入力欄5文字目(2バイト) |
$7E:2F50~$7E:2F51 | 文字入力画面 入力欄6文字目(2バイト) |
$7E:8A00~$7E:8AC6 | 文字入力画面 文字コード(1文字2バイト、左上から右下へ、横11文字分、縦9文字分) |
$7E:8E00~ | 各シナリオ専用データ |
| シナリオ | ID | キャラクター |
|---|---|---|
| 中世 | $00 | オルステッド |
| 原始 | $01 | ポゴ |
| SF | $02 | キューブ |
| 功夫 | $03 | 心山拳老師 |
| 西部 | $04 | サンダウン |
| 現代 | $05 | 高原日勝 |
| 近未来 | $06 | アキラ |
| 幕末 | $07 | おぼろ丸 |
| 最終 | $08 | - |
タイトルはサウンドトラックに準拠。
(「いいお天気でしょっ!」の夜バージョンなど、一部楽曲のスローテンポな曲は原曲の再生ピッチを変更して流しているらしい)
| ID | タイトル |
|---|---|
| $00 | 無音(BGMなし) |
| $01 | 魔王への叙曲 |
| $02 | 凛然たる戦い |
| $03 | 忍音 |
| $04 | WANDERER |
| $05 | 殺陣! |
| $06 | THE WILDS |
| $07 | UNDER THE FAKE |
| $08 | UNSEEN SYNDROME |
| $09 | NATIVE LIFE |
| $0A | WAIT FOR TRUTH |
| $0B | PSYCHOで夜露死苦!! |
| $0C | 猛者達… |
| $0D | 鳥児在天空飛翔 魚児在河里游泳 |
| $0E | 在中国的戦闘 |
| $0F | 効果音 |
| $10 | KNOCK YOU DOWN! |
| $11 | 効果音(馬が走る音) |
| $12 | 効果音(SF編・宇宙船内) |
| $13 | 効果音(近未来編・港) |
| $14 | 老拳師下深山 |
| $15 | いいお天気でしょっ! |
| $16 | KISS OF JEALOUSY |
| $17 | 密命 |
| $18 | GO!GO!ブリキ大王!! |
| $19 | 届かぬ翼 |
| $1A | 魔王山を往く |
| $1B | 魔王オディオ |
| $1C | PURE ODIO |
| $1D | 効果音(アキラ レベルアップ音) |
| $1E | 効果音(木魚のポクポク音) |
| $1F | 効果音(風の吹く音) |
| $20 | 効果音(キューブの機械音) |
| $21 | 効果音(オルステッド レベルアップ音) |
| $22 | 効果音(おぼろ丸 レベルアップ音) |
| $23 | 効果音(サモ・ユン レベルアップ音・アチョーボイス) |
| $24 | 効果音(レイ レベルアップ音・ボイス) |
| $25 | SELECT・A・LIVE |
| $26 | 効果音(ポゴ レベルアップ音・ボイス) |
| $27 | 効果音(ゴリのボイス/馬のいななき 兼用) |
| $28 | 効果音(高原日勝 レベルアップ音・ボイス) |
| $29 | 効果音(サンダウン レベルアップ音・銃声) |
| $2A | 効果音(近未来編・木琴) |
| $2B | MEGALOMANIA |
| $2C | 効果音(強風の吹く音) |
| $2D | 効果音(SF編/近未来編・パソコン効果音) |
| $2E | 効果音(近未来編・筑波研究所最奥) |
| $2F | 効果音(功夫編 銅鑼) |
| $30 | 効果音(西部編 鐘) |
| $31 | 効果音(幕末編 アイテム入手時) |
| $32 | 効果音(原始編 ウホウホ) |
| $33 | 最強-VICTORY ROAD- |
| $34 | LIVE・A・LIVE |
| $35 | CRY・A・LIVE |
| $36 | WARM・A・LIVE |
| $37 | 絶望の都 |
| $38 | Sancho・de・Los・Panchoz |
| $39 | 効果音(マラカス) |
| $3A | 効果音(各シナリオ開始時の低い音) |
| $3B | 原始編・宴(リメイク版の「生贄の宴」) |
| $3C | Silent Labyrinth |
| $3D | ARMAGEDDON |
| $3E | CAPTAIN SQUARE |
| $3F | 星屑のキャプテン |
| $40 | 効果音(近未来編・オルガン むすんでひらいて) |
| $41 | 効果音(近未来編・オルガン 猫ふんじゃった) |
| $42 | 効果音(近未来編・オルガン トッカータとフーガ) |
| $43 | 効果音(近未来編・オルガン チョコボのテーマ) |
| $44 | Live over Again |
| $45 | Live for Live |
| $46 | 効果音(崩壊) |
| $47 | 効果音(SF編・警告音) |
| $48 | 効果音(功夫編・夜 虫の音) |
| $49 | CAPTAIN SQUARE |
| $4A | 効果音(ゲーム開始時「SQUARE SOFT」ボイス) |
| $4B | ILLUSION… |
| $4C | Versus! |
| $4D | 原始編・宴 ボイスのみ |
| $4E以降は無音 | |
マップ・戦闘どちらでも共通して値が読み書きされるあたりのアドレス。
他にもあるが、重要そうなあたりを。
シナリオ進行フラグは量が膨大になるため、ページを分けた。
$7E:0D00~$7E:0FBFに入る、各シナリオのキャラ用データ。
1キャラあたり64バイトの容量がある。
戦闘中もそれ以外も同じアドレスに入っている。
主人公+仲間3キャラのIDは順に$7E:0A10, $7E:0A11, $7E:0A12, $7E:0A13に入る(加入順?)
最終編以外は、主人公キャラのID・$08・$09・$0Aという順で上のアドレスに入ることになるが、最終編は各シナリオの主人公たちがパーティに加わった時点で2人目以降の値が更新されていく。
| ID | アドレス | 原始 | SF | 功夫 | 西部 | 現代 | 近未来 | 幕末 | 中世 | 最終 |
|---|---|---|---|---|---|---|---|---|---|---|
| $00 | $7E:0D00~ | - | - | - | - | - | - | - | オルステッド | オルステッド |
| $01 | $7E:0D40~ | ポゴ | - | - | - | - | - | - | - | ポゴ |
| $02 | $7E:0D80~ | - | キャプテン スクウェア /キューブ | - | - | - | - | - | - | キューブ |
| $03 | $7E:0DC0~ | - | - | 心山拳老師 | - | - | - | - | - | 心山拳師範 |
| $04 | $7E:0E00~ | - | - | - | サンダウン | - | - | - | - | サンダウン |
| $05 | $7E:0E40~ | - | - | - | - | 高原 日勝 | - | - | - | 高原 日勝 |
| $06 | $7E:0E80~ | - | - | - | - | - | アキラ | - | - | アキラ |
| $07 | $7E:0EC0~ | - | - | - | - | - | - | おぼろ丸 | - | おぼろ丸 |
| $08 | $7E:0F00~ | ゴリ | - | ユン・ジョウ | マッドドッグ | - | タロイモ | とらわれの男 | ストレイボウ | - |
| $09 | $7E:0F40~ | べる | - | レイ・クウゴ | - | - | 無法松 | カラクリ丸 | ウラヌス | - |
| $0A | $7E:0F80~ | ざき | - | サモ・ハッカ | - | - | ブリキ大王 | - | ハッシュ | ブリキ大王 |
便宜上、64バイト分のデータに$00~$3Fと番号を付けた。
空欄は筆者には不明な部分。
| 数値 | 内容 |
|---|---|
$00 | キャラID(ブリキ大王は$40) |
$01 | |
$02 | 右装備の追加効果の値(=アイテムデータ15、戦闘開始時に更新される) |
$03 | |
$04 | $04を下位バイト、$05を上位バイトとした4桁の値+$D50000に、味方キャラデータがそっくり入っている |
$05 | |
$06 | レベル |
$07 | |
$08 | 現在HP(下位バイト) |
$09 | 現在HP(上位バイト) |
$0A | 最大HP(下位バイト) |
$0B | 最大HP(上位バイト) |
$0C | 前に出した技 |
$0D | 覚えた技(下位バイト)技00~07を2進数で表す |
$0E | 覚えた技(上位バイト)技08~15を2進数で表す |
$0F | |
$10 | 力(力+装備上昇分) |
$11 | 力 |
$12 | 力(装備上昇分) |
$13 | 速(速+装備上昇分) |
$14 | 速 |
$15 | 速(装備上昇分) |
$16 | 体(体+装備上昇分) |
$17 | 体 |
$18 | 体(装備上昇分) |
$19 | 知(知+装備上昇分) |
$1A | 知 |
$1B | 知(装備上昇分) |
$1C | 側面補正 |
$1D | 背面補正 |
$1E | 経験値 |
$1F | |
$20 | |
$21 | 回避属性(下位バイト) |
$22 | 回避属性(上位バイト) |
$23 | |
$24 | 頭装備 |
$25 | 右装備 |
$26 | 左装備 |
$27 | 体装備 |
$28 | 足装備 |
$29 | アクセサリー1 |
$2A | アクセサリー2 |
$2B | アクセサリー3 |
$2C | アクセサリー4 |
$2D | アクセサリー5 |
$2E | |
$2F | 防御の値(=装備の防御の値合計値) |
$30 | 無効状態異常 |
$31 | |
$32 | |
$33 | |
$34 | 名前1文字目 |
$35 | 名前2文字目 |
$36 | 名前3文字目 |
$37 | 名前4文字目 |
$38 | 名前5文字目 |
$39 | 名前6文字目 |
$3A | 名前7文字目 |
$3B | 名前8文字目 |
$3C | 名前9文字目 |
$3D | 名前10文字目 |
$3E | 名前11文字目 |
$3F | 名前12文字目 |
上のキャラクターの名前にも関係するが、本作の文字コードを説明する。
1文字あたり、ひらがな・カタカナ・アルファベット・記号は1バイト、漢字は2バイトのデータを使う。
1バイトの場合は上表に対応した値をそのまま使うが、漢字は上表のように上位バイトに$1D・$1E・$1F、下位バイトに$00~$FFの数値を入れて、$1D??, $1E??, $1F??とする。
シナリオ別キャラデータの名前1文字目~名前12文字目の部分は、漢字だとアドレスを2バイト使うため、漢字のみだと最大6文字になる。
また、文字コードはセリフなどのテキスト表示にも使うため、中には改行用コード($01)や、本来2文字分の「‥‥」を1バイト分のデータ「$07」としていたりもする。
例:
「オルステッド」だと、$7E:0D34~$7E:0D3Fの12バイトに入っているデータは、
| 数値 | $65 | $89 | $6D | $73 | $91 | $A5 | $00 | $00 | $00 | $00 | $00 | $00 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 対応文字 | オ | ル | ス | テ | ッ | ド | - | - | - | - | - | - |
「高原 日勝」だと、$7E:0E74~$7E:E73Fの12バイトに入っているデータは、
| 数値 | $1D | $E1 | $1D | $BC | $20 | $1F | $3A | $1E | $55 | $00 | $00 | $00 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 対応文字 | 高 | 原 | (空白) | 日 | 勝 | - | - | - | ||||
雑に作ったがJavaScriptでデコード・エンコードできるようにした(エンコードはあまりあてにできない)。不具合がある可能性大。
戦闘中のアドレスと内容について。
| アドレス | 内容 |
|---|---|
$7E:0338 | 戦闘用乱数4(新たな乱数を計算するための値) |
$7E:0339 | 戦闘用乱数3(新たな乱数を計算するための値) |
$7E:033A | 戦闘用乱数2(新たな乱数を計算するための値) |
$7E:033B | 戦闘用乱数1(現在の乱数) |
$7E:0344 | コントローラーのボタンを押した判定(合計値が入る) Rボタン:$10 / Lボタン:$20 / Xボタン:$40 / Aボタン:$80 |
$7E:0345 | コントローラーのボタンを押した判定(合計値が入る) 右:$01 / 左:$02 / 下:$04 / 上:$08 / スタートボタン:$10 / セレクトボタン:$20 / Yボタン:$40 / Bボタン:$80 |
$7E:034C | $7E:0344内ボタンの、何かを操作した時の押したボタンを記録 |
$7E:034D | $7E:0345内ボタンの、何かを操作した時の押したボタンを記録 |
$7E:0355 | 敵パーティレベル |
$7E:0356 | 操作キャラがブリキ大王かどうか(ブリキ大王操作時は$01、それ以外は$00) |
$7E:0358 | 上位バイトはアイテムドロップ率計算用数値、下位バイトは敵の総数 |
$7E:03AE | 行動ポイント(下位バイト) |
$7E:03AF | 行動ポイント(上位バイト) |
$7E:04C8~$7E:04FF | 戦闘フィールドマスの状態(後述) |
$7E:9009 | 技使用時 技データ13 上4ビット:周囲攻撃2、反撃専用4、回復8/下4ビット:技の属性 |
$7E:900A | 技使用時 技データ22 上4ビット:ダメージフィールド/下4ビット:上4ビットが8以上の時、行動異常の値 |
$7E:900B | 技使用時 技データ10 上8ビット-下2ビット:LV差係数/下2ビット:敵依存ステータス・防御力依存係数 |
$7E:900C | 技使用時 使用者のレベル(現在値) |
$7E:9200~ | 現代編・幕末編 敵が使った技(命中時)のIDが順に入る。$7E:9200の初期値は$00。(ラーニング判定用。 $7E:9200から順に、敵が技を使う度に、$7E:9200~から$00が書き込まれたアドレスの値をチェックして、被っていないのなら敵の使用技ID+次のアドレスに$00を書き込む) |
$7E:A0?? | 戦闘中、各技特有の一時的な値の記録アドレス |
$7E:A010~$7E:A011 | 現代編ワタナベイベント判定用の計算値(「カミツキ(青)」使用時のみ0以外が入る) |
$7E:A01A | サモの「ほいこーろー」のSTEP数が蓄積される |
$7E:A01D | 現代編ワタナベイベントのエイジャの向き判定 左上向きは$79、それ以外は$38 |
$7E:FEF0 | 戦闘中タイマー(下位バイト) |
$7E:FEF1 | 戦闘中タイマー(上位バイト) |
戦闘中タイマーは戦闘用乱数の初期値計算と、キャラのモーションやエフェクト表示などのタイミングなどを合わせるための時間調整に使われている、と思われる。
$7E:04C8~$7E:04FEの戦闘フィールドについて戦闘フィールドは7×7マスで構成されているが、各マスに対応したアドレスは以下の通り。
$7E:04C??の??の値部分のみ記している。
各アドレスに、現在居るキャラクターと、ダメージフィールド状態が記録される。
| C8 | C9 | CA | CB | CC | CD | CE | CF |
| D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 |
| D8 | D9 | DA | DB | DC | DD | DE | DF |
| E0 | E1 | E2 | E3 | E4 | E5 | E6 | E7 |
| E8 | E9 | EA | EB | EC | ED | EE | EF |
| F0 | F1 | F2 | F3 | F4 | F5 | F6 | F7 |
| F8 | F9 | FA | FB | FC | FD | FE | FF |
一番右の灰色背景部分は実際には戦闘フィールドではないため、$00が入っている。
プログラミング上、7という数字はキリが悪いので、横8×縦7でアドレスを設定しているようである。
各アドレスに入る数値は、何もなければ$00、それ以外はキャラクターの数値+ダメージフィールド状態の合計値になる。
敵が複数マスにまたがっている場合は該当マスに同じ数値が入る。
| 数値 | 内容 |
|---|---|
$01 | 味方キャラ1 |
$02 | 味方キャラ2 |
$03 | 味方キャラ3 |
$04 | 味方キャラ4 |
$11 | 敵キャラ1 |
$12 | 敵キャラ2 |
$13 | 敵キャラ3 |
$14 | 敵キャラ4 |
$15 | 敵キャラ5 |
$16 | 敵キャラ6 |
$17 | 敵キャラ7 |
$18 | 敵キャラ8 |
$19 | 敵キャラ9 |
$1A | 敵キャラA |
$1B | 敵キャラB |
$1C | 敵キャラC |
$1D | 敵キャラD |
$1E | 敵キャラE |
$80 | 水フィールド |
$A0 | 毒フィールド |
$C0 | 火炎フィールド |
$E0 | 電撃フィールド |
戦闘時に読み書きされるアドレス。
最大4キャラ分のデータ領域。各64バイト。
| 味方キャラ番号 | アドレス |
|---|---|
| 1 | $7E:1C00~$7E:1C3F |
| 2 | $7E:1C40~$7E:1C7F |
| 3 | $7E:1C80~$7E:1CBF |
| 4 | $7E:1CC0~$7E:1CFF |
各キャラに入る64バイト分のデータは以下の通り。
便宜上、64バイト分のデータに$00~$3Fと番号を付けた。
空欄は筆者には不明な部分。
| 数値 | 内容 |
|---|---|
$00 | 味方キャラID |
$01 | 戦闘状態($00:戦闘離脱 $40:敵操作状態 $FF:通常) |
$02 | |
$03 | シナリオ別キャラデータ開始アドレス(下位バイト) |
$04 | シナリオ別キャラデータ開始アドレス(上位バイト) |
$05 | 経験値 |
$06 | タメ時間ありの技発動までの時間 |
$07 | 実行しようとしている技のタメ時間 |
$08 | |
$09 | |
$0A | |
$0B | |
$0C | |
$0D | |
$0E | |
$0F | |
$10 | キャラの位置のX軸(ピクセル単位・後述) |
$11 | |
$12 | キャラの位置のY軸(ピクセル単位・後述) |
$13 | |
$14 | ひとつ前の技(初期値$00の時にXボタンで前の技を選ぶと初期技を選択) |
$15 | |
$16 | |
$17 | |
$18 | キャラ位置のマス目のX座標(左から$00~$06) |
$19 | キャラ位置のマス目のY座標(上から$00~$06) |
$1A | 戦闘開始後は$18と同値? |
$1B | 戦闘開始後は$19と同値? |
$1C | |
$1D | 向き(右下00/左下01/左上03/右上04) |
$1E | |
$1F | |
$20 | 戦闘中に経験値が増える行動をしたかのフラグ。行動なし:$00 行動あり:$80 |
$21 | |
$22 | |
$23 | |
$24 | |
$25 | |
$26 | |
$27 | |
$28 | |
$29 | |
$2A | |
$2B | |
$2C | |
$2D | |
$2E | |
$2F | |
$30 | 力(通常値) |
$31 | 速(通常値) |
$32 | 体(通常値) |
$33 | 知(通常値) |
$34 | 力(現在値) |
$35 | 速(現在値) |
$36 | 体(現在値) |
$37 | 知(現在値) |
$38 | LV(現在値) |
$39 | 状態異常 |
$3A | |
$3B | |
$3C | 被ダメージの単発値 |
$3D | |
$3E | |
$3F |
味方キャラが戦闘フィールドのどの位置に居るかを記録しているアドレスは、上の通りに$10と$12、$18~19に入る。
$18~19は、マス目を単位としており、$18は横方向(X座標・左から$00~$06)、$19は縦方向(Y座標・上から$00~$06)である。
$10と$12だが、マス目ではなく、ゲーム画面の戦闘フィールド上のピクセル単位、つまりドット数での位置を示していると思われる。
スーパーファミコンの解像度は横256×縦224ピクセルで、戦闘フィールドは横32ピクセル×7マス(合計224ピクセル)、縦24ピクセル×7マス(合計168ピクセル)である。
16進数にすると、1マスのサイズは、横$20ピクセル、縦$18ピクセルで、戦闘フィールド全体は横$E0ピクセル、縦$A8ピクセルになる。

$10に入る値は、戦闘フィールド左隅からの、該当キャラのドット絵の中心位置(単位ピクセル)になる。
$12に入る値は、戦闘フィールド上隅からの、該当キャラのドット絵の中心位置(単位ピクセル)になる。
例えば該当キャラが、左から2マス、上から3マスの位置に居る場合は、下図のようになる。

キャラの中心位置までの距離なので、横は$60ピクセル、縦は$3Cピクセル。
味方キャラデータ$10に入る値は$60、味方キャラデータ$12に入る値は$3Cということになる。
この値はピクセル単位で記録されているため、たとえばキャラが移動中、マス目とマス目の間にいる時はその値がフレーム単位(リアルタイム)で更新される。
また、ダメージをくらった時、キャラが左右に小さく動くモーションがあるが、この時にも横軸(X軸)にあたる味方キャラデータ$10の数値が少し動く。
以上から、マス目単位の味方キャラデータ$18~$19は、向きや方向、位置を考慮した上でのダメージ量計算やターゲット計算などに用いられ、ピクセル単位でキャラの位置を記録する味方キャラデータ$10と$12は、キャラのドット絵、技のモーションやエフェクトなどの表示位置計算に使っているのだろう、ということが推測できる。
味方キャラが技を使っている最中(技選択~技を出すまで)に、以下アドレスに該当技の技データ00~34がそのまま入る。
| 味方キャラ番号 | アドレス |
|---|---|
| 1 | $7E:9010~$7E:9028 |
| 2 | $7E:9050~$7E:9068 |
| 3 | $7E:9090~$7E:90A8 |
| 4 | $7E:90D0~$7E:90E8 |
最大16種類の技、$00~$0Fとしておく。
| 味方キャラ番号 | アドレス |
|---|---|
| 1 | $7E:E900~$7E:E93F |
| 2 | $7E:E940~$7E:E97F |
| 3 | $7E:E980~$7E:E9BF |
| 4 | $7E:E9C0~$7E:E9FF |
下2桁が$00~0Fに技ID、$10~1Fに該当技が出せなくなる状態異常(技データ08)、$20~2Fに技データ14、$30~3Fに反撃専用だと$01、他は$00が入る。
各状態異常の残り時間が入る。
| 味方キャラ番号 | アドレス |
|---|---|
| 1 | $7E:EA00~ |
| 2 | $7E:EA40~ |
| 3 | $7E:EA80~ |
| 4 | $7E:EAC0~ |
| 数値 | 内容 |
|---|---|
$00 | 首かため回復までの残り時間 |
$01 | 足かため回復までの残り時間 |
$02 | 腕かため回復までの残り時間 |
$03 | 毒回復までの残り時間 |
$04 | マヒ回復までの残り時間 |
$05 | 眠り回復までの残り時間 |
$06 | 酔い回復までの残り時間 |
$07 | 石化すると値がつく。0になっても石化は回復しない。 |
戦闘では最大4種類の敵が出現する。
最大4種類分のデータ領域。各64バイト。
| 敵種類 | アドレス |
|---|---|
| 1 | $7E:1A00~$7E:1A3F |
| 2 | $7E:1A40~$7E:1A7F |
| 3 | $7E:1A80~$7E:1ABF |
| 4 | $7E:1AC0~$7E:1AFF |
| 数値 | 内容 |
|---|---|
$00 | 敵ID |
$01 | |
$02 | |
$03 | |
$04 | 横の幅 |
$05 | 縦の幅 |
$06 | |
$07 | |
$08 | |
$09 | |
$0A | |
$0B | レベル |
$0C | |
$0D | |
$0E | |
$0F | |
$10 | HP10を下位バイト、11を上位バイトとした4桁の値 |
$11 |
|
$12 | 技1の反撃属性1 |
$13 | 技2の反撃属性1 |
$14 | 技3の反撃属性1 |
$15 | 技4の反撃属性1 |
$16 | 技1の反撃属性2 |
$17 | 技2の反撃属性2 |
$18 | 技3の反撃属性2 |
$19 | 技4の反撃属性2 |
$1A | 技1が使用不可になるステータス異常 |
$1B | 技2が使用不可になるステータス異常 |
$1C | 技3が使用不可になるステータス異常 |
$1D | 技4が使用不可になるステータス異常 |
$1E | |
$1F | |
$20 | 敵データ00 移動パターン |
$21 | 敵データ01 上4ビット:フィールド吸収/下4ビット:移動頻度 |
$22 | 敵データ02 (データアドレス呼び出しの値) |
$23 | 敵データ03 (データアドレス呼び出しの値) |
$24 | 敵データ04 HP *$80以上の時は、実際のHP = (敵データ04 & $7F) * $10 |
$25 | 敵データ05 力 |
$26 | 敵データ06 速 |
$27 | 敵データ07 体 |
$28 | 敵データ08 知 |
$29 | 敵データ09 上1ビット:使用技を敵技IDから取得するなら0、味方技IDから取得するなら1/下7ビット:レベル |
$2A | 敵データ10 無効状態異常 |
$2B | 敵データ11 使用技1 技ID 敵データ09上1ビットが0なら敵技ID/1なら味方技ID、以下敵データ14まで同じ |
$2C | 敵データ12 使用技2 技ID |
$2D | 敵データ13 使用技3 技ID |
$2E | 敵データ14 使用技4 技ID |
$2F | 敵データ15 タイプ |
$30 | 敵データ16 カウンター行動異常 手/足 |
$31 | 敵データ17 カウンター行動異常 突/鋭 |
$32 | 敵データ18 カウンター行動異常 鈍/締 |
$33 | 敵データ19 カウンター行動異常 飛/背 |
$34 | 敵データ20 カウンター行動異常 火/水 |
$35 | 敵データ21 カウンター行動異常 風/土 |
$36 | 敵データ22 カウンター行動異常 精/善 |
$37 | 敵データ23 カウンター行動異常 悪/無 ※下1桁(4ビット)はそのまま種族の値 |
$38 | 敵データ24 ドロップアイテム1 |
$39 | 敵データ25 ドロップアイテム2 |
$3A | 敵データ26 ドロップアイテム3 |
$3B | 敵データ27 ※未使用データ |
$3C | 敵データ28 ※未使用データ |
$3D | 敵データ29 背後補正/側面補正 |
$3E | 敵データ30 回避属性 8ビットが手足突鋭鈍締飛背に対応 |
$3F | 敵データ31 回避属性 8ビットが火水風土精善悪無に対応 |
敵は最大で15体出現する。便宜上、0~Eと番号を振ってある。
最大15キャラ分のデータ領域。
なお、戦闘に入った時、前の敵データを消さずに上書きするだけらしく、例えば敵パーティが4体の戦闘の後に敵パーティが2体の戦闘になった時、敵0と敵1のデータは上書き更新されるが、前の戦闘の敵2と敵3のデータは残ったまま。
| 敵キャラ | アドレス |
|---|---|
| 0 | $7E:1B00~$7E:1B0F, $7E:AA00~$7E:AA0F, $7E:AB00~ |
| 1 | $7E:1B10~$7E:1B1F, $7E:AA10~$7E:AA1F, $7E:AB10~ |
| 2 | $7E:1B20~$7E:1B2F, $7E:AA20~$7E:AA2F, $7E:AB20~ |
| 3 | $7E:1B30~$7E:1B3F, $7E:AA30~$7E:AA3F, $7E:AB30~ |
| 4 | $7E:1B40~$7E:1B4F, $7E:AA40~$7E:AA4F, $7E:AB40~ |
| 5 | $7E:1B50~$7E:1B5F, $7E:AA50~$7E:AA5F, $7E:AB50~ |
| 6 | $7E:1B60~$7E:1B6F, $7E:AA60~$7E:AA6F, $7E:AB60~ |
| 7 | $7E:1B70~$7E:1B7F, $7E:AA70~$7E:AA7F, $7E:AB70~ |
| 8 | $7E:1B80~$7E:1B8F, $7E:AA80~$7E:AA8F, $7E:AB80~ |
| 9 | $7E:1B90~$7E:1B9F, $7E:AA90~$7E:AA9F, $7E:AB90~ |
| A | $7E:1BA0~$7E:1BAF, $7E:AAA0~$7E:AAAF, $7E:ABA0~ |
| B | $7E:1BB0~$7E:1BBF, $7E:AAB0~$7E:AABF, $7E:ABB0~ |
| C | $7E:1BC0~$7E:1BCF, $7E:AAC0~$7E:AACF, $7E:ABC0~ |
| D | $7E:1BD0~$7E:1BDF, $7E:AAD0~$7E:AADF, $7E:ABD0~ |
| E | $7E:1BE0~$7E:1BEF, $7E:AAE0~$7E:AAEF, $7E:ABE0~ |
| アドレス | 内容 |
|---|---|
$1B00 | 敵ID |
$1B01 | 戦闘状態(戦闘離脱$00/敵操作状態$40/敵総数+1の敵番号$80/$FF通常) |
$1B02 | |
$1B03 | |
$1B04 | 向き(右下$00/左下$40/右上$80/左上$C0) |
$1B05 | |
$1B06 | |
$1B07 | 行動状態 |
$1B08 | 初期位置計算用のマス目のX座標(左から$00~$06)※敵の左上マス基準 |
$1B09 | 初期位置計算用のマス目のY座標(上から$00~$06)※敵の左上マス基準 |
$1B0A | 現在のキャラ位置のマス目のX座標(左から$00~$06)※敵の左上マス基準 |
$1B0B | 現在のキャラ位置のマス目のY座標(上から$00~$06)※敵の左上マス基準 |
$1B0C | キャラの位置のX軸(ピクセル単位) |
$1B0D | |
$1B0E | キャラの位置のY軸(ピクセル単位) |
$1B0F | |
$AA00 | 現在HP 00を下位バイト、01を上位バイトとした4桁の値 |
$AA01 | |
$AA02 | 行動異常 |
$AA03 | 力(現在値) |
$AA04 | 速(現在値) |
$AA05 | 体(現在値) |
$AA06 | 知(現在値) |
$AA07 | 状態異常 |
$AA08 | 首かため回復までの残り時間 |
$AA09 | 足かため回復までの残り時間 |
$AA0A | 腕かため回復までの残り時間 |
$AA0B | 毒回復までの残り時間 |
$AA0C | マヒ回復までの残り時間 |
$AA0D | 眠り回復までの残り時間 |
$AA0E | 酔い回復までの残り時間 |
$AA0F | 石化すると値がつく |
$AB00 | LV(現在値) |
$AB01 | 攻撃/回復技の対象の範囲内にいる敵には順に$01~が入り、範囲外だと$FFが入る。 |
$AB02 | 被ダメージ/回復量のヒット数 |
$AB03 | ヒット数(倒れるか999以上の時$FF?) |
$AB04 | 被ダメージの単発値 |
$AB05 | |
$AB06 | |
$AB07 | |
$AB08 | 行動異常(計算用) |
$AB09 | 状態異常(計算用) |
$AB0A | レベル現在値(計算値) |
$AB0B | |
$AB0C | 状態異常(技によって発生した値、これと既に発生している状態異常を加算する) |
$AB0D | |
$AB0E | |
$AB0F | |
$AC00~03 | 使用技(決定前) |
$AC04~05 | 順序ポイント(2バイト) |
$AC06 | 使用技(決定値 |