JARVIS-ARENA
업데이트 2.128
2026. 6. 16.
v2.128.0.0MINORJarvis-ARENA
Arena+ Multi Dark Aeon 커스텀 토큰 리졸버 REDIRECT (스파이크의 옵션 A)
- (새로운 DLL 기능: 읽기 전용 스파이크에 문서에 설명된 리디렉션 경로가 추가됨)
FFX_ARENA_PLUS_CUSTOM_TOKEN_RESOLVER_HOOK_SPIKE.md). 훅ResolverLogHook이제 두 가지 모드가 있습니다: (a) LOGGER — 기존 동작, 기본값; (b) REDIRECT — 다음을 통한 옵트인arena_plus_custom_token_resolver.flag(env:FFXHOOKS_ENABLE_ARENA_PLUS_CUSTOM_TOKEN_RESOLVER). 리디렉션 모드에서, 기본 트램폴린을 호출하기 전에, 심은 테이블을 조회합니다customToken -> aliasToken(필수 범위 HIWORD0xA001..0xAFFF); 일치하는 항목이 있으면 해당 토큰이 ‘vanilla’라는 별칭으로 대체되어, 리졸버가row정식입니다. 다운스트림에서는 일반 토큰과 구별하지 않습니다. 되돌리기 = 플래그 또는 DLL 제거. 헤더의 새로운 APIhooks/ResolverLogHook.h:**SetCustomTokenRedirects(table, count)(32장, 유효 범위),SetCustomTokenRedirectEnabled(bool),IsCustomTokenRedirectEnabled(),ResolverRedirectHitCount(). 새로운 사이드카mods/Spira Reforge/arena/spira-arena-custom-tokens.{json,schema.json}** 4개의 항목으로 채워짐 (듀오0xA0010 046->0x00DC0046, trio0xA0020046->0x00DC0046, quartet0xA0030046->0x01AE0046, penta0xA0040046->0x01AE0046). Carregamento no boot viaArenaPlus_LoadCustomTokenRedirects()emdllmain.cpp— busca em$FFXHOOKS_ARENAPLUS_CUSTOM_TOKENS_PATH-><DllDir>/mods/Spira Reforge/arena/spira-arena-custom-tokens.json-><DllDir>/spira-arena-custom-tokens.json; falha em I/O ou parse mantem o hook em modo logger (zero regressao). Build PolyHook PASS 11/11 cpp. RT2 in-game Precisa Testar (espera ate o launcher gerar token custom; ainda nao foi conectado em UI). [anterior:v2.127.0.0]
v2.128.0.1REVISIONJarvis-MAGIC
Ronso Mana (지난 6일 RE): 런타임 종료 — o `−1` 키마리의 OD는 `WalkMenuBlobIndex(blob2,43)==0`; 게이지/OD 지원 기능은 완전히 제외됨 (RT2 로그의 `hudSafe=24` 시험)
- (RE/doc + 코멘트
.i64실제; 아무런 행동 변화도 없고, DLL은 그대로 — 다른 방에서는 계속 사용 중). RT2 로그를 읽어보니hudSafe=24(%TEMP%\ffx-hooks.log) 그 우회로 자체가B0-resolve이미 포착됨 — 버그 #1의 인과 관계를 종결합니다. 증거:B0 resolve a1=2 a2=1 treeId=43 a4=1 ->-1(에서ringKind=1EringKind=12)와 함께P0 dispatch charge=100 max=100 590=0x0D(OD-ready 강제: 이 훅은 이미 0x590 비트를 설정하며,79AF701을 반환합니다,6C8, 그리고 피나max:=charge) — OD는 여전히 숨겨진 상태였다. ⇒ OD-ready/charge==max는 게이트가 아니다 (hudSafe 17–24 마무리). 또한:blob2=0x1B5C8D70= 활성 힙의 포인터 (다음은 아님system_00(오프라인의 빈 공간) → 게이트는 블롭의 인덱스이며, 런타임 데이터입니다. 구조적 BREAKTHROUGH (기호 연산, 런타임 없음):dword_1134564[N] ≡ unk_C8F8D0[N+1217317]((0x1134564−0xC8F8D0)/4=1217317정확히) ⇒dword_1134564[0](count가Resolve읽기) 바로 그 카운트가PushMenuTreeEntry(797B80)증가시키고, 그리고dword_1134564[2*v8+1537]이것이 푸시된 입력입니다 → Push는 정확히 node-def 루프에ResolveMenuTreeNode(797D60);case 2 subtype=1→unk_112A994[8]=0x112A9B4=blob2. 곧−1~을(를) 줄인다WalkMenuBlobIndex(blob2,43)==0⇒blob2[2+43]==0xFF(t reeId 43 (등록되지 않음) 또는43>=blob2[1](count≤43). kind=1 (sel=1)과 kind=12 (sel=12) 모두 −1을 반환했으므로, 이는 1차 게이트(2차 선택기가 아님)입니다. **79BB70(BuildActorCommandMenu) 디컴파일되어 게이트의 라이터 역할에서 제외됨: 이 라이터는 링 버퍼 레이어-A만 구성하며 (ringBase+1144*slot+catOffset, 라우팅byte241→+120/2→+72/3→+168/4→+296/0xE→+232; 헤더dword28&0x1000→+40/&0x800→+56/그렇지 않으면→+0), 결코 해결 블롭을 기록하지 않으며actor+0xF7C. 측정값 1개 미비 (blob2[1]count +blob2[2+43]idx) — **DIAG 턴키 패치(6줄 이하, 읽기 전용)**를 쉴름에 붙여넣을 수 있도록 준비해 두었습니다B0-resolve문서의 §12.4에서, 3명의 후보자의 피치가 조율된 상태에서 (B=쓰기blob2[2+43], C=경로로 리디렉션a2=0(Aeons와 같이, A=노드 합성) 1 RT2의 덤프에 의해 결정됨. 댓글.i64(황금률, 단, 다음의 경우는 제외):0x797D60/0x797B80/0x797420/0x7985A0/0x112A9B4. 문서:docs/reverse/FFX_RONSO_MANA_COMMAND_RING_PIPELINE_RE_2026-06-16.md§12. [이전:v2.128.0.0]