「解析データ/イベント関連」の編集履歴(バックアップ)一覧はこちら

解析データ/イベント関連 - (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 からこの会話 データ文字列がある。 (この事から、会話を含むイベントの格納場所、会話番号、会話オフセット、会話データ文字列のうちどれかが分かれば、全てが逆算で導ける。)

表示オプション

横に並べて表示:
変化行の前後のみ表示:
記事メニュー
目安箱バナー