アップデート 2.61
2026/6/9
ネイティブメニューSTEP 3:native-list行のソースreverse-engineered+`list-read`(プローブ)+ライブ選択読み取り。 ネイティブin-gameメニューのレーン(ヨウジンボウ→Jarvis-BAHAMUT)を継続し、step-3のギャップ#1(「ネイティブリストの行はどこから来るのか?」)をIDAで解消した。そのリスト INPUT (`FFX_Menu_List_UpdateInput 0x8B4460`)は 100%汎用的 で、152バイトのオブジェクト上のフィールド計算だけで構成される(`+40`状態、`+48`カウント、`+50`トップ、`+52`ターゲット、`+58`ページ、`+66`スロット、`+69`結果、`+70`スクロール、`+72`選択、`+28`バリデーター)を扱い、 グローバルには触れず、 10個の異なるビルダー で再利用される。一方、 ネイティブの描画はすべてitem-shaped である。scene3のリスト(`FFX_Menu_CreateScene3ScrollableList 0x8B4FB0` → `0x8B4A00`描画 → `0x8B4B20`行)は、`unk_159EC30[64i]`(64バイト構造体)+`byte_1866250[]`(種別)から行を読み取り、 アイテム名 を`0x86C3C0(id→table)`で解決し、種別1の場合は`rowPtr+32`にある直接ラベルも任意で使う。scene3/33/34を読み込み、Customizeのグローバルに依存する。バイナリには free-textリストの描画は ない。そのため、OURテキストを持つネイティブリスト(アリーナ/Aurora Photo-Modeシェル)には DLL描画コールバックが必要 となる(ステップ5、tick-bible §4で予見された経路)。そこでは hand-rolledレシピを文書化済み であり、汎用入力`0x8B4460`と、`sub_8F5F70`ウィンドウ/`sub_9016B0`文字列/`sub_8C0640`カーソルを使ってDLL描画を行い、`+69`/`+72`を読み取る。プローブTODAY経由で出荷した: 新しい動詞 `ffxprobectl list-read [handleHex]` (READ-only)は、 menu-object POOLをスキャンする (`g_FFX_MenuObjPool 0x18408C0`、32スロット×152B)。ANY個のアクティブなネイティブリスト/ポップアップを見つけ、コールバックで識別するほか、「現在のリスト」グローバルのショートカット(`dword_1866214`/`186A5DC`/`23CC120`)も備える。 ✅ RT2 PASS(ライブ、2026-06-09): ゲームが Customize equipment メニューにある状態で、プールスキャンは移動先のリスト(slot[3] `@0x017A0A88`、`input=0x8D57E0`、汎用`0x8B4460`の薄いラッパー)を捕捉した。`+72`/`SELECTED`は、操作者がカーソルを動かす間、 リアルタイムでカーソルを追跡した(35→42) 。その結果、step-3「ネイティブのナビゲート可能なリストの選択を読み取る」 PROVENを書き込みなしで 実行できた。(補足:リセットオブジェクトの`+62 = group 0x101`は`FFX_MenuObj_Reset`(IDA)と一致し、メモリに対するオフセットを確認した。)カメラRAM/Aurora/`dllmain.cpp`/セーブには触れず、IDA read-only(`_claude_ida`のコピー、文書内のrename-queue)。`ffxprobectl`のビルドは0エラー。 ステップ5(ブループリント): paste-readyにおけるネイティブシェルの`RuntimeTools/NativeMenuShell/NativeMenuShell.h`スケルトン(+README)。オブジェクトhand-roll+描画コールバック(ウィンドウ+行+カーソル)+FFXフォントエンコーダー+Auroraのフォトモードアクションへの分離ブリッジを備える。ABI/オフセットはIDA検証ワークフローで確認済みで、 敵対的レビュー済み (2つのレンズFFX-vs-IDA+C++ → クラッシュ/コンパイルのブロッカーなし)。x86ガード+anti-OOBクランプ+load-bearing不変条件を注記した。 未接続で、`dllmain.cpp`には触れない。 ステップ5.1(ワイヤリングのブループリント、NOT適用済み): `docs/ai/HANDOFF_BAHAMUT_NATIVE_MENU_WIRE_BLUEPRINT_2026-06-09.md`+`docs/patches/BAHAMUT_NATIVE_MENU_WIRE_DRAFT_2026-06-09.patch`の計画とパッチ下書きで、シェルを`ffx-hooks.dll`に、メニューポンプ`FFX_Menu_PerFramePump 0x8A9C50`(`int __cdecl(uint)`、IDA-verified、main-thread)への迂回を通じて接続する。デフォルトではOFF(`FFXHOOKS_ENABLE_NATIVE_MENU`+F7ホットキー)とし、ブリッジが呼び出すのは`PhotoMode::`だけである。敵対的レビュー済み(2つのレンズ)でブロッカーなし(コンパイルレビュアーがスクラッチツリーに適用し、`git apply --recount --check` exit 0); `dllmain.cpp` NOT touched/committed. Doc: `docs/reverse/FFX_NATIVE_MENU_LIST_ROW_SOURCE_2026-06-09.md`.
ノートを読む