最終更新:ID:WlFMEkpUBQ 2025年04月23日(水) 14:41:38履歴
RAM領域にあるデータで、とりわけ最近発見されたアイテム欄の、アドレス参照の異常によるバグに関連ありそうな部分のまとめ。
ここに書かれている情報は、多くの方々の発見や検証に基づき調査して、プロセスエディタに出力された結果を書き写したもの。
(大変お世話になっているメモリエディタcep)
現在も大部分が不明で、解析内容には不明瞭な情報・間違っている情報が含まれる可能性も多々ありますので、そのような点を発見されましたら修正していただけると助かります。
アイテムや技・術のコード等のデータはこちらから。
ここに書かれている情報は、多くの方々の発見や検証に基づき調査して、プロセスエディタに出力された結果を書き写したもの。
(大変お世話になっているメモリエディタcep)
現在も大部分が不明で、解析内容には不明瞭な情報・間違っている情報が含まれる可能性も多々ありますので、そのような点を発見されましたら修正していただけると助かります。
アイテムや技・術のコード等のデータはこちらから。
アドレス | データ | 補足 |
009010 | 乱数のSeed | 戦闘以外では時間、戦闘中は戦闘開始直前の時間を初期Seedとして毎フレーム進む。 |
これらのデータはセーブやクイックセーブで保存される。
アドレス | データ | 補足 |
010008 | パーティ人数 | メインパーティの人数 |
010009 | 主人公 | |
01000A | 連携履歴のお気に入り境界 | バーの一番上〜一番下は0x01〜0x07に該当 |
01000B | カスタムアーツ履歴のお気に入り境界 | 同上 |
01000C〜010013 | パーティメンバー | 8人分 空欄はFF |
010014〜01001B | 敵の学習レベル | ビットフラグで管理 全64ビットだが初期状態で0100014の0x01のフラグしかなく、技・術のデータにも18種類しか存在しない 敵の学習フラグの判定は、全員分のコマンドを入力し終わった時点で行われるので、実際に行動しなかったとしても、敵の学習レベルは上がる可能性がある 全てのフラグが無い場合、クリア後の敵の学習レベルは1/22と表示され、 初めからある0100014の0x01フラグと合わせて、敵の学習レベルの最低値は2/22になる |
01001C〜01003B | カスタムアーツ履歴 | 1コマンドが1バイトで、カスタムアーツ1つにつき4バイトで8枠分 |
01003C〜01005B | 技術修得フラグ | ビットフラグで管理 全部で256ビットで技・術のコード100〜1FFまでが対象 |
01005C〜01009B | 連携履歴 | アーツ1つが2バイトで、1つの連携データが8バイト×8枠 |
01009C〜01011B | アイテム欄 | 64枠用意され、1つのデータがアイテムコード1バイト・耐久度1バイトの計2バイトで構成されている |
01013C〜 | キーコンフィグ | システムコンフィグのキー設定 変更できるのは1バイト分のみ。データ内には2バイトのキー判定にも対応しており、これは方向キーなどに対応している |
01013C | 80 | キャンセル・ダッシュ | |
01013E | 81 | 決定 | |
010140 | 82 | パーティーステータス | |
010142 | 83 | キャラクターステータス | |
010144 | 84 | 武具装備メニュー | |
010146 | 85 | 技装備メニュー | |
01014A | 87 | セーブ | |
01014C | 88 | バトルスタイル | |
01014E | 89 | プレイヤーノート | |
010150 | 90 | システムコンフィグ | |
010152 | 91 | アイテム | |
010154 | 92 | ヘルプ・クイックセーブ | |
01015A | 95 | サイドチェンジ | |
01015C | 96 | バトルステータス | |
ここからはコンフィグで弄れない | |||
01015E | 97 | 上(通常↑キーで行う操作全て) | |
010160 | 98 | 下(通常↓キーで行う操作全て) | |
010162 | 99 | 左(通常←キーで行う操作全て) | |
010164 | 100 | 右(通常→キーで行う操作全て) | |
010166 | 101 | コンフィグ | コンフィグの各項がビットフラグで管理されている 0x01 サウンド モノラル 0x08 振動ON・OFF ON 0x10 呼出しヘルプ OFF |
010167 | 101 | 画面位置調整 X | −8〜+8は内部的には0xF8〜0x08に相当 |
010168 | 102 | 画面位置調整 Y | 上に同じ |
010169 | 102 | アクティブウィンドウの色彩? 赤 | 初期値0x1E(30) |
01016A | 103 | アクティブウィンドウの色彩? 緑 | 初期値0x1B(27) |
01016B | 103 | アクティブウィンドウの色彩? 青 | 初期値0x17(23) |
01016D | 104 | 主人公の状態?コンバットの結果? | 0x01 メインパーティに主人公不在で戦闘終了orコンバットHP割合で敗北時(ネーベルスタン退却時2歩後退) 0x02 主人公のHPかLPが0で戦闘終了(ネーベルスタン退却時3歩後退) |
01016E | 105 | 特殊戦闘に関連? | 0x80 終了時のHP回復がない戦闘(コンバット、南の砦、巨虫のメガリス最深部イベントのランドクラーケンなど)で戦闘中(戦闘後0x00に戻る) |
010170 | 106 | ボタン入力で表示されないシステムコマンド | このフラグが立っていると、キーコンフィグで割り当てられたボタンを入力しても表示されない。 通常の□ボタンメニューに限らず、△やL1やR1などに設定したコマンドでも同様。 北大陸連戦などセーブやアイテムが使用できないイベントにも関連。 0x40 クイックセーブ、0x20 アイテム、0x10 システムコンフィグ 0x08 プレイヤーノート、0x04 バトルスタイル、0x02 セーブ、0x01 ロード(最初からこのフラグだけある) |
010171 | 106 | 0x80 技装備、0x40 武具装備、0x20 キャラクターステータス、0x10 パーティステータス | |
010172 | 107 | この値が0x00以外の時にメニューを閉じるとアイテムの使用メッセージXXを使った。と出る XXはアイテムコードに対応したアイテム名 再度メニューを開くと0x00に戻る | |
010173 | 107 | 0x20 宝箱でとっておくを選択 0x00 宝箱でいらないを選択 宝箱を開けると0x00にリセットされるが、ハンの廃墟のクヴェルでは変動しない | |
010174 | 108 | 年表を開いている時は、そのページの番号になっていた | |
010175 | 108 | 0x20 鉱山にて(1251年) 足が挟まってた人を助けてお礼に砂龍の杖を貰う 0x10 鉱山にて(1251年) 錯乱していた人を助けてお礼に2000CRを貰う 0x08 鉱山にて(1251年) 足場の陰に隠れていた人を助けてお礼に300チップを貰う | |
010177 | 109 | 鉱山にて(1251年) マップを切り替える、人を助ける、宝を取る度に1加算 20(0x14)になった時点でゲームオーバー | |
010178 | 110 | ウィルの旅立ち 0x80 マスターかナルセスに話し掛けてコーデリアが入ってきた時にフラグ 酒場を出ると0x00に戻る | |
010179 | 110 | マップを切り替える度にランダムに変動 用途不明 | |
01017B | 111 | 選択肢の出るメッセージウィンドウで変動する 0x01 上から1つ目を選択 0x02 上から2つ目を選択 0xFF 選択をキャンセルしてウィンドウを閉じる ショップ、修理、処分、装備回収でもキャンセル後0xFFになる | |
01017E | 113 | クリア回数(初期値0、クリアする度に+1、255以降は変化なし) 0の状態でクリアしてセーブすると「クリアデータ」になる。 1以上でクリアしてセーブすると「クリアデータ2」になる。 | |
010180 | 114 | 初期値0x00 用途不明 | |
010181 | 114 | 初期値0x01 用途不明 | |
010182 | 115 | 初期値0x00 用途不明 | |
010183 | 115 | 初期値0x02 用途不明 | |
010184〜010187 | 仲間になった事がある人 | 装備回収できるキャラのビットフラグ フラグが立つタイミングは、シナリオ開始時にいるか加入した時 |
01018c | タイトル画面カウント | タイトル画面でNEW GAMEの表示が出た瞬間に0x29になり、120F毎に1減少。 0x00になるとデモムービーが流れる。 |
01019C〜0101A3 | 年表 | ビットフラグで管理 シナリオを進めると徐々にフラグが立っていく |
0101AC〜 | 仲間の所在・状態フラグ | そのシナリオでパーティに加入するキャラのフラグ シナリオ開始時にパーティいない、又はいない場合が存在するキャラのみが対象 話しかけた際の会話内容や加入するかどうかはシナリオ側のフラグも影響 |
0101CC〜0101EB | 修得技術(クリア時) | エンディングの修得技術一覧が表示されるときに01003C〜01005Bのフラグが書き込まれる |
0101EC〜01022F | シナリオフラグ | フラグが2バイトに亘るシナリオは1のみ共通フラグの対象 町シナリオの出現条件などで参照される場合、0x00、0x01、0x02以外の数値になっているとクリア済として扱われる バグを活用するならJPを調整してアドレス偶数ならアイテムコード0x02のキノコ、奇数なら耐久度2のアイテムを埋め込む事でそのシナリオが出せる。 |
01026C | 232 | シナリオクリア数 | シナリオをクリアした数が書き込まれる 町シナリオは含まない 全く同じシナリオをクリアしてもカウントされるが、0xFFになるともう加算されない |
01026D〜(01036B) | 232〜(359) | クリアしたシナリオのコード | 01026C+加算後のシナリオクリア数のアドレスに、クリアしたシナリオのコードを書き込む 装備のJP参照バグによって、シナリオクリア数を弄れば狙ったアドレスにシナリオクリア時のコードを入れることが出来るが、 シナリオクリア数が0xFF(255)になると、シナリオコードは書き込まれない 本来想定されてない数値までシナリオクリア数を伸ばせるため、宝箱等のフラグの範囲と被ってしまうが、 これによってJPを成長させなくてもバグらせることが出来るメモリ領域が増える |
01032C?〜01034B? | ギミックなどに関するフラグ | 現在分かってるとこだけ 取るとフラグが立つ モンスターの場合フラグを消すと再戦可能 |
01034C〜01036B | 宝箱のフラグ | 取るとフラグが立つ モンスターとセットの場合フラグを消すと再戦可能 |
0103AC〜0103AF | 392 393 | 時間 | 1加算されるのに 1/60sec |
0103B4〜0103B5 | 396 | 戦闘場面 | モンスターとの戦闘前にコードが書き込まれ戦闘後も残る。 |
0103B6 | 397 | 乱数補正値 | 戦闘後もここに書き込まれて記録される この数値をバグによって書き換えた場合、最大255(成功率+25%相当)の補正値が戦闘時に有効となる 判定失敗で上限の100、閃きの場合0になるが、補正値255の場合は1度合成や成長に成功しても、127で上限を超えたまま |
0103B7 | 397 | ??? | ゲーム開始時からずっと0x08のまま 用途不明 |
0103B8〜0103BB | 398 399 | 所持ロール | 全32ビット |
0103BC | 400 | 戦闘突入時にダッシュしていたかどうか | 戦闘前に状態が書き込まれ戦闘後も残る。 0x00 歩行or停止 0x01 ダッシュ |
0103BD | 400 | 敵から接触?していたかどうか | 戦闘前に状態が書き込まれ戦闘後も残る。 |
0103BE | 401 | 主人公の向き | 戦闘前に状態が書き込まれ戦闘後も残る。コンバットでは常に0x00下向き 0x00 下、0x01 左下、0x02 左、0x03 左上 0x04 上、0x05 右上、0x06 右、0x07 右下 |
0103BF | 401 | 敵の向き | 戦闘前に状態が書き込まれ戦闘後も残る。コンバットでは向かってきた方向に等しい 向きに対応する数値は主人公と同じ |
0103C0〜0103D3 | 402 〜411 | 主人公名(文字コード) | 最大10文字。1文字につき2バイトの文字コードを使用している |
0103D4〜0103D7 | 412 413 | 所持チップ | |
0103D8〜0103DB | 414 415 | チップ流通量 | |
0103DC〜0103DD | 416 | 現在の年 | |
0103DE | 417 | 戦闘BGM | コンバットのシナリオを選択したり、モンスターのいるマップに入ったり、一部の固定敵と戦闘開始・終了する時などに書き換えられる 曲のコードが書き込まれるがゲーム開始時は0x0F Feldschlacht Iが標準となっている 状況によってはバグってフリーズするので注意 |
0103DF | 417 | 戦闘をまたいで参照されるデータ | エッグの形態撃破フラグやコンバットの両軍の戦死者、メガリスビーストの残りHP等 |
0103E0 | 418 | 戦闘勝利BGM | 0103DEの戦闘BGMと同じく曲のコードが書き込まれるが、こちらはシナリオ開始時以外に書き込まれることは少ない。 最後のメガリスの将魔戦開始や勝利時にも書き込まれる。 戦闘BGMと勝利BGMは適切な組み合わせにならないとバグるので注意(水の将魔を倒さずに獣の将魔に勝利したときや、64バグで水の将魔と2回戦ったときにバグるのはこの辺が原因) |
010400〜 | キャラクターのステータス | 1人分のデータが0x70 バグについては現状の最大JP理論上限は430で届く アドレスは0103F8までなので有効範囲には及ばない |
01300A | フィールドの彩度(赤) | 標準は0x80、メニューを開いている時0x40 |
01300B | フィールドの彩度(緑) | 標準は0x80、メニューを開いている時0x40 |
01300C | フィールドの彩度(青) | 標準は0x80、メニューを開いている時0x40 |
01309A | 主人公の彩度(赤) | 標準は0x80 |
01309B | 主人公の彩度(緑) | 標準は0x80 |
01309C | 主人公の彩度(青) | 標準は0x80 |
戦闘開始時に1度、アドレス1F1770から0x8DDC分のメモリ領域がクリア(全て0x00になる)され、それから戦闘中のパラメータが書き込まれていく。
1F1764 | エンカウントパターン | 16パターンあり、0x00〜0x0Fで1〜16 | |
1F1768 | 配置パターン | 8パターンあり、0x00〜0x07で1〜8 | |
1F1770 | 戦闘での様々なフラグ | 4バイトで管理 まだほとんど分かっていない 0x00000001 キー入力受付 0x00000008 ポーズ中 0x00008000 この戦闘では閃き不可能(コンバット等) | |
1F177C | フレームカウンタ | コマンド入力終了時や敵の行動に切り替わった時などにリセット | |
1F1780 | 経過ターン数 | 1ターン目は0 | |
1F4C00〜 | 戦闘時のキャラクターのパラメータ | データサイズは0x1F0 味方隊列1〜4→敵隊列1〜4の順に並んでいる アドレス右の数字はオフセットアドレス | |
1F4C00 | 000 | キャラクターの状態フラグ | 0x00000001:存在フラグ 0x00000002:グラフィック表示フラグ 0x00000040:昏睡(LP0)フラグ 0x00000200:武器欄1の武器使用 0x00000400:武器欄2の武器使用 0x00020000:身を守る状態 0x00200000:無敵フラグ(HPが0にならない) 0x00400000:回避技使用可能フラグ(敵はこのフラグが無いとディフレクトを出せない) |
1F4C12 | 012 | 使用武器フラグ | 0x0001:武器欄1 0x0002:武器欄2 0xFFFF:使用武器無し |
1F4C4C | 04C | X座標位置 | リアルタイム変動 |
1F4C4E | 04E | XY方向? | ?? |
1F4C50 | 050 | Y座標位置 | リアルタイム変動 |
1F4C54 | 054 | X方向?? | ?? |
1F4C56 | 056 | Z座標位置 | リアルタイム変動 |
1F4D08〜1F4D1B | 0108 | 名前 | 最大10文字。1文字につき2バイトの文字コードで格納されている |
1F4D1C | 11C | キャラ名 | そのキャラクター名のコードが格納されている |
1F4D1D | 11D | キャラグラフィック | そのキャラクターのコードが格納されている |
1F4D1E | 11E | グラフィック? | |
1F4D1F | 11F | グラフィック? | |
1F4D20 | 120 | 性別と種族属性 | |
1F4D21 | 121 | 防具装備部位フラグ | 0x01体術? 0x02戦闘中使用不可 0x04ツール 0x08装飾 0x10足 0x20腕 0x40頭 0x80体 |
1F4D22 | 122 | ??? | |
1F4D23 | 123 | キャラのコード | 敵の場合データが何番目に格納されているか |
1F4D24 | 124 | 所持CR | |
1F4D28 | 128 | 現在HP | |
1F4D2C | 12C | 最大HP | |
1F4D30 | 130 | 現在LP | |
1F4D32 | 132 | 最大LP | |
1F4D34 | 134 | お気に入り境界 | |
1F4D36 | 136 | アイテムのJP増加補正合計 | |
1F4D38 | 138 | 現在の残WP | |
1F4D3A | 13A | 戦闘開始時の残WP | |
1F4D3C | 13C | 現在の最大WP | |
1F4D3E | 13E | 戦闘開始時の最大WP | |
1F4D40 | 140 | WP減少補正 | |
1F4D42 | 142 | 回復WP | |
1F4D44 | 144 | 現在の残JP | |
1F4D46 | 146 | 戦闘開始時の残JP | |
1F4D48 | 148 | 現在の最大JP | |
1F4D4A | 14A | 戦闘開始時の最大JP | |
1F4D4C | 14C | JP減少補正 | キャラ固有の数値と、金属含む装備の合計 |
1F4D4E | 14E | 回復JP | |
1F4D50 | 150 | 状態異常フラグ | 0x00000001:行動不能 0x00000002:スタン 0x00000004:強制対象変更 0x00000020:瀕死 0x00000040:戦闘不能 0x00000080:昏睡 0x00000100:眠り 0x00000200:眠り(ナイトメア) 0x00000400:眠り? 0x00000800:マヒ 0x00004000:毒 0x00008000:石化 0x00010000:恐怖 0x00020000:混乱 0x00040000:魅了 0x00080000:狂戦士 0x01000000:リヴァイヴァ 0x02000000:凍結 0x08000000:再生 0x20000000:ガードビースト |
1F4D54 | 154 | 肉体的ステータス異常値 | マヒ、眠りの深さ 異常に掛かった時に100になる |
1F4D55 | 155 | 精神的ステータス異常値 | 精神の異常の深さ 異常に掛かった時に100になる |
1F4D58 | 158 | Morale | |
1f4D5A | 15A | Psycho | |
1f4D5C | 15C | Quick | |
1F4D60 | 160 | Quick(1ターン) | |
1F4D62 | 162 | Morale(1ターン) | |
1F4D64 | 164 | Psycho(1ターン) | |
1f4D68 | 168 | Weapon1 | |
1f4D6A | 16A | Weapon2 | |
1F4D6C | 16C | Defence | |
1F4D6E | 16E | Magic | |
1F4D72 | 172 | 戦闘時使用技系統フラグ | 02:体術 04:剣 08:斧 10:杖 20:槍 40:弓 |
1F4D73 | 173 | 戦闘時使用術系統フラグ | 01:樹 02:石 04:炎 08:水 10:音 20:獣 |
1F4D74 | 174 | 未分類の技Lv | ためるや身を守る等 |
1F4D75 | 175 | 体術Lv | |
1F4D76 | 176 | 剣Lv | |
1F4D77 | 177 | 斧Lv | |
1F4D78 | 178 | 杖Lv | |
1F4D79 | 179 | 槍Lv | |
1F4D7A | 17A | 弓Lv | |
1F4D7B | 17B | 未使用の技Lv | |
1F4D7C | 17C | 樹Lv | |
1F4D7D | 17D | 石Lv | |
1F4D7E | 17E | 炎Lv | |
1F4D7F | 17F | 水Lv | |
1F4D80 | 180 | 音Lv | |
1F4D81 | 181 | 獣Lv | |
1F4D82 | 182 | 未解明Lv | |
1F4D83 | 183 | 未使用の術Lv | |
1F4D94 | 194 | 武器欄 | |
1F4D95 | 195 | 武器欄耐久 | |
1F4D96 | 196 | 武器盾欄 | |
1F4D97 | 197 | 武器盾耐久 | |
1F4D98 | 198 | 防具1 | |
1F4D99 | 199 | 防具1耐久 | |
1F4D9A | 19A | 防具2 | |
1F4D9B | 19B | 防具2耐久 | |
1F4D9C | 19C | 防具3 | |
1F4D9D | 19D | 防具3耐久 | |
1F4D9E | 19E | 防具4 | |
1F4D9F | 19F | 防具4耐久 | |
1F4DA0 | 1A0 | 体術装備欄 | |
1F4DA1 | 1A1 | 体術装備耐久 | |
1F4DA2 | 1A2 | 空装備欄? | |
1F4DA3 | 1A3 | 空装備欄耐久? | |
1F4DA4 | 1A4 | 地形1 | |
1F4DA5 | 1A5 | 地形1耐久 | |
1F4DA6 | 1A6 | 地形2 | |
1F4DA7 | 1A7 | 地形2耐久 | |
〜 | |||
1F4DB2 | 1B2 | 地形8 | |
1F4DB3 | 1B3 | 地形8耐久 | |
1F4DC4 | 1C4 | 装備技術1 | |
1F4DC6 | 1C6 | 装備技術2 | |
1F4DC8 | 1C8 | 装備技術3 | |
1F4DCA | 1CA | 装備技術4 | |
1F4DCC | 1CC | 装備技術5 | |
1F4DCE | 1CE | 装備技術6 | |
1F4DD0 | 1D0 | 装備技術7 | |
1F4DD2 | 1D2 | 装備技術8 | |
1F4DD4 | 1D4 | 斬防 | 術力増強補正を含まない値。以下同 |
1F4DD5 | 1D5 | 打防 | |
1F4DD6 | 1D6 | 射防 | |
1F4DD7 | 1D7 | 熱防 | |
1F4DD8 | 1D8 | 冷防 | |
1F4DD9 | 1D9 | 電防 | |
1F4DDA | 1DA | 光防 | |
1F4DDB | 1DB | 状防 | |
1F4DDC | 1DC | 術力増強?と無効特性 | 0x00〜0x07 術力増強?良く分かってない 0x08凝視 0x10音波 0x20水 (0x40有翼) 0x80地上 |
1F4DDE | 1DE | 賢さ | パーティメンバーは全員100(0x64) |
1F4DDF | 1DF | ステータス耐性 | |
1F4DE0 | 1E0 | ロール | |
1F4DE1 | 1E1 | 行動順 | 0x01〜0x04 0x00で自己最速 |
1F4DE2 | 1E2 | 体勢 | 0x00:無 0x01:備え 0x02:不動 0x03:接近 0x04:離脱(デュエル限定) |
1F4DE3 | 1E3 | 装備武器(グラフィック) | |
1F4DE4 | 1E4 | アニマ使用可能フラグ 樹 | フラグがあると0x80、ない場合0x00 |
1F4DE5 | 1E5 | 石 | |
1F4DE6 | 1E6 | 炎 | |
1F4DE7 | 1E7 | 水 | |
1F4DE8 | 1E8 | 音 | |
1F4DE9 | 1E9 | 獣 | |
1F4DEC | 1EC | 行動パターンの先頭アドレス | 敵の行動テーブルの開始アドレス |
1F6494 | このターンの全体の行動数 | 回避技・時間差発動技も含まれるが、「身を守る」「つめ寄る」は含まれない ターン終了時の処理にも使われる | |
1F6498 | このターンの経過行動数 | 誰かが行動するたびに加算される | |
以下、1回分の行動のパラメータ データサイズは0x388 速度決定後に先に行動するものから順に並び替えられる。 アドレス右の数字はオフセットアドレス | |||
1F649C | 0000 | 行動の識別フラグ | 0x0001:カウンター? 0x0002:連携 0x0004:閃き 0x0008:アーツ合成 0x0010:カスタムアーツ 0x0020:回避不可? 0x0040:回避技 0x0080:反応射撃 0x0200:Timely Action(味方) 0x0400:Timely Action(敵) 0x0800:相抜け |
1F649E | 0002 | 行動に関わる人数 | 行動する者と対象の合計の数 |
1F64A0 | 0004 | 行動するキャラの隊列 | 味方は0〜3、敵は4〜7 |
1F64A2 | 0006 | 使用技術 | |
1F64A4 | 0008 | 使用アイテム | アイテムコード |
1F64A6 | 000A | 相抜け回数? | |
1F64A8 | 000C | 使用武器の装備部位 | 0x0000:武器欄1 0x0001:武器欄2 0xFFFF:武器欄のアイテムを使わない |
1F64AA | 000E | デュエルの速度補正 | |
1F64AC | 0010 | 連携元の行動の順番 | |
1F64AE | 0012 | 連携時の対象の隊列?連携始点の隊列? | |
1F64B0 | 0014 | 対象の隊列 | 0x0010:味方全体フラグ 0x0020敵全体フラグ 0x0040それ以外の範囲攻撃フラグ |
1F64B2 | 0016 | 使用コマンド数 | |
1F64B3 | 0017 | カスタムアーツの種類 | 0x01:高速 0x02:最速 0x03:反撃 0x04:不動 |
1F64B4 | 0018 | ??? | |
1F64B8 | 001C | 技の消費WP | |
1F64BA | 001E | 技・術の消費JP | |
1F64BC | 0020 | 技・術の使用者 | 使用者の隊列が格納される |
1F64BE | 0022 | 技・術の対象 | 対象の隊列が格納される |
1F64C0 | 0024 | 他の連携したキャラと対象 | 連携に関っている全てのキャラの隊列が書き込まれる |
1F64D0 | 0034 | 対象へ与える効果のフラグチェック項目 | 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(4バイト) 0x00000001:HP変動 0x00000002:LP変動 0x00000004:WP変動 0x00000008:JP変動 0x00000010:状態異常変動 0x00000020:能力値低下(固定の数値) 0x00000040:回復 0x00000100:ガードビースト発動 0x00000200:ミス 0x00000400:状態異常、能力値変化付加 0x00002080:盾発動 0x00008000:種族属性特 0x00010000:一撃必殺 0x00100000:固定能力値変化フラグ 0x00200000:変動能力値変化フラグ 0x02000000:体勢(デュエル限定) 0x08000000:耐性あり(水、音波、地上、凝視) |
1F64F8 | 005C | 変動HP量 | 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(4バイト) 連携時の個別のダメージもこのアドレスを調べれば分かる |
1F6520 | 0084 | 変動LP量 | 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(2バイト) |
1F6534 | 0098 | 変動WP量 | 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(2バイト) |
1F6548 | 00AC | 変動JP量 | 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(2バイト) |
1F655C | 00C0 | 状態異常付与フラグ | 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(4バイト) 0x00000002:スタン 0x00000004:強制対象変更 0x00000100:眠り 0x00000200:眠り(ナイトメア) 0x00000800:マヒ 0x00004000:毒 0x00010000:恐怖 0x00020000:混乱 0x00040000:魅了 0x00080000:狂戦士 0x01000000:リヴァイヴァ 0x02000000:凍結 0x08000000:再生 0x20000000:ガードビースト |
1F6584 | 00E8 | 変動能力値変化量 | 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(8バイト) XXXXYYYYZZZZ0000というように各能力値2バイトで管理されている XXXX:Morale変化量 YYYY:Psycho変化量 ZZZZ:Quick変化量 |
1F65D4 | 0138 | 変動能力値(1ターン継続)変化量 | デュエルで使用するコマンドのターン終了までの効果の能力値変化のフラグ 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(8バイト) 〜XXXXYYYYZZZZ0000 XXXX:Quick(1ターン)変化量 YYYY:Morale(1ターン)変化量 ZZZZ:Psycho(1ターン)変化量 |
1F6624 | 0188 | 固定能力値変化量 | 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(8バイト) XXXXYYYYZZZZzzzz XXXX:Weapon1変化量 YYYY:Weapon2変化量 ZZZZ:Defence変化量 zzzz:Magic変化量 |
1F6674 | 01D8 | 自分の体勢 | 0x00:無 0x01:備え 0x02:不動 0x03:接近 0x04:離脱(デュエル限定) |
1F6675 | 01D9 | 対象の体勢 | (デュエル限定) |
1F6680 | 01E4 | 計算後の現在HP | 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(4バイト) このアドレスに格納された時点では上限下限の切捨てが行われない以下のパラメータも同じ |
1F66A8 | 020C | 計算後の現在LP | 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(2バイト) |
1F66BC | 0220 | 計算後の現在WP | 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(2バイト) |
1F66D0 | 0234 | 計算後の現在JP | 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(2バイト) |
1F66E4 | 0248 | 判定後の状態異常 | 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(4バイト) |
1F670C | 0270 | 計算後の変動能力値 | 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(8バイト) |
1F675C | 02C0 | 計算後の変動能力値(1ターン継続) | 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(8バイト) |
1F67AC | 0310 | 計算後の固定能力値 | 自分→対象の順で、対象が複数の場合隊列順に個別に格納される(8バイト) |
1F67FC | 0360 | 自分の体勢 | (デュエル限定) |
1F67FD | 0361 | 対象の体勢 | (デュエル限定) |
1F6808 | 036C | エフェクトの何か | アドレス0x1E9A48〜の数値 よくわかってない |
1F6810 | 0374 | 使用コマンド数 | (デュエル限定) |
1F6814 | 0378 | コマンド毎の使用技・術 | 最大4コマンド分(1バイト)(デュエル限定) |
1F6818 | 037C | コマンド毎の使用アイテム装備位置 | 最大4コマンド分(2バイト)(デュエル限定) 0x0000〜0x0001:武器欄1、2 0x0002〜0x0005:防具欄1〜4 0x0006:体術武器欄 0x0008〜0x000F:フィールドアイテム |
1F6820 | 0384 | カスタムアーツ接尾語 | 0x0001:セピア 0x0002:ブライト 0x0003:シェイディ(デュエル限定) |
1F9EAC〜1F9ECB | 戦闘時の技術修得フラグ | 01003C〜01005Bの技術修得フラグが戦闘前に読み込まれ、戦闘中に該当技・術を閃き、合成、学習するとフラグが立つ。 戦闘後に01003C〜01005Bに書込まれる。 | |
1F9ED0 | 交渉手段のコード | 01:敗走する 02:逃走する 03:見逃してもらう 04:退却する 05:停戦交渉 06:去る 07:追い払う 08:見逃す | |
1F9ED4 | 交渉手段のテーブル | 戦闘データ別に設定されている4つのテーブルの上から何番目か | |
1F9ED8 | 先制補正 | 4バイト 1ターン目、交渉失敗時に変動する 1ターン目に交渉失敗した場合重複する | |
1F9EFC | 戦闘中の乱数補正値 | 0103B6の値が戦闘前に読み込まれ、戦闘中の行動によってこのアドレスの値が増減する。 戦闘後に最終的な値が0103B6に書込まれる。 | |
1F9F30 | 0x80 | エッグ第1形態撃破フラグ | このフラグがないと5ターン毎の形態変化を起こさない |
0x40 | エッグ最終形態移行フラグ | 最終形態になるとこのフラグが立つ このフラグがあることでエッグを倒して戦闘終了になる | |
0x20 | |||
0x10 | |||
0x08 | エッグ樹形態フラグ | 樹形態に変化する事が決定すると、このフラグが立つ。 この状態で樹形態を倒すことで、0103DFの0x80の樹形態撃破フラグが立つ 何故か第1形態撃破後にもこのフラグを立てる処理があり、 もし形態変化で樹形態が選ばれると、現在の形態が樹形態であると見なされ、樹形態のデータが読み込まれない。 そのままターン終了前の状態確認の処理に移り、樹形態が戦闘不能になったと見なされ、 樹形態撃破フラグが立つ。これが形態スキップバグの原因。 | |
0x04 | エッグ石形態フラグ | 石形態に変化する事が決定すると、このフラグが立つ。 この状態で石形態を倒すことで、0103DFの0x40の石形態撃破フラグが立つ | |
0x02 | エッグ炎形態フラグ | 炎形態に変化する事が決定すると、このフラグが立つ。 この状態で炎形態を倒すことで、0103DFの0x20の炎形態撃破フラグが立つ | |
0x01 | エッグ水形態フラグ | 水形態に変化する事が決定すると、このフラグが立つ。 この状態で水形態を倒すことで、0103DFの0x10の水形態撃破フラグが立つ | |
1F9F31 | 0x80 | エッグ音形態フラグ | 音形態に変化する事が決定すると、このフラグが立つ。 この状態で音形態を倒すことで、0103DFの0x08の音形態撃破フラグが立つ |
0x40 | エッグ獣形態フラグ | 獣形態に変化する事が決定すると、このフラグが立つ。 この状態で獣形態を倒すことで、0103DFの0x04の獣形態撃破フラグが立つ | |
0x20 | エッグ第2形態フラグ | 第2形態に変化する事が決定するとこのフラグが立つ この状態で第2形態を倒すことで0103DFの0x02の第2形態撃破フラグが立つ | |
0x10 | エッグ第3形態フラグ | 第3形態に変化する事が決定するとこのフラグが立つ この状態で第3形態を倒すことで0103DFの0x01の第3形態撃破フラグが立つ | |
0x08 | エッグ最終形態フラグ | 全形態撃破でフラグが立つ | |
0x04 | |||
0x02 | |||
0x01 | |||
1FA284 | 味方パーティのロールフラグ | フラグの並びは0103B8〜0103BBのビットフラグと同じ。 戦闘に参加しているメンバーのロールのフラグのみ | |
1FA288 | 敵パーティのロールフラグ | フラグの並びは0103B8〜0103BBのビットフラグと同じ。 戦闘に参加しているメンバーのロールのフラグのみ | |
1FA53C〜1FA543 | 戦闘時の敵の学習レベル | 戦闘前に010014〜から読み込まれ、戦闘中に該当技・術を使うと1/64の確率でフラグが立つ。 戦闘後に010014〜に書込まれる。 |
このバグを起こすためにはまず、アイテム欄を64枠分全てを、「武器か防具どちらか片方で統一」し、
装備可能アイテムが「右側のリストに64個表示される」状態にする。
その状態で、武具装備メニューの右側のリストに表示される、アイテムの「64番目」にカーソルを持っていくと、
アイテム名は64個目のものなのに、アイコンと耐久度は「表示されなかったり全く別のものが表示される」ことがある。
これは本来の正常な64番目のアイテムのアドレスである0x0001011Aではなく、
アイテム欄のアドレス0x0001009Cに「最大JP×2」を足したアドレスを参照して、
そこから取り出した数値を元に、アイテムと耐久度として表示している事が原因のバグ。
アイテム名だけ正常である理由は、
アイテム名を表示するために参照されるコードは装備欄にカーソルがある状態で書き込まれるが、
アイコンと耐久度は右側の装備可能アイテムリストにカーソルが写った瞬間に参照されるので、
その前に64番目のアイテムの番号のアドレスに最大JPが書き込まれてしまっているため。
このアイテムを装備することで、通常では入手不可能なアイテムを入手できたり、
それによって外れたアイテムは「そのアイテム欄の開始アドレスから最大JP分離れたアドレス」に格納され、
ゲーム内のコンフィグやシナリオ出現フラグ等のまったく無関係なパラメータの状態を書き換えてしまい、
ゲームの進行を無視したシナリオを出現させたり、最悪フリーズする。
リマスター版では修正されている。
このバグに関連しているデータアドレス
装備可能アイテムが「右側のリストに64個表示される」状態にする。
その状態で、武具装備メニューの右側のリストに表示される、アイテムの「64番目」にカーソルを持っていくと、
アイテム名は64個目のものなのに、アイコンと耐久度は「表示されなかったり全く別のものが表示される」ことがある。
これは本来の正常な64番目のアイテムのアドレスである0x0001011Aではなく、
アイテム欄のアドレス0x0001009Cに「最大JP×2」を足したアドレスを参照して、
そこから取り出した数値を元に、アイテムと耐久度として表示している事が原因のバグ。
アイテム名だけ正常である理由は、
アイテム名を表示するために参照されるコードは装備欄にカーソルがある状態で書き込まれるが、
アイコンと耐久度は右側の装備可能アイテムリストにカーソルが写った瞬間に参照されるので、
その前に64番目のアイテムの番号のアドレスに最大JPが書き込まれてしまっているため。
このアイテムを装備することで、通常では入手不可能なアイテムを入手できたり、
それによって外れたアイテムは「そのアイテム欄の開始アドレスから最大JP分離れたアドレス」に格納され、
ゲーム内のコンフィグやシナリオ出現フラグ等のまったく無関係なパラメータの状態を書き換えてしまい、
ゲームの進行を無視したシナリオを出現させたり、最悪フリーズする。
リマスター版では修正されている。
このバグに関連しているデータアドレス
開始アドレス | 1つのデータの大きさ | 内容 |
01009C〜 | 2Byte | アイテム欄の上から順にアイテムのコードと耐久度が格納されている領域(セーブによって記録される) |
097B2E〜 | 2Byte | 右側の装備可能アイテムリストに表示されるアイテムを識別して並び替えて格納している領域 |
097D32〜 | 2Byte | ↑の装備可能アイテムリストに表示されるアイテムを上から順にアイテム欄の何番目にあるのかを格納している領域 |
097DB0〜 | 2Byte | 武具装備メニューに表示される際に参照される最大JPの数値を格納するアドレス*1 (↑のアイテム欄の何番目にあるのかを参照する際のアドレスの64番目と同じアドレス!) |
097DB2〜 | 2Byte | 武具装備メニューに表示される際に参照される回復JPの数値を格納するアドレス |
戦闘時のプログラムには戦闘時のパラメータ読み込み開始前に主人公の状態をチェックする処理が存在し、
それによって、主人公がメインパーティにいない、主人公のHPかLPが0のいずれかの条件を満たす場合、
敵の編成や敵味方の配置、敵味方の戦闘時の全てのパラメータ、
習得済みアーツや学習フラグ、乱数補正値といった戦闘中に参照されるほぼ全てのRAM領域のデータが書き込まれずにそのまま戦闘終了処理へ移行する。
通常そのような場合は全滅時と同じようにタイトル画面に切り替わるのだが、
全滅後もゲームが続行可能な戦闘の場合には、
戦闘画面に切り替わるエフェクトの後に即戦闘終了してマップに戻る。
この時一見何事もなく戦闘が飛ばされたかのように見えるが、
戦闘終了処理のプログラムには戦闘終了時の味方のパラメータ、習得技術、学習などを記録領域へ書き込む処理が含まれ、
味方のパラメータについては何も読み込まれていないために、そのキャラクターが存在するというフラグの参照で弾かれて書き込まれないのだが、
技術修得フラグ、敵の学習レベル、乱数補正値に至っては、戦闘開始前に読み込まれていないため全くの空白であるのに
その空欄がコピーされて書き込まれ、すべてのフラグが消失する。
特に学習フラグのアドレス0x010014の0x01のビットフラグはゲーム開始時から存在するものの、
アーツの使用によって学習することは不可能でこのバグによって消えてしまうとゲーム内の操作では元に戻せない。
この状況を再現するためには上記の64番目の装備を交換するバグを駆使して主人公をメインパーティから下げるか戦闘前にHPかLPを0にする必要がある。
現在、最後のメガリスの将魔とのデュエルと夜の街でコーデリアを潜入させた際のアレクセイ手下戦、南の砦のデュエルでこのバグの発生を確認できた。
それによって、主人公がメインパーティにいない、主人公のHPかLPが0のいずれかの条件を満たす場合、
敵の編成や敵味方の配置、敵味方の戦闘時の全てのパラメータ、
習得済みアーツや学習フラグ、乱数補正値といった戦闘中に参照されるほぼ全てのRAM領域のデータが書き込まれずにそのまま戦闘終了処理へ移行する。
通常そのような場合は全滅時と同じようにタイトル画面に切り替わるのだが、
全滅後もゲームが続行可能な戦闘の場合には、
戦闘画面に切り替わるエフェクトの後に即戦闘終了してマップに戻る。
この時一見何事もなく戦闘が飛ばされたかのように見えるが、
戦闘終了処理のプログラムには戦闘終了時の味方のパラメータ、習得技術、学習などを記録領域へ書き込む処理が含まれ、
味方のパラメータについては何も読み込まれていないために、そのキャラクターが存在するというフラグの参照で弾かれて書き込まれないのだが、
技術修得フラグ、敵の学習レベル、乱数補正値に至っては、戦闘開始前に読み込まれていないため全くの空白であるのに
その空欄がコピーされて書き込まれ、すべてのフラグが消失する。
特に学習フラグのアドレス0x010014の0x01のビットフラグはゲーム開始時から存在するものの、
アーツの使用によって学習することは不可能でこのバグによって消えてしまうとゲーム内の操作では元に戻せない。
この状況を再現するためには上記の64番目の装備を交換するバグを駆使して主人公をメインパーティから下げるか戦闘前にHPかLPを0にする必要がある。
現在、最後のメガリスの将魔とのデュエルと夜の街でコーデリアを潜入させた際のアレクセイ手下戦、南の砦のデュエルでこのバグの発生を確認できた。
最後のメガリスの獣・音・石・樹の各将魔は、戦うを選択した瞬間に主人公フラグが一時的に「サブパーティの先頭のキャラ」に切り替わり、
さらに該当キャラが一時的にメインパーティの1番目に置き換わることで、「主人公不在=主人公死亡の状態で戦闘突入したと看做されない」ように処理されている。
そして戦闘が終わった後は主人公フラグがジニーに戻り、切り替わる前に一時的にパーティの枠から外れていたキャラの内、
加入フラグの値が0xA0でない者がパーティに戻るという処理が内部的に行われている。
このために将魔とデュエルするキャラのHPかLPを0にする方法しか取れない。
デュエル不可のワッツ、グレタ、ウィリアムをサブパーティの先頭に置くと何故か代わりにウィルが出てくる仕様を利用して、
1戦目敗北(戦闘後に最大HPの1/4回復後パーティから抜ける)→2戦目敗北(初めからパーティに居ない為回復しない)→3戦目(戦闘開始時にHP0でバグ発生)
という手順を踏むか、64交換バグで年を変化させて最大HPを0にしたキャラを戦闘させるという方法によってバグが起こせる。
さらに該当キャラが一時的にメインパーティの1番目に置き換わることで、「主人公不在=主人公死亡の状態で戦闘突入したと看做されない」ように処理されている。
そして戦闘が終わった後は主人公フラグがジニーに戻り、切り替わる前に一時的にパーティの枠から外れていたキャラの内、
加入フラグの値が0xA0でない者がパーティに戻るという処理が内部的に行われている。
このために将魔とデュエルするキャラのHPかLPを0にする方法しか取れない。
デュエル不可のワッツ、グレタ、ウィリアムをサブパーティの先頭に置くと何故か代わりにウィルが出てくる仕様を利用して、
1戦目敗北(戦闘後に最大HPの1/4回復後パーティから抜ける)→2戦目敗北(初めからパーティに居ない為回復しない)→3戦目(戦闘開始時にHP0でバグ発生)
という手順を踏むか、64交換バグで年を変化させて最大HPを0にしたキャラを戦闘させるという方法によってバグが起こせる。
まず主人公がコーデリアでないとアレクセイ手下戦は発生しない。
内部処理的には主人公のアドレス0x010009の値がコーデリアのコードである0x08になっていなければいけない為、
0x0101F1の下位2ビットが0x01の状態でアレクセイの手下に話しかけて夜の街でのマップ上のキャラがコーデリアにする必要がある。
HPかLPを0にするよりシナリオフラグを弄って事前に仲間に加えたコーデリアをサブパーティに下げて話しかけた方が圧倒的に楽。
主人公をサブに下げた状態でアレクセイ手下以外と戦闘になると、
主人公不在=主人公死亡とみなされ、ゲームオーバー扱いとなり即タイトル画面になってしまうので注意。
内部処理的には主人公のアドレス0x010009の値がコーデリアのコードである0x08になっていなければいけない為、
0x0101F1の下位2ビットが0x01の状態でアレクセイの手下に話しかけて夜の街でのマップ上のキャラがコーデリアにする必要がある。
HPかLPを0にするよりシナリオフラグを弄って事前に仲間に加えたコーデリアをサブパーティに下げて話しかけた方が圧倒的に楽。
主人公をサブに下げた状態でアレクセイ手下以外と戦闘になると、
主人公不在=主人公死亡とみなされ、ゲームオーバー扱いとなり即タイトル画面になってしまうので注意。
コメントをかく