JARVIS-ARENA
Update 2.129
6/16/2026
v2.129.0.0MINORJarvis-ARENA
Arena+ Multi Dark Aeon BattleEndHook scaffold (Lane 3) + RE of the end-of-battle teardown pipeline
- (new DLL capability: new read-only PolyHook2 detour on the battle cleanup function, plus fresh RE of the end-of-battle pipeline). RE done via IDA + idalib MCP — functions renamed and commented in
work/reverse/ida/FFX_recon.i64(GOLDEN RULE applied):FFX_Battle_EndCleanupDispatcher @ 0x79E650(wassub_79E650),FFX_Battle_EffectFreeAtEnd @ 0x7FB090(wassub_7FB090, emits the literal log "(op)\top_et_battle_effect_free( battle end )"),FFX_Battle_GetNextEncounterToken @ 0x7C5EE0(wassub_7C5EE0). Discovered chain:FFX_Btl_MainBattleTick @ 0x790C60calls the cleanup whensub_888CE0(0,0,0)has bit 0x20 set, beforeFFX_Battle_InitEncounterFromBtlbinchains the next battle or returns to field. New files:RuntimeTools/FfxHooksDll/hooks/BattleEndHook.{h,cpp}(full scaffold: detour, registerable callback, per-handle debounce,BattleEndEventstruct witheffectHandle/nextEncounterTok/result/sequenceNo). 5 new RVAs inshared/ffx_addresses.h:RVA_FFX_BATTLE_END_CLEANUP_DISPATCHER,RVA_FFX_BATTLE_EFFECT_FREE_AT_END,RVA_FFX_BATTLE_GET_NEXT_ENCOUNTER_TOKEN,RVA_FFX_BATTLE_MAIN_TICK,RVA_FFX_BATTLE_END_EFFECT_HANDLE(=dword_1134564[1743]@0x11360A0). Gate:arena_plus_victory_hook.flag(envFFXHOOKS_ENABLE_ARENA_PLUS_VICTORY_HOOK=1); default OFF. Default callbackArenaPlus_OnBattleEndindllmain.cpponly LOGS — does NOT touchspira-arena-progress.jsonyet. 2 explicit TODOs for the RT2 spike with Halyson: (a) distinguish victory/defeat/escape via thesub_888CE0bitmask; (b) mapeffectHandle->progress_flagvia correlation with the lastResolverLogHookmatch. TheArenaProgress_RecordClearedplug-in line is left commented and explained in code. PolyHook build PASS 12/12 cpp. Full doc atdocs/reverse/FFX_ARENA_PLUS_BATTLE_END_HOOK_RE_2026-06-16.md. Reversibility: remove the flag = instant vanilla; the hook does not touch memory/return value
v2.128.0.1