「解析データ/イベント関連」の編集履歴(バックアップ)一覧はこちら
解析データ/イベント関連 - (2018/03/16 (金) 21:56:03) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
4**判明しているイベントコード
0x0A0000-0x0CE5FF イベントデータ
-----------------------------------------------------------
●キャライベントと通常イベント(仮称)
イベントデータは、大きく上記の2つに分けることができる。
・キャライベント:特定のキャラのパレット変更や移動などに使用
・通常イベント:戦闘や会話、画面エフェクトなどキャラを指定しないイベントに使用
データは、このキャライベントと通常イベントがごちゃごちゃに混じり合っている。
------------------------------------------------------------
●キャライベントの基本構成
キャライベントは、原則として「xx 8y .... FF」のパターンで構成されている。
xx : キャラ番号の指定
0x:主人公キャラ 10~:イベントキャラ 31~34:パーティーのキャラ
(少なくとも37以降は命令コードなのでキャラ番号ではない)
8y : キャライベントの長さを指定(y番目に必ずFFが来る)
FF6では81=+1のような使われ方をすることが多い。
90(=+16)以降も使用可能
8yを0yにする場合、他のイベントと並列処理扱いになる。
FF : キャライベントの終了
それ以外が通常イベントになる。
通常イベントとキャライベントで、コードの意味がまったく異なってくる。例えば、91というコードは通常イベントではウェイトだが、キャライベントでは右に5歩だけ移動という命令になる。
-------------------------------------------------------------
●キャライベントのコード
00(?)~ : パレットの変更(1サイズ命令。コードに対応するパレットに変更)
80~ : キャラの移動
80:上に1歩 81:右に1歩 82:下に1歩 83:左に1歩
84:上に2歩 88:上に3歩 8C:上に4歩 90:上に5歩
Cx(x=C~F) : 向きを変える(CC:上 CD:右 CE:下 CF:左)
C0 キャラ移動速度4分の1 (イベント内)
C1 キャラ移動速度半減 (イベント内)
C2 キャラ移動速度通常
C3 キャラ移動速度2倍
C4 キャラ移動速度4倍
C6 キャラ移動時アニメーション動作
C7 キャラ移動時アニメーション停止
D1 キャラクターを消す
D5 xx yy キャラをxxyyに移動
DC キャラを小さくジャンプ
DD キャラを大きくジャンプ
E0 xx XXユニット時間ウェイト
-------------------------------------------------------------
●通常イベントのコード
37 xx yy キャラ番号XXの座標をキャラ番号YYと入れ替える
(パレットは変わらないので43 xx yyを併用する)
38 画面を固定、操作不可にする
39 画面固定を解除、操作可能にする
3E xx キャラ番号XXのキャラを消す(姿が消え、パーティからも外れる)
3F xx yy 不明 パーティ切り替え関連?
40 XX YY キャラ番号xxのキャラクターデータ(パラメータや戦闘コマンド)を
キャラ番号YYのものに置き換える。
(正確にはYY*16h+2D7CA2から22バイト)
42 xx キャラ番号xxの姿を消す(メニューの開閉などで元に戻る)
43 xx yy キャラ番号xxのパレットをyy番に変更する。
4B YY XX 会話番号XXYYを呼び出し
2XYY 画面上の吹き出しの中に表示
6XYY 上部に直接表示
8XYY 画面下の吹き出しの中に表示
cXYY 下部に直接表示(主人公の紹介時など)
4D XX YY 戦闘に入る
(イベントバトル番号XXの敵パーティになる。YYで戦闘背景指定 FFにするとエンカウント時の演出無しで暗転して戦闘開始)
50 XX 画面の明るさを変える
XXのbit6がセットされていると明るくなり、されていないと暗くなる。詳細不明。
55 XX 画面フラッシュ(回復の泉など)
XXの値によってフラッシュの色が変化する
Bit0-Bit3:効果なし?
Bit4:赤 Bit5:緑 Bit6:青
Bit4-6は光の3原色に対応しており、例えばBit4と5が同時に立った状態
(60など)だとフラッシュ時の色は黄色になる。
58 XX 画面を揺らす(洞窟の入口を開けたときなどに使用) XXは不明
59 xx 画面暗転解除 xx=暗転速度
5A xx 画面暗転 xx=暗転速度
61 xx yy zz カラーパレットの色のうち(マップでは128色使っている)
YY番からZZ番まででXXの色成分を強調する。
XX : 0x01=赤 0x02=緑 0x04=青
62 xx 画面にモザイク効果をかける xx=モザイク速度
6A xx yy aa bb cc マップyyxxの座標(aa,bb)に移動。ccは不明。
74 XX YY AA BB DATA~ 座標XX*YYからAA*BB個のタイルをDATA部の
番号のタイルに置き換える
隠し通路やギミックなどに使用。(73でもほぼ同じ働き)
このコードを2回連続で使用すると1回目がレイヤー1、
2回目がレイヤー2に対して実行される。
7F XX YY キャラ番号XXのキャラクターの名前をYY*6+478C0から6バイトの
文字列に置き換える。
(つまりXX番のキャラ名をYY番のキャラ名に置き換える)
80 XX アイテム入手(XX=アイテム番号)
84 XX YY 所持金をYYXXギル増やす
85 XX YY 所持金をYYXXギル減らす
86 XX 魔石入手(XX=魔石番号)
87 XX 魔石を手放す(XX=魔石番号)
88 xx yy zz 番号xxのキャラ(31~34がパーティキャラ)のステータスを
yy zzに従って解除する。
xx:0x01=暗闇 0x02=ゾンビ 0x04=毒 0x10=透明
0x20=カッパ 0x40=石 0x80=戦闘不能
yy:0x40=レビテト
各bitが立っていると解除しない。
8A 移動停止
8B xx yy 番号xxのキャラ(31~34がパーティキャラ)のHPを最大HPの
yy/7Fだけ回復
8C xx yy 番号xxのキャラ(31~34がパーティキャラ)のMPを最大MPの
yy/7Fだけ回復
8D xx 番号xxのキャラの装備を全て解除する。
91 15/60秒間ポーズ
92 30/60秒間ポーズ
93 45/60秒間ポーズ
94 60/60秒間ポーズ
95 120/60秒間ポーズ
96 画面を更新する
9B xx 番号xx(店番号)の店の販売画面に入る
9D ラストバトル直前のパーティ編成画面に入る
A1 XX アドレス1188+XXから6バイトの値を00で埋める(詳細不明)
A9 タイトル画面を表示
B0 XX ~ B1 繰り返し処理
~のコマンドをXX回繰り返す
B1が繰り返すコマンドの終点
B2 ZZ YY 0X アドレス A0000+0XYYZZへジャンプ(X=0~3)
例)8F E4 02(CE48Fでパーティ全員のHP,MPを全回復)
B6 会話中の選択肢の区切りに対応した分岐処理コード
BD xx yy zz メモリアドレス1F6Dの値を1増やした後、1F6Dの値
+C0FD00の値が80h以上の場合にZZYYXX+A0000に
ジャンプする
1F6Dの初期値は乱数で生成されるらしく、ロード
するたびに異なる
C0FD00~C0FDFFは乱数テーブル
A0 xx yy zz aa bb 時間yyxxのカウントダウン開始(単位は1/60秒)
60 54なら5460h=21600x1/60秒=360秒=6分
aa bbは不明(カウントが0になった時のジャンプ先?)
ちなみにカウント中の時間はメモリの1189-118Aに
格納される
C0 XX YY AA BB 0C YYXXの下位3ビットをビット番号(BIT0-7)とし、
上位6ビットの値+1E80のアドレスでそのビットが
立っていればオフセットCBBAA+A0000にジャンプ
正確には(YYXXの値 AND 32767)の上位12ビットの
値+1E80になる
そのため、メモリのかなり広い範囲に対して使用可能
である。(理論上は最大で2E7Fまで適用可能)
D2 XX イベントフラグをセットする(1EA0+XX)
1EA0+(XXの上位5ビット)のbit(XXの下位3ビット)をセット
D3 XX イベントフラグをクリアする
1EA0+(XXの上位5ビット)のbit(XXの下位3ビット)をクリアする
D4 XX イベントフラグをセットする
1EC0+(XXの上位5ビット)のbit(XXの下位3ビット)をセット
例 D4 43
43 = 1000011
01000 = 8 → 1EC0+8=1EC8
011 = 3 → bit3(0x08)
よってアドレス1EC8のbit3がセットされる。
D5 XX イベントフラグをクリアする
1EC0+(XXの上位5ビット)のbit(XXの下位3ビット)をクリアする
D6 XX イベントフラグをセットする(1EE0+XX)
D7 XX イベントフラグをクリアする
1EE0+(XXの上位5ビット)のbit(XXの下位3ビット)をクリアする
EA XX YY フラグXXの値をYYだけ減らす
EB XX YY 00 ** ** 01 xx yy 0z 02 ** **
フラグチェック
XXの値*2+7E1FC2がそのフラグのアドレス
00以下の2バイト不明
フラグの値がYYなら02以下を実行
違うなら01以下の3バイト+A0000をアドレスとしてジャンプ
F0 XX 音楽変更(XX=音楽番号)
F4 XX 効果音を鳴らす
96:スイッチ音
E9:回復の泉
BB:洞窟を開く音
E7:無音
F7 音楽演奏パターン変更(SPCでFC XX YY で指定された先に
ジャンプする 魔列車などで使用)
FE イベント終了
**会話データについて
0x0CE602-0x0CFE56 会話データオフセット[size:2]
オフセットの値+0D0000 が会話データ文字列のオフセットになる。
会話番号71D以降は、オフセットの値+0E0000になる。
プラスする値(+0D0000と+0E0000)の境目となる会話番号は
0x0CE600-0x0CE601 の2バイトで指定されている。
例)ゲーム開始直後・炭坑都市ナルシェ
ガード「帝国の魔導アーマー!?とうとうこのナルシェにまで!
この会話番号は00Dであり、会話データオフセットは0CE61Cにある。
その値は 67 02 なので 0267 + 0D0000 = 0D0267 からこの会話
データ文字列がある。
(この事から、会話を含むイベントの格納場所、会話番号、会話オフセット、会話データ文字列のうちどれかが分かれば、全てが逆算で導ける。)
4**判明しているイベントコード
0x0A0000-0x0CE5FF イベントデータ
-----------------------------------------------------------
●キャライベントと通常イベント(仮称)
イベントデータは、大きく上記の2つに分けることができる。
・キャライベント:特定のキャラのパレット変更や移動などに使用
・通常イベント:戦闘や会話、画面エフェクトなどキャラを指定しないイベントに使用
データは、このキャライベントと通常イベントがごちゃごちゃに混じり合っている。
------------------------------------------------------------
●キャライベントの基本構成
キャライベントは、原則として「xx 8y .... FF」のパターンで構成されている。
xx : キャラ番号の指定
0x:主人公キャラ 10~:イベントキャラ 31~34:パーティーのキャラ
(少なくとも37以降は命令コードなのでキャラ番号ではない)
8y : キャライベントの長さを指定(y番目に必ずFFが来る)
FF6では81=+1のような使われ方をすることが多い。
90(=+16)以降も使用可能
8yを0yにする場合、他のイベントと並列処理扱いになる。
FF : キャライベントの終了
それ以外が通常イベントになる。
通常イベントとキャライベントで、コードの意味がまったく異なってくる。例えば、91というコードは通常イベントではウェイトだが、キャライベントでは右に5歩だけ移動という命令になる。
-------------------------------------------------------------
●キャライベントのコード
00(?)~ : パレットの変更(1サイズ命令。コードに対応するパレットに変更)
80~ : キャラの移動
80:上に1歩 81:右に1歩 82:下に1歩 83:左に1歩
84:上に2歩 88:上に3歩 8C:上に4歩 90:上に5歩
Cx(x=C~F) : 向きを変える(CC:上 CD:右 CE:下 CF:左)
C0 キャラ移動速度4分の1 (イベント内)
C1 キャラ移動速度半減 (イベント内)
C2 キャラ移動速度通常
C3 キャラ移動速度2倍
C4 キャラ移動速度4倍
C6 キャラ移動時アニメーション動作
C7 キャラ移動時アニメーション停止
D1 キャラクターを消す
D5 xx yy キャラをxxyyに移動
DC キャラを小さくジャンプ
DD キャラを大きくジャンプ
E0 xx XXユニット時間ウェイト
-------------------------------------------------------------
●通常イベントのコード
37 xx yy キャラ番号XXの座標をキャラ番号YYと入れ替える
(パレットは変わらないので43 xx yyを併用する)
38 画面を固定、操作不可にする
39 画面固定を解除、操作可能にする
3E xx キャラ番号XXのキャラを消す(姿が消え、パーティからも外れる)
3F xx yy 不明 パーティ切り替え関連?
40 XX YY キャラ番号xxのキャラクターデータ(パラメータや戦闘コマンド)を
キャラ番号YYのものに置き換える。
(正確にはYY*16h+2D7CA2から22バイト)
42 xx キャラ番号xxの姿を消す(メニューの開閉などで元に戻る)
43 xx yy キャラ番号xxのパレットをyy番に変更する。
4B YY XX 会話番号XXYYを呼び出し
2XYY 画面上の吹き出しの中に表示
6XYY 上部に直接表示
8XYY 画面下の吹き出しの中に表示
cXYY 下部に直接表示(主人公の紹介時など)
4D XX YY 戦闘に入る
(イベントバトル番号XXの敵パーティになる。YYで戦闘背景指定 FFにするとエンカウント時の演出無しで暗転して戦闘開始)
50 XX 画面の明るさを変える
XXのbit6がセットされていると明るくなり、されていないと暗くなる。詳細不明。
55 XX 画面フラッシュ(回復の泉など)
XXの値によってフラッシュの色が変化する
Bit0-Bit3:効果なし?
Bit4:赤 Bit5:緑 Bit6:青
Bit4-6は光の3原色に対応しており、例えばBit4と5が同時に立った状態
(60など)だとフラッシュ時の色は黄色になる。
58 XX 画面を揺らす(洞窟の入口を開けたときなどに使用) XXは不明
59 xx 画面暗転解除 xx=暗転速度
5A xx 画面暗転 xx=暗転速度
61 xx yy zz カラーパレットの色のうち(マップでは128色使っている)
YY番からZZ番まででXXの色成分を強調する。
XX : 0x01=赤 0x02=緑 0x04=青
62 xx 画面にモザイク効果をかける xx=モザイク速度
6A xx yy aa bb cc マップyyxxの座標(aa,bb)に移動。ccは不明。
74 XX YY AA BB DATA~ 座標XX*YYからAA*BB個のタイルをDATA部の
番号のタイルに置き換える
隠し通路やギミックなどに使用。(73でもほぼ同じ働き)
このコードを2回連続で使用すると1回目がレイヤー1、
2回目がレイヤー2に対して実行される。
7F XX YY キャラ番号XXのキャラクターの名前をYY*6+478C0から6バイトの
文字列に置き換える。
(つまりXX番のキャラ名をYY番のキャラ名に置き換える)
80 XX アイテム入手(XX=アイテム番号)
84 XX YY 所持金をYYXXギル増やす
85 XX YY 所持金をYYXXギル減らす
86 XX 魔石入手(XX=魔石番号)
87 XX 魔石を手放す(XX=魔石番号)
88 xx yy zz 番号xxのキャラ(31~34がパーティキャラ)のステータスを
yy zzに従って解除する。
xx:0x01=暗闇 0x02=ゾンビ 0x04=毒 0x10=透明
0x20=カッパ 0x40=石 0x80=戦闘不能
yy:0x40=レビテト
各bitが立っていると解除しない。
8A 移動停止
8B xx yy 番号xxのキャラ(31~34がパーティキャラ)のHPを最大HPの
yy/7Fだけ回復
8C xx yy 番号xxのキャラ(31~34がパーティキャラ)のMPを最大MPの
yy/7Fだけ回復
8D xx 番号xxのキャラの装備を全て解除する。
91 15/60秒間ポーズ
92 30/60秒間ポーズ
93 45/60秒間ポーズ
94 60/60秒間ポーズ
95 120/60秒間ポーズ
96 画面を更新する
9B xx 番号xx(店番号)の店の販売画面に入る
9D ラストバトル直前のパーティ編成画面に入る
A1 XX アドレス1188+XXから6バイトの値を00で埋める(詳細不明)
A9 タイトル画面を表示
B0 XX ~ B1 繰り返し処理
~のコマンドをXX回繰り返す
B1が繰り返すコマンドの終点
B2 ZZ YY 0X アドレス A0000+0XYYZZへジャンプ(X=0~3)
例)8F E4 02(CE48Fでパーティ全員のHP,MPを全回復)
B6 会話中の選択肢の区切りに対応した分岐処理コード
BD xx yy zz メモリアドレス1F6Dの値を1増やした後、1F6Dの値
+C0FD00の値が80h以上の場合にZZYYXX+A0000に
ジャンプする
1F6Dの初期値は乱数で生成されるらしく、ロード
するたびに異なる
C0FD00~C0FDFFは乱数テーブル
A0 xx yy zz aa bb 時間yyxxのカウントダウン開始(単位は1/60秒)
60 54なら5460h=21600x1/60秒=360秒=6分
aa bbは不明(カウントが0になった時のジャンプ先?)
ちなみにカウント中の時間はメモリの1189-118Aに
格納される
C0 XX YY AA BB 0C YYXXの下位3ビットをビット番号(BIT0-7)とし、
上位6ビットの値+1E80のアドレスでそのビットが
立っていればオフセットCBBAA+A0000にジャンプ
正確には(YYXXの値 AND 32767)の上位12ビットの
値+1E80になる
そのため、メモリのかなり広い範囲に対して使用可能
である。(理論上は最大で2E7Fまで適用可能)
YYの上位ビットの8
が立っていた場合、アドレスの該当ビットが
クリアされている場合にジャンプするようになる。
D2 XX イベントフラグをセットする(1EA0+XX)
1EA0+(XXの上位5ビット)のbit(XXの下位3ビット)をセット
D3 XX イベントフラグをクリアする
1EA0+(XXの上位5ビット)のbit(XXの下位3ビット)をクリアする
D4 XX イベントフラグをセットする
1EC0+(XXの上位5ビット)のbit(XXの下位3ビット)をセット
例 D4 43
43 = 1000011
01000 = 8 → 1EC0+8=1EC8
011 = 3 → bit3(0x08)
よってアドレス1EC8のbit3がセットされる。
D5 XX イベントフラグをクリアする
1EC0+(XXの上位5ビット)のbit(XXの下位3ビット)をクリアする
D6 XX イベントフラグをセットする(1EE0+XX)
D7 XX イベントフラグをクリアする
1EE0+(XXの上位5ビット)のbit(XXの下位3ビット)をクリアする
EA XX YY フラグXXの値をYYだけ減らす
EB XX YY 00 ** ** 01 xx yy 0z 02 ** **
フラグチェック
XXの値*2+7E1FC2がそのフラグのアドレス
00以下の2バイト不明
フラグの値がYYなら02以下を実行
違うなら01以下の3バイト+A0000をアドレスとしてジャンプ
F0 XX 音楽変更(XX=音楽番号)
F4 XX 効果音を鳴らす
96:スイッチ音
E9:回復の泉
BB:洞窟を開く音
E7:無音
F7 音楽演奏パターン変更(SPCでFC XX YY で指定された先に
ジャンプする 魔列車などで使用)
FE イベント終了
**会話データについて
0x0CE602-0x0CFE56 会話データオフセット[size:2]
オフセットの値+0D0000 が会話データ文字列のオフセットになる。
会話番号71D以降は、オフセットの値+0E0000になる。
プラスする値(+0D0000と+0E0000)の境目となる会話番号は
0x0CE600-0x0CE601 の2バイトで指定されている。
例)ゲーム開始直後・炭坑都市ナルシェ
ガード「帝国の魔導アーマー!?とうとうこのナルシェにまで!
この会話番号は00Dであり、会話データオフセットは0CE61Cにある。
その値は 67 02 なので 0267 + 0D0000 = 0D0267 からこの会話
データ文字列がある。
(この事から、会話を含むイベントの格納場所、会話番号、会話オフセット、会話データ文字列のうちどれかが分かれば、全てが逆算で導ける。)
表示オプション
横に並べて表示:
変化行の前後のみ表示: