업데이트 2.61
2026. 6. 9.
v2.61.0BETA
Seymour
네이티브 메뉴 STEP 3: native-list 행 소스 reverse-engineered + `list-read` (프르오브에) + 실시간 선택 읽기
- 크오느트이느우잉 해당 네이티브 in-game 메뉴 레인 (Yojimbo→), step-3 간격 #1 ("곳에서 하다 해당 네이티브 목록's 행 크오姆에 에서?") 임 닫힘 통해 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[64*i](64-바이트 스트르우크트스) +byte_1866250[](유형), 와 함께 해당 아이템 이름 해결됨 통해0x86C3C0(id→table)및 하나의 오프션얼 직접 레이블 에서rowPtr+32(유형 1); 해당 항목 로드함 scene3/33/34 및 의존함 위에 크우스트오姆이즈에 전역 값. 거기 임 없음 "free-text 목록" 그리기 에서 해당 브이느아르이 — 따라서 a 네이티브 목록 와 함께 OUR 텍스트 (해당 아레나 / 아우르오르아 Photo-Mode 셸) 요구함 a DLL 그리기 콜백 (단계 5, 해당 경로 프오르에스이느 에서 tick-bible §4), 와 함께 해당 hand-rolled 레시피 문서화된 (일반 입력0x8B4460+ a DLL 그리기 사용하여sub_8F5F70창 /sub_9016B0문자열 /sub_8C0640커서, 읽기+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): 와 함께 해당 그아姆에 에서 해당 크우스트오姆이즈에 에쿠이프먼트 메뉴, 해당 풀 스캔 포착됨 해당 느아브이그아트드 목록 (슬롯[3]@0x017A0A88,input=0x8D57E0, a 스이느 르아프프어 의 해당 일반0x8B4460) 및+72/SELECTED트르아크드 해당 커서 에서 실제 시간 (35→42) 처럼 해당 운영자 이동됨 해당 항목 → step-3 "읽기 해당 선택 의 a 네이티브 느아브이그에이블 목록" PROVEN 없이 기록 아느이스잉. (브오느우스: 해당 초기화 오브즈에크트'스+62 = group 0x101일치함FFX_MenuObj_Reset(IDA) — 오프셋 확인됨 대상으로 메모리.) 없음 카메라 RAM / 아우르오르아 /dllmain.cpp/ 저장 건드림; IDA read-only (_claude_ida복사, rename-queue 에서 해당 문서).ffxprobectlbuild 0 오류. 단계 5 (청사진): paste-ready 스크에을트오느 의 해당 네이티브 셸 에서RuntimeTools/NativeMenuShell/NativeMenuShell.h(+README) — 오브즈에크트 hand-roll + 그리기 콜백 (창+행+커서) + FFX 글꼴 인코더 + 분리된 브르이드그에 로 아우르오르아'스 사진 모드 동작; ABIS/오프셋 확인됨 (IDA 검증하다 작업 흐름) 및 적대적으로 검토된 (2 렌즈 FFX-vs-IDA + C++ → 없음 충돌/컴파일 차단 요인); x86 가드 + anti-OOB 클램프 + load-bearing 불변 조건 주석이 달린; 아님 연결됨, 함 아님 건드리다dllmain.cpp. 단계 5.1 (연결 청사진, NOT 적용됨): 계획 + patch 초안 (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통해 a 드에트아우르 위에 해당 메뉴 프우姆프FFX_Menu_PerFramePump 0x8A9C50(int __cdecl(uint), IDA-verified, main-thread) — OFF 통해 기본 (FFXHOOKS_ENABLE_NATIVE_MENU+ F7 흐오트크에이), 브르이드그에 오직 호출함PhotoMode::*; 적대적으로 검토된 (2 렌즈) 없음 차단 요인 (컴파일 르브이에우어 적용됨 해당 항목 로 a 임시 트리,git apply --recount --checkexit 0);dllmain.cppNOT touched/committed. Doc:docs/reverse/FFX_NATIVE_MENU_LIST_ROW_SOURCE_2026-06-09.md
v2.60.2
v2.61.1BETA
Seymour
아트르아스 장비 상점 슬롯 value-guard (`proved-candidate`) + item-shop 정직하게 `blocked`
- 두 번째 통과 의 해당 상점 정찰 (
HANDOFF_ATLAS_RIKKU_SHOP_SLOT_VALUE_INDEXER): 우느르오크 해당 SAME value-guard 위해 상점 해당 보물 이미 입증함. 검증된 통해 하나의 8-아그에느트 작업 흐름 (5 프오르에느스이크 + 2 아드브어스아르이얼 + 1 스이느스에스이스): 해당 편집기's 슬롯RawValue임 해당 원시 on-disk little-endian 우시오르트 (ShopTable_File≡ReadBaselineSlotValue), 및gear_shop_slots.csv'sslot_value_hex(445/445 프오프우르아트드, 해당shop_arms.bin인덱스) 임 해당 동일한 워드 — 따라서 해당 가드 임 a same-space 이느트에그어 비교 와 함께 없음 off-by-one (해당 카탈로그 임MinIndex=0, 인덱스 0 = 르스어브드 NULL 항목, 첫 번째 스에르르에이블 장비 = 인덱스 1 =0x01). 새로운 read-only 접근자SpiraDataAtlasCatalog.TryGetShopGearSlot(bank, slot, currentRawValue)+ 르아즈이_shopGearSlotValues(드에브work/오직, 없음 컴파일됨 대체, 르이크에 해당 스피어 그리드 node detail): resolvesatlas:gear:gear-shop-0x{bank}-slot-{n}only while the slot's current value still equals the corpus (and ≠ 0) → editing the slot hides the badge (no stale). The--spiraatlas-rt0gate gained 5 durable asserts (positive lookup Tidus/value 1, value-guard mismatch 999 hides, empty slot raw 0, bank-without-corpus, edge0x2E/427), all PASS. Item-shop =blocked: the corpus does not carry the raw value (item_shop_slots.csv.slot_value_hex100% empty —ItemShopDataObject.toString()prints only the name); a string-guard is NOT fake-safe (Potion/Phoenix Down/Antidote x47 → stale; placeholders + US-vs-JP → false negatives). Unlock = 1-line parser patch + re-run (corpus task, outside this code). Honest tier:proved read-only candidate (parser-corpus + reader-semantics + RT0), neverruntime/byte-grounded(noarms_shop.binwas hexdumped here). No UI, writer, SIN, runtime, orCommonbadge-engine changes (ANIMA). Build 0 errors / 361 warnings;--spiraatlas-rt0+--aicmdmeta-rt0PASS. Doc:docs/ai/ATLAS_RIKKU_SHOP_SLOT_VALUE_INDEXER_RESULT_2026-06-09.md
v2.61.0
v2.61.2BETA
Seymour
아트르아스 증거 배지 에서 해당 상점 탐색기 (gear-only, value-guarded)
- Read-only UI 연결 해당
TryGetShopGearSlot접근자 (입증함 에서v2.61.1) 안으로ShopExplorer: 각 gear-shop 슬롯 표시함<common:AtlasEvidenceBadgeStrip>와 함께 해당 원점/배지/"곳에서 해당 항목 나타남" 의 해당 슬롯's 장비 보상 — 오직 동안 해당 슬롯's 현재RawValue여전히 일치함 해당 코퍼스.ShopEditableSlotRow.Evidence(init) 임 계산된 에서From():source.Kind == Gear && TryGetShopGearSlot(entry.Index, slot.SlotIndex, slot.RawValue). 이후 해당 행 임 재구축됨 위에 EVERY 변경 (ComboBox/설정 비어 있는/우느드오/드이스크아르드/저장/새로 고침 →RebuildSelectedSlots), 편집 해당 슬롯 르크오姆프우트에스 해당 증거 및 숨김 해당 스트립 (없음 오래된 배지). Item-shop 절대 얻음 a 배지 (Kind == Gear가드 + double-guard: 아이템 가지고 있음 없음 코퍼스 항목); 하나의 비어 있는 슬롯 (원시 0) short-circuits. 검증된 통해 a 3-렌즈 아드브어스아르이얼 작업 흐름 (에엑스흐아우스트이브 르이프에크이크을 / item-shop+바인딩 / 정직성) → 모든sound, 0 드에프에크트스. 재사용함 ANIMA'sCommon인프라 (엔진 변경되지 않은); 새 작성자 없음, 새 항목 없음 파서, 없음 SIN/runtime/Aurora/native-menu. 트이어parser-corpus+RT0+read-only, 절대 런타임proved. Build 0 오류 / 361 경고;--spiraatlas-rt0+--aicmdmeta-rt0PASS (없음--shop*게이트 에서Program.cs). 문서:docs/ai/ATLAS_RIKKU_SHOP_GEAR_BADGE_UI_RESULT_2026-06-09.md
v2.61.1
v2.61.3BETA
Seymour
아트르아스 제공자: 정규화됨 `BlitzballPrizeRef` (read-only) 르프르아크에스 해당 76-르이느에 원시 스크르아프에
- 해당
SpiraDataAtlasCatalog상금 섹션 더 이상 스크르아프에스 원시bltz0200/0201; 해당 항목 이제 읽음 WAKKA's 정규화됨 데이터셋 (work/step0_blitzball_prize_ref_2026-06-09): 164 prize-index 행 (101 보물proved-candidate통해prize+220 -> takara 220..320 -> reward, 닫힘 통해 3 오프라인 소스 — Fahrenheitblitz_prize.cs+bltz0201 obtainTreasure+bltz0200/0201 Treasure-Label— 대비 RT0-입증함 타카라; 60 기술partial; 3 오브어드르이브metadata-only) + 64blockedscript-sites (해당 per-event 상금 임 a 런타임/저장 변수). 가드레일 르르이트트에느: 규칙proved-candidate오프라인, 해당 크오느크르트에 per-league/토너먼트 상금blocked, 절대 RT2, 절대 a 작성자. 해당--spiraatlas-rt0게이트 우에느트 에서14739로14891세부 정보 (BlitzballPrizeRef 76 -> 228) 및 얻음 data-grounded 아스스어트스 (보물 101 / 기술 60 / 오브어드르이브 3 / 사이트 64; 상금 0 -> 타카라 220 Hi-Potion; 상금 100 -> 타카라 320 Phoenix Down; 보물proved-candidate-아님-RT2; 오브어드르이브metadata-only; 사이트blocked). Patch 검증된 통해 a 4-아그에느트 아드브어스아르이얼 검토 이전 적용. 없음 UI, 없음 작성자, 없음 SIN/런타임; 함 아님 건드리다 상점/보물/Mix (RIKKU), 해당Common배지 엔진 (ANIMA), 또는 아우르오르아/native-menu. Build 0 오류 / 361 경고;--spiraatlas-rt0+--aicmdmeta-rt0PASS. 문서:docs/ai/ATLAS_WAKKA_BLITZBALL_PROVIDER_INTEGRATION_RESULT_2026-06-09.md
v2.61.2
v2.61.4BETA
Seymour
네이티브 메뉴 Shell WIRED 안으로 `ffx-hooks.dll` (단계 5 적용됨, OFF 통해 기본)
- 해당 step-5.1 patch (적대적으로 검토된, 없음 차단 요인) 임 이제 적용됨 로
dllmain.cpp(최소 patch:dllmain.cppONLY, +166 르이느에스, 0 드에을션스) — 해당 항목 우이르스NativeMenuShell.h(네이티브 메뉴 와 함께 OUR 텍스트) 로 아우르오르아'스 브르이드그에 (PhotoModeActions.h) 통해 a 드에트아우르 위에 해당 메뉴 프우姆프FFX_Menu_PerFramePump 0x8A9C50(int __cdecl(uint), IDA-verified, MAIN THREAD). OFF 통해 기본:FFXHOOKS_ENABLE_NATIVE_MENU=1아르姆스 해당 드에트아우르; 해당 메뉴 오직 열림 위에 해당 F7 흐오트크에이. 아우르오르아'스 계약 ACCEPTED 및 프오르르아우드:PhotoMode::Tick()= 옵션 A (상단 의AuroraD3DRender, 이전 해당 early-return, 와 함께FFXHOOKS_ENABLE_AURORA_OVERLAY=1, AURORA-owned 흐우느크); FREEZE 단일 소유자g_pm.frozen;NtSuspendProcessPROHIBITED;PhotoMode::g_base=g_base에서 이느이트. 해당 연결 오직 호출함PhotoMode::*— 해당 항목 함 아님 기록 카메라 RAM (0xD378A0) 또는 액터 RAM. Build-WithPolyHook -ReleasePASS (dllmain+MusicHook+ElementHook→ffx-hooks.dll). 단계 6A/NPC 유지됨 OUT 의 이 patch. RT2-pending: F7 내부 a 메뉴/필드 → 네이티브 "PHOTO MODE" 셸 해야 함 아프프이르 (드이스크아르드에이블 저장). 문서:docs/ai/HANDOFF_BAHAMUT_NATIVE_MENU_WIRE_BLUEPRINT_2026-06-09.md
v2.61.3
v2.61.5BETA
Seymour
아트르아스 증거 배지 에서 해당 Item 상점 (value-guarded) — 닫힘 해당 장비+아이템 쌍
- 크르오느에스 해당 gear-shop value-guard 입증함 에서
v2.61.2로 item-shop, 이제 해당v2.61.1+ 해당 코퍼스 우느르오크 그아브에 아이템 a byte-grounded 1:1 원시 값. 새로운 read-only 접근자SpiraDataAtlasCatalog.TryGetShopItemSlot(bank, slot, currentRawValue)+ 르아즈이_shopItemSlotValues(읽음item_shop_slots.csv, 드에브work/오직, 없음 컴파일됨 대체) — 하나의 정확한 姆이르르오르 의TryGetShopGearSlot: 르스오르브에스atlas:item-shop:item-shop-0x{bank}-slot-{n}오직 동안 해당 슬롯's 현재RawValue여전히 일치함 해당 코퍼스 (해당 on-disk LE 우시오르트 = 아이템 game-index0x2xxx, 해당 편집기's 스프아크에) 및 임 ≠ 0.ShopExplorer_DataModel이제 크오姆프우트에스Evidence프어 상점 종류 (장비/Item 전환); 해당<common:AtlasEvidenceBadgeStrip>에서 해당 슬롯 카드 였음 이미 공유된 (v2.61.2), 따라서 아이템 슬롯 이제 표시 해당 배지 와 함께 없음 XAML 변경; 편집 해당 슬롯 재구축함 해당 행 및 숨김 해당 스트립 (없음 오래된). 해당--spiraatlas-rt0게이트 얻음 4 아이템 아스스어트스 (르우크우프0x2000/Potion, 불일치0x9999숨김, 비어 있는 원시 0, no-corpus 슬롯 3), 모든 PASS (장비 여전히 PASS). 르그에느어아트드work/step0_consolidated_v5/item_shop_slots.csv와 함께slot_value_hex(404/404, dev-only, 아님 크오姆姆이트트드). Read-only: 없음 작성자, 없음 보물/Mix/Common/Aurora/native-menu/런타임 변경; ANIMA'sCommon엔진 오직 크오느스우姆드. Build 0 오류 / 361 경고;--spiraatlas-rt0+--aicmdmeta-rt0PASS. 문서:docs/ai/ATLAS_RIKKU_SHOP_ITEM_BADGE_UI_RESULT_2026-06-09.md
v2.61.4