アップデート 2.224
2026/8/6
v2.224.0.0BETAMINOR
Seymour2026年8月2日
OPERATION DEMON WAVE 1+2: F8 DASHBOARD RESTORED +F7/F8 KEY ARBITRATION
- F8 ダッシュボードを復旧(ソースはツリー内に存在、接続だけが欠落):
StartInGameMenuDashboard()+StartUnXBoosterHook()をInstallHooksに追加(ゲート[dashboard] enabledのデフォルト ON — Config.cpp のkDefaultIniに追加)。InGameMenuDashboard.cpp/UnXBoosterHook.cpp/Config.cppを vcxproj に re-added(Config.cpp はプロジェクトに一度も存在せず、dashboard.enabledゲートも読まれていなかった)。 - キーの裁定(Wave 2):
dashboard.enabledでは、F8/INSERT は DASHBOARD に属する(単一オーナー)。InGameMenuProcessKeyは F8/INSERT をトグルせずに消費(ダッシュボード無効時はフォールバック)。F7(NativeMenu/F7_LeverApply)は UNTOUCHED。 - デプロイ由来の旧 UnX REMOVED(INC-002 — クラッシュ3/3で実証):
unx.dll/dxgi.dll/dxgi.ini/dxgi.dll.055508/dinput8 - Copia.dllをmodules\_unx_legacy_removed_20260802_*(復元可能なバックアップ)へ移動し、Steam AND_isolatedに置いた。 - ffx_addresses.h の新しい define:
RVA_FFX_DEBUG_FLAGS(0xD2A8F8)、RVA_FFX_PERMANENT_SENSOR、RVA_FFX_BATTLE_PARTICIPATION/RVA_FFX_AP_EARN(UnX の 0x1F10EA0/0x1F10EC4)。プレイ可能な シーモア は OFF(パーティー構造体アドレスは未検証 — RE 待ち。ブースターから apply は削除)。 - Hooks-EN のルールをダッシュボードに適用: 「F8 close」、「On/Off」、「Open/Closed」。ダッシュボードの
Log→DashLog(OutputDebugStringA — dllmain のLogは static)。 - ffx-hooks.ini モデルを
RuntimeTools/FfxHooksDll/ffx-hooks.iniに作成([dashboard] enabled=1付き)。 - ゲート: Release ビルドのエラー0件、バイナリ内のダッシュボード文字列(4/4)、Steam+
_isolatedへデプロイ(バックアップ.bak_20260802_184354)。RT2 は保留: F8 がダッシュボードを開き、F7 は保持され、ダッシュボードのチートが動作すること。 ### MINOR
v2.223.1.0
v2.224.0.1BETAPATCH
Seymour2026年8月2日
OPERATION DEMON WAVE 3: DIALOG SKIP ) — 3: を安全に移植(パッチではなくフック)
- 前版:
v2.224.0.0] DialogSkipHook.{h,cpp}((新規): UnXレガシーハードコードret 8パッチ( (RVA 0x30B040 —FFX_FmodVoice_ReadEventData@ 0x70B040, thiscallをで検証)の安全な移植: IDA): MinHook/PolyHook2 ターゲットの/;input.dialog_skip=1で即座に0を返す(ret 8と同じ効果、かつ設定ゲート付き) REVERSIBLE 技術情報 config-gated).- ダッシュボード:
Dialog Skip (voices)項目( (input.dialog_skip, デフォルトオフ)。 - ワイヤ:
InstallDialogSkipHook(g_base, LogLine)(ダッシュボードゲート内) InstallHooks (技術情報 - define:
RVA_FFX_FMODVOICE_READ_EVENT_DATA(0x30B040) 技術情報 ffx_addresses.h. - ゲート: Releaseビルド0エラー; バイナリの文字列; Steam +
_isolatedデプロイ(バックアップ185543). RT2: 項目で音声 ON, ダイアログがスキップ(クラッシュなし) OFF ; = バニラ動作。 ### MINOR
v2.224.0.2BETAREVISION
Seymour2026年8月2日
OPERATION DEMON: — : ウェーブ 4ドキュメントクローズ + RT2 スクリプト
- 前版:
v2.224.0.1] run_f8_rt2.ps1((新規): ブートスモーク F8 + チェック(ダッシュF7ボード//チート/ダイアログスキップ)— 閉じたエディタ、使い捨てセーブ、前に/afterハッシュが必要。F8_UNX_INCONSISTENCY_REGISTER((セッション3): INC-002/005 + P1/P2/P5/P7 RESOLVED; P3 ///; 部分(は既に不在) (v2.flag ; 記録 never-port (/自動更新/テクスチャ注入/スキャン) (KillMeNow/auto-update技術情報sig-scan).- SESSION_HANDOFF + PORT_STATUS: F8
Needs Testing— in-game RT2 ゲーム内はユーザー待ち(エディタ閉)。 - クリーンアップ:
ingame_menu_v2.flagはデプロイから既に不在(クリーン確認) (P3 技術情報 ### PATCH
v2.224.0.3BETAREVISION
Seymour2026年8月2日
OPERATION DEMON: post-F8 プラン — ffx-probe (§9) 経由の Tier 2 +RT2 チェック
- F7F8_RECONCILIATION_PLAN §9: UnX をデプロイから外したため、vtable[9](GetDeviceState)は ffx-probe.dll に戻る — in-process main-thread プローブ(FORCEBATTLE/SETINPUT/SOUNDCMD/READ/WRITE/CALL — Tier 2: a_ability/arms_rate/Encounter Table/IA/Aurora のキャリブレーション)。現在の状態: デプロイ内の OFF(
.RT2OFF)、ローダーは存在、ダッシュボードにはすでにplugins.ffx_probeアイテムがある。 run_f8_rt2.ps1: プローブ有効時の heartbeat チェック(hooked=1)。- ゲート: doc-only(REVISION)。デプロイは変更なし。 ### REVISION
v2.224.0.2
v2.224.0.3BETAREVISION
Seymour2026年8月2日
PPP DISPATCH TABLE: CYCLE CLOSED(コンシューマー+メインテーブル)
- コンシューマー PROVEN:
FFX_MagicHost_RelocatePppSection(0x7121D0) —a2 + 40*index(stride 40 = コード内の 0x28)。呼び出し側は&pppSysProgTblを渡す(0x72a8eapush offset pppSysProgTbl→ 0xC3A500、0x761b72)。各スロットの on-diskhandler_table_indexがテーブルエントリーポインターになり、ランタイムスロットは16B([0]=index、[1]/[2]=再配置済みポインター、件数は*(int16*)(record+0x26)) — pppSclMove T3 ウィンドウと一致。 - pppSysProgTbl @0xC3A500 = MAIN テーブル — 「progtbl」レイアウト(name@+0x00、fnMain@+0x08、fnExtra@+0x20)、エントリー418件(2026-07-31 の MAGIC ドキュメントと一致)。スロット0-11は pppAccele..pppColor で、Yonishi の順位付けハンドラーを持つ(pppSclMove T3 = スロット6の 0x75C090、pppScale = スロット10の 0x75D0D0、pppAngle = スロット9の 0x75CF20、pppSclAccele = スロット2の 0x75B9F0)。
- 前回からの修正: 0xC3A500 は名前ベクトルではない(NOT)(0xC3A4E0 ブロック = デバッグ文字列 END/CHR/MAP-G/MAT、
FFX_PppNameVectorの名称変更 REVERTED)。 - 2026-07-31 の MAGIC 名称変更を TO THE CANONICAL DB に反映: 0x716D20→FFX_Render_PppProgramProcessor_2、0x75B830→FFX_PppHandler_Accele、0x75B900→FFX_PppHandler_Accele_SetFromGlobalQ、0xC3E798→FFX_PppHostDispatchTable_AltQ、0xC86080→FFX_PppKeyholeDispatchTable。
- アルベドキャプチャー に progtbl レイアウト+メインテーブルを追加: 5テーブル、ハンドラー1191件を
scripts/ppp_dispatch_table.jsonに収録。ドキュメント:docs/reverse/PPP_DISPATCH_TABLE_RECONCILED_2026-08-02.md(第2パス)。 - C2 と完全なチェーン: on-disk の index → pppSysProgTbl + 40*index → エントリー(name+fn)。次は、ディスク→ランタイムの16Bスロットウィンドウ(T3)と145個のエイリアス。 ### PATCH
v2.224.0.2
v2.224.0.4BETAPATCH
Seymour2026年8月2日
F8 DISABLED ( — (ゲート `dashboard.enabled=false`) + +probe統合ドキュメント。 F8技術情報
- 前版:
v2.224.0.3] - 2箇所のゲートフリップ( + (Config.cpp kDefaultIni llmain
GetBool×2)— ダッシュボード/ブースター/が起動しない;DialogSkipHook 技術情報 InGameMenu が再 F8/INSERT び/オーナーになる(自然なフォールバック)。可逆(再アクティブ化 = フリップ + デプロイ)。 docs/reverse/FFX_F8_PROBE_CONSOLIDADO_2026-08-02.md((新規) F8 ( (ウェーブ 1-3 + ffx-probe (クローズ)+ (Tier 2)+ 再アクティブ化方法 + 保留項目。- Steam +
_isolatedデプロイ(バックアップ191908) Releaseビルド0エラー。 集中 技術情報 F7. ### REVISION
v2.224.0.5BETAPATCH
Seymour2026年8月2日
F7: FLICKER FIXED ( — : 修正(レバーワイヤの根本原因)+ 生ステッパー数値なし + REAL Difficultyレバー
- 前版:
v2.224.1.0] - FLICKER (技術情報 RT2 — ログ証拠付き根本原因): 行の確認がメニューを閉じた( (
CloseMenu→m.obj=0) BUTg_forceSubsystemはのまま ON — ゲームがメニューモード(=1) (0x13407E4で描画なしのまま = 交互レンダー = ちらつき画面(ログ:open→ 確認 → 2回目のでのみclose (force-gate off)技術情報 F7 →open...). 修正: ワイヤが確認時にg_forceSubsystemをクリアするようになった(g_nativeWantClose). - F7 技術情報 内で PresentTick — を押し続ける(またはスタックキー) F7 (と毎エッジでメニューをトグル = ちらつき。
- 「あるべきでない場所の数値」: RT_STEPPER が編集前に生
[0]を表示。 修正:g_rowEdited[]— ステッパー値が/後にのみ表示(トグル AFTER L/R (技術情報 [ON]/[OFF] / は常時可視)。 - REAL ifficultyレバー ((スタブだった): 新しい
F7_SetDifficultyLevel(0..5)(F7InLive) 技術情報g_cfg.diffGlobal(hpMul 1000/1150/1300/1500/1750/2000 — x1.00..x2.00) +F7_SaveConfig()— バトル開始自動適用が拾う。 battle-start auto-apply 技術情報 - ゲート: Releaseビルド0エラー; Steam +
_isolatedデプロイ(バックアップ193746). RT2 保留: → F7 確認 → ちらつきなしでメニューが閉じる; WITHOUT 初期 0 なし; Difficultyがバトルで適用。
v2.224.1.0BETAPATCH
Seymour2026年8月2日
F3.5 PART 2: DRAG GIZMO ) — .5 2: ) — .5 2: Auroraの(キャンバスでモンスターをドラッグ) RE: T3 : + : ウィンドウ実証 + エイリアス解読
- 前版:
v2.224.1.0] - noclipのGizmo (
scenes.ts,?edit=1) クリックで最も近いアクターを選択(投影ピッキング —clipFromWorldMatrix+ w-divide)w除算)、地面平面でドラッグ(アクターのy平面でアンプロジェクト、 y-plane, FFX, 行列逆数経由の↔noclip変換)、オーバーレイ(黄色リング + 指示)、キー S 保存 (POST/api/edits/<encId>への — ハブエンドポイント — スロットデルタ付き)と R セット ((バニラに戻す)。 Per-slot スロットごとのバニラベースをsetUpMonsters(に保存(前のサイドカーでも正しいデルタ)。 - ViewerShell: 編集パネルの「Gizmo 3D (arrastar なし キャンバス)」チェックボックス + の
&edit=1/0+ ギズモ状態を表示するステータス。 battle-preview URL 技術情報 - RE (技術情報: 16B T3 ウィン PROVEN 内で ハンドラー( pppSclMove 技術情報 (0x75C090 =
FieldMap_AccumulateDoubleLayerDelta_C)技術情報 技術情報a2+16..+28(技術情 T3record+0x10..+0x1Fウィンドウ)を読み、a1+160..+172. エイリアス解読: 418 エントリ pppSysProgTbl 技術情報 273一意名 + 145再 re-registrations ((ドキュメントの「145エイリアス」 MAGIC = 代替名ではなく繰り返されるハンドラー); 抽出器がfind_all_strings((領域内の368文字列)+isAliasフィールドを獲得。 - ゲート: noclip型チェッククリーン;
rsbuildOK; バンドル461.7bf8f17f.jsをにデプロイ serve-dir (技術情報editUpdate+ POST); C); を含む); ビルド0エラー; ViewerHub テスト 17/17 PASS. - F3.5 COMPLETE: サイドカー(パート1)+ ギズモ(パート2)— 編集 → 見る → 保存 → 再オープンのサイクルが閉じた。 ### REVISION
v2.224.1.2BETAPATCH
Seymour2026年8月2日
F7 RT2 ROUND 2: "NOTHING OPENS" FIXED ( — 2: "" ( — 2: 「」修正(ワイヤが確認を盗んでいた)+ 強制 Battle数値なし + 明確なチートラベル + サブメニューが音楽をアンロック
- 前版:
v2.224.1.1] - BUG メニューが開かない) ): NO MENU OPENS): 私の PumpHook ワイヤが元のポンプ
g_ourClosedBEFORE を消費 —PollMenuが確認を決して見なかった → サブメニューが決して開かなかった。 NEVER 技術情報 決定的修正: ワイヤを REMOVED — 元のポンプ( (CloseMenu →DispatchConfirm→NativeMenu_OnEdge→ サブメニュー/再オープン/フォースオフ)force-off) が無傷で再実行。 - BUG バトル): 行が(0..250) RT_STEPPER (だった — RT_NONE (現在は(値なし; FORCE サブメニューが仕事をする —
F7_MENU_FORCE). - BUG 技術情報 技術情報 「Party Invincible (debug)」 にリネーム —レバー(+1) (0xD2A8F8がゲームのパーティ無敵フラグ。
- BUG 技術情報 技術情報 音楽 サブメニュー(Bug 4が開くのを防いだ)が開くようになった — ユーザーがサブメニューでトラックをピック (
F7_MENU_MUSIC). - レバー再配置:
F7_LeverApplyが現在NativeMenu_OnEdge(ACT_AI_SWAP/ACT_BATTLE_CHEATS — サブメニューなしの直接アクション; valはg_ourResult). - ゲート: Releaseビルド0エラー; Steam +
_isolatedデプロイ(バックアップ200713). RT2: Arena+が開く、音楽/強制/Difficultyサブメニューが開く、Party Invincibleトグルが適用。 ### PATCH
v2.224.1.3BETAPATCH
Seymour2026年8月2日
F7 RT2 ROUND 3: MUSIC TRACK 0 = NONE ( — 3: 0 = (無音のタイトル画面 CRASH + バトル入場クラッシュ)
- 前版:
v2.224.1.2] - Bug 1(音楽なしのタイトル/イントロ画面):
music_lock: 0技術情報f7_inlive.json((Musicサブメニューが保存)—F7_MusicApplyLockがブート時にトラック0オーバーライド(無音/文脈外)を適用。 - Bug 2(カスタム 調合 CRASHED Mixバトル入場で):
music_battle: 0—F7_ApplyMusicBattle(battle-start auto-apply) がSetArenaBattleMusicPending(0)→ MusicHook → がトラック0を適用 → クラッシュ(compose直後のログ: FAULT 技術情報 0x4FB05E rva )。 - 修正: 両セッターでトラック0が none になる( (
F7_SetMusicLock/F7_SetMusicBattleTrack:<= 0 → -1) +f7_inlive.jsonクリーン (music_lock/music_battle= -1). - ゲート: Releaseビルド0エラー; Steam +
_isolatedデプロイ(バックアップ202945). RT2: タイトル画面の音楽が戻る; カスタム 調合 Mixがクラッシュなしでバトルに入る。 ### PATCH
v2.224.1.4BETAPATCH
Seymour2026年8月2日
F7 RT2 ROUND 4: PREVIEW のフィードバック+Custom 調合 のクラッシュ INVESTIGATED(UpdateWindowTitle/DrawUITextElement)
- Bug 2(Preview が「何もしない」):
F7_MusicPreviewをロック-1(なし — 現在の設定状態)で実行すると WITHOUT PLAYING(track < 0ガード)が返っていた。修正: val<= 0で Preview を確定すると、on-screen のステータス 「範囲を調整(L/R)してからプレビュー」 を表示し、有効な値なら再生する。(フローは「Music Lock」で L/R → stepper で確定=プレビュー。これは既存の動作。) - Bug 1(バトル構築時のクラッシュ — PERSISTS): FAULT(同じ RVA
0x4FB05E)を IDA にマッピング:FFX_System_UpdateWindowTitle(0x4FAE40)→DrawUITextElement(0x640810、void(ctx, text, x, y, slot)— ウィンドウタイトルに SAVE のテキストを描画、呼び出し先FFX_Save_SystemSaveGame)。クラッシュはメニューの2D ctx(「NoTexture」/ResolveTextureNameForUI)で発生。合成済み bin は OK(B 24272、バニラ24080 — 調整済みヘッダーで192 B 分増加)。切り分け保留(ユーザー): (a) compose なしの通常バトル → クラッシュ? (b) aeon 1体で compose → クラッシュ? (c) Launch 前にメニュー CLOSED を表示した状態で compose → クラッシュ? - ゲート: Release ビルドのエラー0件、Steam+
_isolatedへデプロイ(バックアップ205601)。 ### PATCH
v2.224.1.3
v2.224.1.5BETAPATCH
Seymour2026年8月2日
F7 RT2 ROUND 5: PREVIEW CRASH FIXED (技術情報 OFF = MMF 0xCD) 5: 修正(probe = ) = )+ 「プレビュー」が「保存 + 開く カスタム 調合」になる。 調合"
- 前版:
v2.224.1.4] - プレビュー (ユーザーが再現 CRASH (— 「PreviewでEnter = 今すぐクラッシュ」): "): NOW"):
F7_MusicPreviewがプローブ経由でsoundcmdを呼んだ (ArenaPlus_MusicHookProbeSoundCmd→LabProbeSoundCmd→ MMFFFXProbeBlock_v1) — プローブはデプロイで OFF 技術情報 (.RT2OFF) 技術情報 MMF は存在するがデータはパターン(解放済み/未初期化メモリ) 0xCD → 内のAV READ accessed=0x10CDCDCD技術情報 ffx-hooks. 修正: SEH (__try/__except) (soundcmdは二度とゲームをクラッシュさせられない — オーバーライドのみ)+ トラックステッパー確認が現在F7_MusicPreview(する(再生しない)。 (技術 SAVES (情報 - UX (技術情報 技術情報 技術情報 調合" Musicサブメニューの「プレビュー」が) (f7_inlive.json) 「保存 + 開く カスタム 調合」 になった — Enterが設定() 調合 (を保存 + Arena+ WORKS)→ カスタム Mixのネイティブメニューを再オープン(機能する標準フロー)。音楽は設定(lock/バトル)に保存され、正しい文脈(バトル開始)で適用、プローブ再生なし。
- ゲート: Releaseビルド0エラー; Steam +
_isolatedデプロイ(バックアップ214436). RT2: 「保存 + 開く カスタム 調合」でのEnterがクラッシュしない; 調合技術情報 NOT 設定保存; カスタム Mixが開く。 調合 技術情報 ### PATCH
v2.224.1.6BETAPATCH
Seymour2026年8月2日
i18n: 生リテラルを x:Static に移行(ゲートグリーン) (StringsIntegrityTests 技術情報
- 前版:
v2.224.1.5] - F3.5ギズモ債務修正: 「Gizmo 3D (arrastar なし キャンバス)」チェックボックスとヒント(「Clique num monstro para selecionar... S 技術情報 R = salvar · = reset」)が属性 (
Content=/Text=) で生リテラルを使用 —NoXamlHasRawHardcodedUiLiteralテストが属性を捕捉。{x:Static res:Strings.U_gizmo_3d_drag_on_canvas_1aa7857f}+U_click_monster_to_select_drag_hint_fe907a09(に移行(中立 + + EN + PT + Strings.cs 技術情報 - 他レーンの債務() (MonsterAi):
MonsterAiPhaseRotationAdvanced_Window.axamlに2つの生リテラル(「Foco ativo」/「Limpar foco」)—U_active_focus_d59334a6/U_clear_focus_91699d35(に移行(テストがプロジェクト全体の裁定者) project-wide 技術情報 - ゲート:
StringsIntegrityTests3/3 PASS; ビルド0エラー。
v2.224.1.7BETAPATCH
Seymour2026年8月2日
Aurora可視化: バトルのモンスター名(ラベル + ギズモ)
- 前版:
v2.224.1.6] export const MONSTER_NAMES内でmonster_studio.ts((284実際の名前 — 「ラルド」、「バニップ」...)ラルド", "バニップ"...).- scenes.ts: 編集モード (
?edit=1) が現在 すべてのバトル ALL モンスターにラベル (を描画(実際の名前を白; 選択中は黄色)+ ギズモオーバーレイが 選択モンスターの名前 (e.g. "ダークプリン (「ダークプリン (スロット 6)」)— 「スロット 」のみではない。 N". - ゲート: noclip型チェッククリーン;
rsbuildOK; バンドル461.0fe1690d.jsデプロイ(「ラルド」/「バニップ」を含む)ラルド"/"バニップ; パッチをdocs/patches/noclip/(scenes.ts + monster_studio.ts).
v2.224.1.8BETAPATCH
Seymour2026年8月2日
Aurora: AURORA CHAMBER がメイン Aurora として復帰(バトルプレビューは廃止)+Aurora モジュールの i18n PT→EN
- カタログの「Aurora」としての Aurora Chamber REACTIVATED:
MenuItem_AuroraとMenuItem_AuroraChamberは現在AuroraChamber_Controlを開く(BIANCA カタログ+MapViewer+RealGame を開く — 実際のバトル)。新しいOpenAuroraChamber()ヘルパー。バトルプレビュー(noclip)はレガシーコードになる(カタログ内の「aurora」エントリーを無効化、ViewerHub/aurora の説明は凍結)。 - ModuleCatalogPolicy:
aurora-chamberエントリーを再有効化(「Aurora Chamber」)。aurora(バトルプレビュー)は 🚫 LEGACY(コメントアウト)とした。case "aurora-chamber"ディスパッチを追加。 - Aurora モジュールの i18n PT→EN: neutral(Strings.resx)には PT の値があり(EN エディターでは PT と表示)、EN に修正: 既存キー12件(AURORA·バトルマップ、選択した場所、可視化、編集、セッション、Aurora Chamber でアリーナを開く、フィールドで絞り込む...、選択したフィールド、マップをエクスポート/...、フィールドピッカー、オーバーワールド、MapViewer 3D)+新規キー23件(Chamber と Field Explorer のボタン: Re-scan、不足分をマウント、すべて再マウント、EditViewer を開く、RealGame を開く、位置を保存、モンスターを追加/削除、アンカーをエクスポート、RealGame を復元、バトルを再読み込み、Re-export と開く、シーンを再マウント、フォルダーをエクスポート、カメラを保存、カメラパラメーターを保存、Scout を公開、マーカーを更新、フィールドを公開して開く、表示を検証、フィールドを開く、Re-export、ブラウザー)。EN を neutral に追加+PT を satellite に追加(検証済み: PT にはすでに存在)+Strings.cs の props。
- ゲート:
StringsIntegrityTests3/3 PASS、ビルドのエラー0件。
v2.224.1.7
v2.224.1.9BETAPATCH
Seymour2026年8月2日
技術情報 RealGame (バグ修正: 開く (404)+ Auroraマップ上下逆
- 前版:
v2.224.1.8] - Bug 1 — RealGame 404:
Aurora3DLauncher.BuildBattleUrl((Chamberの「開く 」が使用)がnoclipルート(Downloads) RealGameでレガシー python http.server at the noclip root (Downloads) — but the noclip index.html is indist/, so/index.htmlreturned 404 ("page not found"). Fix:BuildBattleUrlnow usesViewerHubService.BuildUrl("aurora", ...)(the in-process StudioWebServer with the noclip serve-dir — the correct index.html). RemovedEnsureViewerServer/IsPortListening(legacy python — retired in F2). The MODULE (RealGame with monsters) keeps working — only the battle-preview PAGE is legacy. - Bug 2 — マップ上下逆:
applyAssetOrientation技術情報RuntimeTools/FFXMapViewerWeb/app.jsのrotation.x = Math.PI(が X) 技術情報btlmap((のπフリップ)を適用 — マップを反転。マップは既に。 glTF 技術情報 Y-up. 修正:rotation.set(0,0,0)((フリップなし)— 地面が下、空が上。 - ゲート: ビルド0エラー;
node --checkOK on app.js; the MapViewer is served directly from the repo (prefix /map/) — the fixed app.js is already served.
v2.224.1.10BETAPATCH
Seymour2026年8月2日
バグ修正: 要素コンテンツとしての x:Static が生リテラルを表示(そしてエディタを開くときにクラッシュ)
- previous:
v2.224.1.9] - バグ: i18nに移行したAuroraモジュール(Chamber + Field Explorer) I の25ボタンが
{x:Static res:Strings.X}を 要素コンテンツ (<Button>{x:Static}</Button>)Avaloniaは 要素コンテンツとして{x:Static}を解決しない — 生リテラル(「 x:Static res:....」):Strings.U_.を表示し、ボタン使用時にランタイムクラッシュする可能性(「マップがエディタを開くときにクラッシュする」理由)。 - 修正: 全25を 属性
Content="{x:Static res:Strings.X}"(に変換(正しいパターン)。{x:Static}は属性( (Content=,Text=,Header=,Watermark=,ToolTip.Tip=). - ゲート: ビルド0エラー;
StringsIntegrityTests3/3 PASS;node --checkOK.
v2.224.1.11BETAPATCH
Seymour2026年8月3日
F7: — : — : サブメニューのガラスパネル(単一ウィンドウ)+ composeクラッシュ修正(起動前のフォースゲート) CRASH 技術情報 (force-gate 技術情報 技術情報
- 前版:
v2.224.1.10] - Bug 2( (UX — ユーザーが「新しいウィンドウ」を要求):
F7Sub_DrawCb((dllmain約11580)が大きなガラスパネル (DrawMenuGlassPanel(NX(0.047f), NY(0.20f), NW(0.906f), NH(0.62f), F, 1)) を獲得 — Soundサブメニューが現在(背景 WINDOW (+ タイトル + 内部の行)、 ), INSIDE), compose-pick スタイル。 - Bug 1(カスタム Mixバトル開始クラッシュ 調合 battle-start — 根本原因):
ArenaPlus_LaunchComboBattleFromPump(技術情報 MsBattleEncountExe) が force-gate ON (g_forceSubsystem = 0のみ)— AFTER ゲームが=1(メニューモード)でバトルに入った 0x13407E4→ バトル開始がUpdateWindowTitle→DrawUITextElement((rva — )でクラッシュ。 0x4FB05E — AV WRITE 0xBD). 修正:g_forceSubsystem = 0+ 0x13407E4 + の DIRECTLY BEFOREArenaPlus_LaunchComboBattleFromPump(+ ゼロ化(Launch LaunchCached + — リローンチ)。 - ゲート: Releaseビルド0エラー; Steam +
_isolatedデプロイ(バックアップ095551). RT2 保留: カスタム 調合 → 調合 ビルド + Launch → クラッシュなしでバトル入場; WITHOUT Soundサブメニュー = 単一ウィンドウ。 ### INFRA (CI) ci.ymlが 技術情 CI 報 任意のプッシュ でmainとcodexclaudiocodeffxeditor((レーンが絶えずコミットする作業ブランチ)の両方でを実行 — Windowsランナー($/分)の2ジョブが無料の3,0.010分/月クォータを消費(Actions $)。)22.70).- 修正: プッシュトリガーが現在
main(branches: [main]). CI は依然としてmain((とmain)への)を検証; 作業ブランチは自 CI (動なし(ローカルでdotnet build). - 推定節約: Actions実行の約90%(繰り返し発生する分数コストを削減)。 ### PATCH
v2.224.1.12BETAPATCH
Seymour2026年8月3日
LOG: auto-rotation ) — : オープン数による自動ローテーション(最大10、 `.old1..old9` 履歴)
- 前版:
v2.224.1.11] OpenLog((dllmain約173)がオープン数をカウント(ファイル%TEMP%\ffx-hooks.log.cnt) 10回ごとのオープンで、現在のログをffx-hooks.log.oldN(に移動(.old1..old9履歴を累積; 9回転後に.old1が上書き)し、カウンターをリセット。メインログは約10セッション以上累積しない; ユーザーが必要に応じて.old*を削除。- ゲート: Releaseビルド0エラー; Steam +
_isolatedデプロイ(バックアップ102648). ### PATCH
v2.224.1.13BETAPATCH
Seymour2026年8月2日
RealGame ) — ) — 修正(バトル対フィールド) EditViewer + が常に開く DEBUG LOG + 一般規則(Phases 1-4)+ full-editor 全エディタ分析マップ(フェーズ 5)
- 前版:
v2.224.1.12] - RealGame 技術情報:
BuildBattleUrlが extraQuery WITH?付きのをViewerHubService.BuildUrl(に渡した(既に?) → URL → → がindex.html??battle=...になった → noclipURLSearchParamsがbattleを読まなかった → フィールド(マップ)のみ、バトルなし。 extraQuery 現在はが?→?battle=<encId>&map=&actors=1→ モンスター付きバトルが戻る。 - EditViewer び「何もしない」ことがない: 技術情報
RenderSceneフォールバックがエクスポート失敗時、 WITHOUT 技術情報 glTF 技術情報 アンカー - DEBUG LOG — GENERAL RULE (
FFXProjectEditor/Diagnostics/DebugLog.cs)技術情報Info/Warn/Error技術情報[Conditional("DEBUG")](ヘルパー(Releaseで削除 — ゼロオーバーヘッド)。出力: デバッガー +%LOCALAPPDATA%\FFXProjectEditor\debug.log+work/editor-debug.log. 計装: (生成)、(レンダー) RealGame ((bika00 URL), EditViewer ( (技術情報 SelectSceneByMapKey (10)、(失敗) ExportSceneGeometry (技術情報 (/) ViewerHub (BuildUrl/EnsureServer). - 恒久規則: 技術情報
AGENTS.md+CLAUDE.mdに追加 — すべての新しいモジュールがデバッグレスポンスを必ず持つ。 MUST ドキュメント:docs/ai/DEBUG_LOGGING_RULES.md((規則)+docs/ai/DEBUG_LOGGING_MAP_2026-08-02.md(フェーズ 5 — full-editor 全エディタ分析: 約51モジュール + インフラ + 境界; ドメインごとのどこ/どのデバッグフィールドテーブル; 実装優先度; 対ログ) UI 技術情報 - i18nゲート: 技術情報
MagicDllEditor_Control.axaml(の5生リテラル(矢印 + Back/Forwardツールチップ — 他レーンの債務)を{x:Static}(に移行(テストがプロジェクト全体の裁定者) project-wide 技術情報 - ゲート: Debug + Releaseビルド0エラー; テスト20/20 ( 3/3 + ( 3/3 PASS (StringsIntegrityTests 3/3 + ViewerHub 17/17).
- フックがラボstdoutをパイプ経由で捕捉 (CreatePipe + STARTF_USESTDHANDLES + + — composeジョブが出力を読み、 行を抽出) PREVし、 メニューにドットパネルを描画 ((左ガラスパネル — バトルに入るレイアウト)。
- 新しい「ビルド プレビュー (layout bolinhas)」ボタン 内で カスタム 調合: 調合: 起動なしでcompose(メニューは開いたまま WITHOUT — ステータス「プレビュー pronto — layout acima. Fight Last 調合 p/ 調合 entrar.」)→ ユーザーが 入る前にドッ BEFORE トを見る → 「Fight Last 調合調合」(既存)が既に構成されたbinを起動。 already-composed 技術情報
- フロー: 召喚獣 + シナリオをピック → ビルド プレビュー → マップを見る(右 / (P モンスター左 / cam h)→ Fight Last 調合 → 調合 バトル。
- ラボビルド0エラー + (付き (1,113, ffx-hooks (技術情報 PolyHook) 1,113,600 B; LabDeploy ; Steamに(実際のラボ + フック)。
- RT2
Needs Testing: カスタム 調合 調合 → 4召喚獣 → ビルド プレビュー → 左パネルのマップをチェック → Fight Last 調合 調合 → 表示されたレイアウトのバトル。 ## [Unreleased ### MINOR
v2.224.1.14BETAPATCH
Seymour2026年8月2日
DEBUG LOG 技術情報 per-area ) — 技術情報 v2: エリアごとの3+1フラグ + UI グローバルauto/dev/prod WebView + Event Tracer + コンソールブリッジ + グローバル例外 + 「Open debug log」メニュー項目
- previous:
v2.224.1.13] - DebugLog 2 (
FFXProjectEditor/Diagnostics/DebugLog.cs): GLOBAL ラグ (auto=Debug→dev/Release→prod;FFX_DEBUG_MODE=dev|prodが強制)+ per-area ごとのフラグ (debug_flags.json:0=OFF,1=ACTIVEエリア処理中にログ、2=ALWAYS任意のエラーでログ、3=FORCEDEBUGReleaseでもログ) EVEN 技術情報 LOGS ALWAYS IN ENGLISH (技術情報. 5MBローテーション +.old1..old9((++フックレーンと整合) C技術情報 - UI racer:
Main_Windowがすべてのボタンクリックをインターセプト( ALL 技術情報 (AddHandler Button.ClickEvent) 技術情報 ) し、アクティブモジュール付きで自動ログ (UiTracer) 技術情報 per-click クリックごとのログ不要。 - ActiveScope:
SetModuleが開いているモジュールのエリアをアクティブ/非アクティブ化(フラグ1が使用)。 - WebView ソールブリッジ:
WebView2Hostがホスト(noclip/)のconsole.error/warn/logを (技術情報) JS (技術情報MapViewer) →WebMessageReceived→DebugLog(WebView.Console) にリダイレクトするスクリプトを注入 JS — ビューアバグがログに着地。 - グローバル例外:
AppDomain.CurrentDomain.UnhandledException+TaskScheduler.UnobservedTaskException→DebugLog.Error("Global", ...). - メニュー: 言語セレクターフライアウトの「Open 」項目(を開く)。 ) debug.log).
- テスト:
DebugLogTests(3/3 — EN — — 書き込み、timestamp+area+type形式、型付き例外)。 - ドキュメント:
DEBUG_LOGGING_RULES.md更新(フラグモデル + EN + トレーサー + 必須手動最小)。 - ゲート: Debug + Releaseビルド0エラー; テスト 23/23 PASS ((i18n 3/3 + 17/17 ViewerHub 17/17 + DebugLog 3/3).
v2.224.1.15BETAPATCH
Seymour2026年8月3日
技術情報 調合 ) — カスタム Mixバトルクラッシュ: compose-pick 中に描画を無効化。 DURING 技術情報
- 前版:
v2.224.1.14] - メカニズム(で確認): ): IDA): 技術情報 FAULT (AV WRITE
accessed=0xBD) がDrawUITextElement(0x640810, 内に着地 0x6409A5) 技術情報ctx(技術情報FFX_Menu2D_ResolveCaptureCtxCore) 経由)がnull/破損 —UpdateWindowTitle(0x4FAE40) がセーブテキストの描画でクラッシュ。クラッシュはcompose中(ランナー) DURING に、私たちのメニュー(compose ArenaMultiBossLab pick)が開いた状態で発生。 - 修正:
ComposePick_Draw((の) compose-pick DrawCb) が現在 技術情報g_jobState == JOB_RUNNING— 私たちのメ NOT ニューが中にゲームの2Dメニューにテキストをキューしない (EncodeLabel/DrawStringがテキストプール/キャッシュを破損: キャッシュヒット cache-hit 技術情報[cursor-1] 技術情報 → 境界チェックなしのpool → 無効ハンドル)。メニューが1-2秒フリーズ(は高速)し、その後通常に戻る。 - FIRST WHY COMMENT — この修正はコメント(英語)をコードに載せて出荷。 why-comment (技術情報
- ゲート: Releaseビルド0エラー; Steam +
_isolatedデプロイ(バックアップ140132). RT2 保留: カスタム 調合 調合 → ビルド + Launch → composeクラッシュが消えるはず。 ### PATCH
v2.224.1.16BETAREVISION
Seymour2026年8月3日
フック向け WHY-COMMENT RULE+第1回 WHY パス
- 新ルール(CLAUDE.md): フックに触れたら、コード内に WHY を(英語で)残す —
// WHY: ...(何をするかではなく理由)、// FIX <date>: ...(その理由付き)、// KEY <date>: ...(RE の洞察)。集中 は non-obvious の要所(ゲート、オフセット、重要な順序、pool/ctx の衝突、アーキテクチャ上の決定)に置く — スパムも、基礎の長文解説も不要。 - 第1回 WHY パス: dllmain(native-menu の確認フロー — なぜ接続を削除したか、compose 起動 — force-gate の前に MsBattleEncountExe)+ArenaPlusComposePick(compose 中は ComposePick_Draw を無効化 — 2D プールのクラッシュ)。
- ゲート: Release ビルドのエラー0件(コメントは動作を変えない)。デプロイなし(REVISION — doc/code-comment)。 ### PATCH
v2.224.1.15
v2.224.1.18BETAPATCH
Lulu2026年8月3日
技術情報 DLL Magic Editor: `pppVertexApAt` スキーマ分解(4実際のフィールド)+ `pppMatrixLoc` クリーンアップ(ホストのみ)) (host-only) + DebugLog 技術情報 `Magic.Parse`/`Magic.Writer`
- previous:
v2.224.1.17] - 分解(逆コンパイル) (IDA 技術情報 ): 0x7583D0):
pppVertexApAtが現在 4つの編集可能フィールド (model_indexu16@+4、vertex_countu8@+6、delay_framesu8@+7、order_modeu8@+8; ウィンドウ{4,5},editable=true)技術情報field_map.json+MagicFieldMapEmbeddedData.cs. - 正直なクリーンアップ:
pppMatrixLoc((逆コンパイル) 0x734200) が ホスト状態のみ (で動作(ゼロa2/record 3つのparam_s32_64/68/72フィールドは発明されたオフセットだった → 削除、payload_consumer=false,SEM_PAYLOAD((正しい)。 - 適用しない(発見) (RE 技術情報
pppKeThRes32/48—a2+12は リソースポインター ((チェーンビルダー)、数値ノブではない; u32として編集するとポインターが破損する。文書化。 - DebugLog 術情報
TryLoad(Magic.Parse) +TryGrowRecord(Magic.Writer) ()をDebugLog.Info/Warn/Error(で計装(英語、単一言語)。 - ゲート: Releaseビルド0エラー; テスト76/76 + 3/3(79/79) MagicDll 3/3 StringsIntegrity 3/3 (79/79).
- クラッシュ(composeなしで再現) WITHOUT 技術情報 を開き、 F7 メニューをブラウズ(プレビュー/バトル後) FAULT AV WRITE
pc=0x2409A5accessed=0xBD((composeと同じ) SAME 技術情報UpdateWindowTitle(0x4FAE40) 2Dメニュープール/ctxが私たちのメニューで破損してDrawUITextElementでクラッシュ(毎フレーム多数のテキスト描画: キャッシュヒット → 境界チェックなしのpool MANY 技術情報 cache-hit 技術情報[cursor-1] 技術情報 技術情報 - 修正(決定的): 技術情報
FFX_System_UpdateWindowTitle(0x4FAE40) をフック — 私たちのネイティ (F7ブメニューアクティブ時(/サブメニュー/compose pick)、フックが0を返す NOT — ゲームがタイトルテキスト(コスメティック)を描画せず、破損プールに触れない → クラッシュなし。メニューが閉じるとタイトル更新が再開。 - ゲート: Releaseビルド0エラー; Steam +
_isolatedデプロイ(バックアップ144123). RT2: F7 : : 開く + バトル退出 → クラッシュなし。 ### REVISION
v2.224.1.19BETAPATCH
Seymour2026年8月3日
LIVE POSITION EDIT (技術情報dot-map) — (パート1): フックの「ドットマップ」ウィンドウ(モンスター + プレイヤー)
- 前版:
v2.224.1.18] - ウィンドウ: compose pick(カスタム 調合) 調合)で、ビルド Preview完了後、 E を押す → グリッド編集モードに入る(16×8ドットマップ — 各敵 =
P, アクティブ =X). - 操作: 矢印がカーソルを移動(アクティブ敵の
P); TAB が敵を切り替え; ENTER がmodules\arena_positions.json(を保存(各敵のグリッドgx/gy); 取り消し 戻る。 SavePositions/ResolvePositionsPath: modulesの(16×8グリッド JSON — composeランナーが後で読み、 C#BattleArenaPositionWriterをbinに適用 — 次パートのリンク) next-part 技術情報- WHY (技術情報 ゲームがbinのchunk3アンカーから敵位置を読む (
pos = bin + chunk3 + 16×a5) — 編集されたグリッドを保存するとcomposeがカスタム配置を適用できる。 - ゲート: Releaseビルド0エラー; Steam +
_isolatedデプロイ(バックアップ153130). RT2: E : compose pickで(プレビュー付き)→ ドットウィンドウが開く; 移動 ENTER + がを保存。 JSON. ### PATCH
v2.224.1.20BETAPATCH
Lulu2026年8月3日
技術情報 DLL ) 技術情報 ) — Magic Editor: ブレッドクラム(戻る/進む) FORA をフォルダ/フィールド分割の外に移動 — リーフ(項目/フィールド)に達したときも表示されるようになった
- previous:
v2.224.1.19] - 以前: 戻るボタンがフォルダビュー( (
IsContainer)のみに表示; フィールド/リーフに達すると消えた — 戻れなかった。 - 現在: ブレッドクラム(⬅ 戻る · ➡ 進む · パス)が 選択があるとき常に 表示(フォルダリーフ)、任 OU 意の項目から戻る/進むナビゲーションが可能。
- ゲート: Releaseビルド0エラー; 3/3。 3/ StringsIntegrityTests 3/3.
- A 術情報 compose pick(Custom Mix) 調合)で、Build Preview完了後、 E を押す → グリッド編集モードに入る(16×8ポイントマップ — 各エンティティ = 1つの
P, アクティブ =X). - 操作: 矢印がカーソルを移動(アクティブエンティティの
P技術情報 TAB がエンティティをトグル; ENTER がmodules\arena_positions.json(を保存(各エンティティのグリッドgx/gy); 取り消し 戻る。 SavePositions/ResolvePositionsPath: modulesの(16×8グリッド JSON — composeランナーが後で読み、binにBattleArenaPositionWriterC— 次パートのリンク)。- WHY (技術情報 ゲームがbinのchunk3アンカーからエンティティ位置を読む (
pos = bin + chunk3 + 16×a5) — 編集されたグリッドを保存するとcomposeがカスタム配置を適用できる。 - ゲート: Releaseビルド0エラー; Steam +
_isolated(デプロイ(バックアップ153130). RT2: E : : compose pickで(プレビュー付き)→ ポイントウィンドウが開く; 移動 + ENTER がを保存。 JSON. ### PATCH
v2.224.1.21BETAPATCH
Seymour2026年8月3日
技術情報 LINK: ライブ位置編集: composeランナーがカスタムグリッドをbinに適用
- 前版:
v2.224.1.20] BattleComposeRunner((ライブ配置のパート2): 新しいReadCustomPositionsJson(modRoot)((フックで保存されたarena_positions.jsonを読む)+ApplyCustomPositions(...)((16×8グリッドを実際の/に変換 X/Z — X ±28, Z ±28、 30→46 —BattleArenaPositionWriter.WritePositions, 経由で適用、/保持) Y/W).- compose内: 技術情報
arena_positions.jsonが存在する場合、ランナーがカメラ自動レイアウトの代わりにカスタムグリッドを使用(最初のactorCount= のモンスター; MonsterLive; 残り = PartyFront) のパーティ)。ログ: auto-layout. 技術情報[custom-positions] grid do hook aplicado em .... - 完全フロー(パート1 + 2): compose pick → ビルド プレビュー → E 技術情報
Ps (技術情報TAB) → ENTER がを保存 JSON → Launch → composeがカスタムグリッドをbinに適用 → バトルが編集された配置で開始。 - ゲート: ラボ( (C)ビルド0エラー;
ArenaMultiBossLab.dllをゲームにデプロイ(バックアップ180311). RT2: フックで位置を編集 → Launch → カスタム配置のバトル。 ### PATCH
v2.224.1.26BETAPATCH
Lulu2026年8月3日
技術情報 DLL ) — 魔法 エディター: フェーズ 1(クローン)+ フェーズ 2(noclipマジックオーバーライド)+ フェーズ 3(埋め込みロック3Dプレビュー)
- 前版:
v2.224.1.25] - フェーズ 1 — Cloneボタン: 新しい
CloneMagicCommand+TryCloneMagic((編集付き作業バイトを新しいmagic_<id>.dll; にコピー; .bakバックアップ; 検証済みid)。ツールバーの「Clone」ボタン。 - フェーズ 2 —
MagicOverrideService: noclipのdata/FinalFantasyX/11/<id>.binをカスタムで上書き( DLL (バニラ.magic3d.bakバックアップ; 復元)。noclipは既にBIN.parseMagicFile経由でマジックをレンダー RE — 深い不要。 - フェーズ 3 — 埋め込み3Dプレビュー: 「プレビュー」ボタンがエディタ内の埋め込み(ミニブラウザ) WebView2Host (を開き、 編集中のマジックにロック (技術情報
11/<id>.bin+ magic-studio URL)+ )。Closeボタン(✕)。 - ゲート: Releaseビルド0エラー; 76/76 MagicDll 76/76 + StringsIntegrity 3/3.
- フェーズ A — 実際の型の人間化: フィールド
DetailTextが現在人 ONLY 間の説明のみを表示([u16], オフセット、幅なし)— 見えた生型は消えた。 Read-only 技術情報 フォルダビュー (non-editable み取り専用通知も(のような非編集可能スロットが「」+ pppDrawMatrix 技術情報Read-only理由を表示)。 - フェーズ B 技術情報 IDA 大規模研究(23ハンドラー逆コンパイル): 3つのを実際のフィールド付きに再分類: SEM_PAYLOAD → FECHADO 技術情報
pppKeLnsLpSft((110 、2レンズシフト浮動小数) lens-shift 技術情報pppDrawHook((10 、コールバック)、pppKeAcmCic((モード)。残りを確認( 、KeDMat (KeShpTail、Matrix DrawMatrixWood) 技術情報 host-only、はホストのみ/スタブ — 分解なし)— 文書化。 - フェーズ C — 拡張カタログ: +19人間説明(合計約94オペコード)covering 新しい + ホストのみ。 FECHADO + host-only SEM_PAYLOAD.
- ゲート: Releaseビルド0エラー; 76/76 + MagicDll 76/76 + StringsIntegrity 3/3 (79/79).
- フィールドビュー再設計: フィールドが名前 + 人間の説明 + 読み取り可能な型(例: 「decimal (e.g. float)」)+ カードの編集可能な値を表示。 オフセットと生型 (
u16) を非表示 — プレイヤーが触らない。 - 明確な読み取り専用: read-only: non-editable 編集可能フィールドが強調された「」通知 + 理由を表示(例:Read-only「生の データ — (e.g. その エディター できる't decompose it まだ」)。
- 人間説明カタログ (
MagicPppDescriptionCatalog.cs) プレイヤー言語で何をするかの約60 pppオペコード(逆コンパイル + IDA ドキュメントに基づく) RE 。スロットのに表示。 DetailText. - Grow-size 技術情報 4B/8B/12B/16B = 追加スペースのバイト数(1/2/3/4値)を説明。
- ゲート: Releaseビルド0エラー; 3/3 + 76/76(79/79) StringsIntegrity 3/3 + MagicDll 76/76 (79/79).
v2.224.1.28BETAREVISION
Lulu2026年8月4日
技術情報 DLL: 技術情報 : RE 魔法 : フェーズ 4 ? 3Dプレビューの深い(noclipレイアウトをソースでマップ)
- 前版:
v2.224.1.27] - 新しいドキュメント:
docs/reverse/magic_dlls/NOCLIP_PREVIEW_LAYOUT_MAPPING_2026-08-03.md? のparseMagicFile?sniffMagic?parseParticleDataパスをマップ(実際のソース) noclip.website (技術情報 - 判定: ウィンドウ内のフィールド編集 = プレビュー SAFE に安全(noclipが同じオフセットを再読み取り; re-reads 固定ストライド/不変) 0x28/0x10 / ; レコード中間の構造的growでnoclipがストライド超過 = プレビューを壊す; BREAKS 安全なgrow = 末尾のカウント駆動リスト拡張 count-driven + カウントバンプ。
- クローン注意: noclipは
magicTable; id outside テーブル外のid ?sniffMagicnull ? 空エミッター(オーバーライドではなくnoclipの制限)。 - ドキュメント/のみ()RE 技術情報 (REVISION) ? NO 技術情報) ? ? 動作変更なし。 CUSTOMMIX MUSIC SOLVED: — : バトルでトラック145「Challenge」再生。 Lane Jarvis-HOOK. 前版:
v2.224.1.26] - 勝利: 4つの失敗ルート( (
SetArenaBattleMusicPending→ Arena+インターセプターのみ;PrepBattleTrack→ エンジン層、ではない; ; FMOD;PlayTrackWithPreload技術情報event_indexを設定したがtracks_array[].event_ptr),SwitchCrossfade(self, 145, 0, 1)がアンロック 技術情 IDA MCP 報ffxoficial.exe.i64(FFX.exe pid=49476)。 - 主要発見(、コ, (RE, ミット
d4fdbc6c): オーディオツリーに3層 FFX 技術情報PlayTrackByIndex(0x7097E0) 技術情報 技術情報tracks_array[track].event_ptr == 0;PlayTrackWithPreload(0x886980) はエンジンサブ構造体のevent_indexのみ設定; ; sub-struct;SwitchCrossfade(0x7089F0, 技術情報 B) 技術情報 ONLY ) 技術情報 パス)がevent_ptr技術情報ReadEventByRuntimeId→MapRuntimeIdToFevIndex((テーブル0xB4F1C8) →EventSystem->GetEvent. - 145が再生されるべきチェック:
dword_B4F1C8[145] = 0x48(FEV 有効≤181);unk_CEC164 = 0((ロードゲートがブロックしない);IsValidTrackIndex(145) = true(145 ≤ 0xB5). - 技術情報
MusicHook_Shim: オーバーライド時、SwitchCrossfade(overrideTrack, 0, 1)(技術情報PlayTrackWithPreload; (fade=0、load フラグ=1)を呼ぶ; トランポリンg_trampolineSwitch(を優先(シムをスキップ、再帰を回避)。 - RT2 ユーザー確認: "NOW TRACK 145 WORKS! I'M IN BATTLE WITH THE NEW MUSIC!'!'!」 — Challengeがで再生。 CustomMix.
- ゲート: Releaseビルド0エラー; Steam +
_isolated; デプロイ; コミットd4fdbc6cをプッシュ。
v2.224.1.30BETAPATCH
Seymour2026年8月5日
CustomMix かぬ: バトルコストは課金されない(NEVER)(競合状態のバグ)+compose がバニラの bin を決して上書きしない
- CustomMix かぬ:
ArenaPlusComposePick_Close()がg_pendingLaunchGilCostを、LaunchComboBattleFromPumpが読み取る前(BEFORE)にゼロ化したため — かぬ はメニューで検証済みだったが、compose 実装後は一度も課金されなかった(x3/x4/x5)。合計は正しかった(e.g。Trio は325000G)が、ログではgilCost=0だった。修正: ゼロ化をClose()からOpen()に移動(session-open のリセット時であり、クローズ時ではない)。 - compose がバニラの bin を上書き(d5e56701): 5つの cross-map シナリオ(macalania_forest x3、remiem x3/x4/x5、bikanel x4)をテンプレート bin(
mcfr00_00、kino00_00、bika02_01)ではなく専用キャリア(mcyt00_22、nagi05_23、nagi05_22)にデプロイしていた — エンジンは合成チームではなくランダムエンカウントを読み込んだ。C#:ResolveOutputBattleIdはcarrier.BattleIdを返す。C++: フックのピンはエンカウント名にroute.battleId(キャリア)を使う。バニラの bin はそのまま。 - デプロイ: Hook DLL を再ビルド+Steam にデプロイ。ゲート:
arena_plus_charge_gil.flag(アクティブ)。 - Phase 3 ? 埋め込みID RE: magic_0140 と magic_0141 を比較(同じサイズ、差分22件)したところ、ID は .data 内に u32 LE として存在しない(does NOT)、3つの UTF-16LE 文字列("magic_0140" / "magic_0140.dll")としてのみ、オフセット 0x07E3C6、0x07E4B2、0x07E4F2 に存在した。
- Phase 3 ?
MagicDllNameRewriter: 3つの文字列を新しいID inTryCloneMagicに書き換え(4桁の zero-padded = 同じ長さ = オフセット移動なし)。実際の DLL と照合し、3箇所を書き換え、サイズ差分=0(RT0 byte-faithful は文字列の外側)。 - Phase 4 ?
MagicCommandAssociation: クローンに command.bin の行を関連付け、Anim1Id = newIdを設定(実証済みのチェーン: command.Anim1Id ? magic_%04d.dll)。EDIT フィールド(grow ではない)をAbility_Command.WriteList経由で書き込み(テキストプールを保持)。正直な制限: 元のスキルの視覚効果を置き換える。元の効果を保持する NEW スキルには grow が必要(参照:CommandGrowWriter.AppendElementWards)。 - デプロイ: LAB を
FFX\Mods\FFXProjectEditor-v2.224.1.29\内でビルド。offline_ci: 失敗8件(すべて PhaseManager/バトル pre-existing ? NONE、Magic/PPP 由来)。
v2.224.1.29
v2.224.1.31BETAPATCH
Seymour2026年8月6日
F7 Marathon: バグ6件+CustomMix Ultra+コントローラー
- 修正したバグ6件: F7 終了時の黒画面(すべての終了経路で 0x13407E4 をクリア)、すべてのバトル(EVERY)で Challenge の音楽が漏れる問題(F7_ApplyMusicBattle の default=145 を削除)、メニューに対する double-input FSM の問題(ClaimModal/ReleaseModal は F7 のサブメニュー内)、confirm/cancel 長押し時の入力連打(cancel にもクールダウン)、True ナイトメア の対象要素が誤る問題(現在は HP 3倍、ステータス約2倍、ヘイスト+リジェネ+プロテス+シェル、Weak/Resist/吸収 なし)、Force Battle が Dark Aeons/Combos を取り込む問題(F7_SetSkipForceCapture フィルター)。
- CustomMix Ultra Phase 1+2: Compose エンジン C#(RunUltra — モンスター1-8体、auto-layout、デプロイ)+F7 メニューを統合(Arena+ → CustomMix Ultra → Build+Launch)。キャリア zzzz00_240、トークン 0x00F000F0。デバッグログ13件。
- ComposePick のコントローラー: L2=編集グリッド、R2=カメラ、R1=次、L1=前。PadDir のエッジ検出+キーボードフォールバックを使用。PS+Xbox のデュアルラベル(L2-LT、R2-RT、L1-LB、R1-RB)。
- デプロイ: Hook DLL+Lab C# を Steam にデプロイ。計画: Monster AI Swap、Ultra Phase 3-4。
v2.224.1.30