アップデート 2.209
2026/8/2
v2.209.0.0BETAMINOR
Seymour2026年8月1日
Aurora × noclip: 3Dバトルブリッジ(エディタが編集されたフォ REAL ーメーションで実際のゲームフィールドを描画するようになった)
- 前版:
v2.208.0.1] - 発見: noclipの
parseEncounter(bin.ts:2494) EXACTLY がBattle_Fileレイアウトを使用(script@、0x4, モンスターid0xC,0xC, @+、float32 16B位置)—0e/<id>.binは 技 byte-identical 術情報btl_*.bin(とバイト同一(ハッシュ証明: 0e/0002 == bjyt02 00)。 EncounterIndexBridge(FfxLib技術情報 SHA-256 battleId↔encounterId 技術情報 614/858バトルが一致 ((azit03 00→0e/00EF、klyt00 00→0e/001E、mihn00 00→0e/002F); 244の不一致を正直に報告。Aurora3DLauncher+ Aurora Chamberの「🐉 表示 バトル 内で 3D (noclip)」ボタン:0e/<encId>.binを現在のbtlで CURRENT 上書き (.aurora3d.bakバニラバックアップ、「↩️ Restore 3D」ボタン)し、index.html?battle=<encId>#ffx/b<mapIndex>(mapIndex 技術情報 EncounterTable battlefield&から)0xFF) — nocl PS2 ipネイティブレンダーが編集されたフォーメーション/位置を表示。- 追加的noclipパッチ (scenes.ts
selectEncounter, 約20行):?battle=パラメータが正確なエンカウンターを強制(重み選択をスキップ); distを再ビルド + 8769 でリフレッシュ(配信バンドルで検証) serve-dir (技術情報 - ゲート:
--filter AuroraOverlayEnrichment9/9 PASS; 完全スイート 357/357 PASS;Aurora3DLinkLab --override azit03_00copy=True/restore=True; : : HTTP E2E: 8769がオーバーライドをバイト単位で配信。ドキュメント: . byte-for-byte. 技術情報docs/reverse/FFX_AURORA_NOCLIP_3D_BATTLE_BRIDGE_2026-08-01.md. - フェーズ 2(次): noclipでのドラッグ/カメラ → へ POST その エディター(パターン) (AuroraDragBridge → binに書く → 再ロード。フ Per-field ィールドごとのビジュアルスモーク保留。 ### PATCH
v2.209.1.0BETAPATCH
Seymour2026年8月1日
Aurora: viewers INSIDE the editor (WebView2) + RealGame/EditViewer naming + battle-preview without the game menu
- 埋め込み: Aurora Chamberが
WebView2Hostカラムを獲得 — 「Renderizar EditViewer技術情報 RealGame (技術情報 (」と「🐉 INSIDE Ver なし (ingame)」がエディタEmbeddedReloadRequestedauto-reloads 技術情報 - アクションを上部に: 固定(Renderizar ActionBar (技術情報 EditViewer Ver なし RealGame · Restaurar · Salvar posições/-/- · + モンスター · Exportar âncoras)— 何もスクロールに隠れない。
- UI 技術情報
noclip→ RealGame (技術情報;MapViewer→ EditViewer ((テキスト、ステータス、バナー)。 - ゲームメニューなし: noclip カタログの
battle-previewシーンdescを修正 FFX 技術情 URL?battle=<encId>&map=<mapIndex>#ffx/battle-previewが常に直接に解決(は55カタログ済みの1つである必要はない) FFX (mapIndex ( ; dist再ビルド + 配信バンドルで検証 (battle-preview+get("battle")存在)。 - Auto-sync: SaveDraggedPositions/SaveCameraShots/SaveCameraFloats/AddMonster/RemoveMonster re-apply 技術情報 RealGame ビューアを再ロード(保存された位置が再クリックなしでゲーム内に表示) 技術情報 in-game 技術情報 re-clicking).
- ゲート: 完全スイート 359/359 PASS; Releaseビルド0エラー; 配信バンドル検証。 ### MINOR
v2.209.0.0
v2.209.2.0BETAPATCH
Seymour2026年8月1日
Aurora UI/UX: clean dashboard + dedicated pop-up viewers
- ダッシュボード: メイン画面がマップ選択になった — バッジ付きリスト ([ gLTF ] [ N submeshes N/N / 、トーン色) , STUB ] [ map-only ], tone-colored), プレミアムダークカード ( 16121F bg + 白テキスト)、 1箇所のアク ONE ション ((カード下: Renderizar · 🐉 Ver EditViewer なし · RealGame 💾 Salvar posições · ➕/➖ モンスター · Exportar âncoras · ↩️ Restaurar)— ボタン重複削除。
- Pop-ups (技術情報 技術情報
AuroraViewerWindow(WebView2) 技術情報 EditViewer (技術情報 RealGame (read-only) 技術情報 NOT 技 術情報 ダッシュボードでマップ/バトルを変更するとすべてのウィンドウが自動的に閉じる ((間違ったマップのモンスター編集 / リークを防ぐ)。 - サイドバーオーバーレイ: フローティングビューアパネルが 折りたたみ可能なサイドバー (になった(❮ Hide → 58pxストリップ)— もはや3Dビューをブロックしない。
- 巨大テキスト → ? ツールチップ付き(を「?」ボタンツールチップに移動) (HonestyBanner 技術情報
- ゲート: 完全スイート 360/360 PASS · Releaseビルド0エラー ·
node --checkOK. ### PATCH
v2.209.1.0
v2.209.3.0BETAPATCH
Seymour2026年8月2日
Custom 調合 / Arena+ のブロック解除:ラボパスを修正 + ArenaMultiBossLabをゲームへデプロイ + vanilla-rootを設定
- ラボパス修正(
ArenaPlusComposePick.cppResolveLabExe): 候補..\data\modules\tools\ArenaMultiBossLab\ArenaMultiBossLab.exeを追加 — プロジェクトのツールパターン(data\modules\tools、SinScaleInjectが存在する場所)。以前はフックがmodules\tools\...だけを検索していた — ラボが見つからない → CreateProcessが失敗 → Custom 調合はin-gameを一切合成しなかった。 - ラボをゲームへデプロイ:
ArenaMultiBossLabをビルド(Release、0 errors/0 warnings)して、exe+dll+deps+recipesをdata\modules\tools\ArenaMultiBossLab\. - Vanilla-root configured:
modules\config\arena_plus_compose_vanilla_btl.txtcreated pointing toFFX Extracted\FFX\ffx_ps2\ffx\master\jppc\battle\btl(config txts were empty before →--vanilla-root ""→ lab failed). Mod-root default OK ({gameRoot}\data\mods\...\btlexists). - v6 rollback absorbed: HEAD's dllmain is already the v5 state (DrawString
0x9016B0crash in DIFF — the new navigation will be reintroduced with IDA available). Note on the 2.207.6.0 changelog entry. - RT2
Needs Testing(Custom 調合)へコピー: F7 → Arena+ → Custom 調合 → aeonを選択 → Launch → 合成されたバトル(e.g。Bikanel + Dark Aeon 4体、battle_id bika02_01)。再起動時は1回目のLaunchが作成したマニフェストを使う。 ### PATCH
v2.209.2.0
v2.209.4.0BETAPATCH
Seymour2026年8月2日
SINのブロック解除:SinScaleInjectパスを修正(data\modules\tools)+ rosterディレクトリを修正 + Macalania/サンダーのrosterをgit + tool deployed
- から復元
- Exeパス修正(
SinCurseHook.cpp):{DLL_DIR}\tools\SinScaleInject\→..\data\modules\tools\SinScaleInject\SinScaleInject.exe(project tools pattern — before, CreateProcessA failed and SIN never ran in-game). - Roster dir fix (
SinScaleInject/Program.cs): default now{gameRoot}\data\modules\tools\SinScaleInject\data\rosters(wasmodules\tools\...— one level off). - Rosters restored from git (commit
eb2e93ed):spira-sin-area-rosters/withmacalania_all/bosses/field/woods.csv+thunder_plains.csv(monster_id,role,note,allowed_presetswith UNI-001..006 allowlist) + README. - Deployed to game:
SinScaleInjectbuilt (Release, 0 errors) and copied todata\modules\tools\SinScaleInject\+ rosters をdata\modules\tools\SinScaleInject\data\rosters\. - RT2
Needs Testing(SIN): area transition withsin_curse.flag→ SinScaleInject runs (logSinCurseHook SinScaleInject SUCCESS) → area monsters with scaled HP/stats (T) +[UNI]kernel names + ATEL handler in AiFile → battle。 - ffx-hooksをSINパス修正とともに: ビルド準備完了、デプロイ保留(コミット時はゲームが起動中だった — 終了後にデプロイ)。 ### PATCH
v2.209.3.0
v2.209.5.0BETAPATCH
Seymour2026年8月2日
Custom 調合/Arena+のボス音楽をブロック解除:ハートビートゲートがMusicHookをブロックしなくなった
- 問題: MusicHook(battle-musicのオーバーライドを適用)が
WaitForProbeHeartbeatゲートでブロックされていた — ffx-probeのハートビートが一度も上がらない(GetDeviceStateをフックしないprobe)→MusicHook install skipped: ffx-probe heartbeat gate failed→ Arena+の音楽が再生されない。 - 音楽:
ARENA_PLUS_MUSIC_TRACK_DEFAULT 145 = "Challenge"(boss-battleトラック — Arena+の全F7行:Dark Aeon + デア·リヒター;arena_plus_music_<row>.txt/FFXHOOKS_ARENAPLUS_MUSIC_TRACK_<N>経由でオーバーライド)。 - 修正: ゲートを non-blocking に変更 — probeを10秒待機(応答すれば追加のSOUNDCMDも有効化)し、ハートビートがなくてもMusicHookをインストール(FFXHooksBlock + battle-entryのオーバーライド、hooks Prep/PlayTrackWithPreload/SwitchCrossfadeはprobeなしで動作;SOUNDCMDトリガーだけが劣化 — ログ内WARN)。
- RT2
Needs Testing: Custom 調合 → Launch → 合成バトルでは、通常のバトルテーマではなく Challenge (145) が再生されるはず。 - 保留として記録: ffx-probeのハートビートが一度も上がらない(07-19のdinput8 66.560)— なぜGetDeviceStateがフックされないのか調査(probe経由でSOUNDCMD/FORCEBATTLEに影響;音楽はもう依存しない)。 ### MINOR
v2.209.4.0
v2.209.6.0BETAPATCH
Seymour2026年8月2日
Custom 調合の音楽を無音/リークなしに + composed-bin復元(正規版を恒久的に上書きしない)
- サイレス/リーク修正(MusicHook.cpp
MusicPlayWithPreload_Shim): SOUNDCMDが劣化していると(probeハートビートなし)、shimがバニラ音楽を抑止し、soundcmdでオーバーライドを再生する構成に依存していた → バトルが無音 + オーバーライドが次のPlayTrackへリーク(「desired」音楽が終了時に再生)。これからはsoundcmdなしなら、トラックを差し替えてバニラを再生(無音なし、リークなし);soundcmdありならラボのレシピ(抑止 + recipe)を維持。 - 通常のCustom 調合パスでComposed-binを復元:
ArmDeferredFileRestoreは781D60(cross-map)パスでしか有効化されていなかった — 通常パス(e.g。合成bika02_01)はbinをmod-rootのまま永久に残していた(エリアの正規バトルを上書き)。通常パスでも復元を有効化するようにした(約30秒)。 - 起動時の復元(
ArenaPlus_RestorePendingComposeOnBoot): 前回セッションが遅延復元(約30秒)前に終了していた場合、起動時に.spiraforge.bakから正規版を復元(battle_idをgameRootcompose_last.jsonから読み取る)— 合成状態が永続することはない。 - PASS + LabDeployをSteamへビルド。
- RT2
Needs Testing: Custom 調合 → Launch → 正しい音楽付きの合成バトル(無音なし)→ 約30秒後に正規版binを復元 → エリアのランダムエンカウントが通常に戻る;30秒前にゲームを終了 → 次回起動時に復元。 ### PATCH
v2.209.5.0
v2.209.7.0BETAPATCH
Seymour2026年8月2日
Custom 調合の音楽:probeが生きているときだけsoundcmdコールバックを設定(soundcmdなし → shimがトラックを差し替えてバニラを再生)
- なぜ2.209.6.0の修正だけでは不十分だったか:
g_arenaSoundCmdFnはnullではなかった(フックのインストール時にdllmainがArenaPlus_MusicHookProbeSoundCmdを設定)— ただし 実行時に失敗 しただけ(probeハートビートなし)→ shimはコールバックを検出 → ラボ経路(抑止 + recipe)を使用 → soundcmdが失敗 → 無音 + リークが残った。 - 修正: dllmainは
probeAlive = FFXHOOKS_SKIP_PROBE_WAIT || WaitForProbeHeartbeat(10000)を保持し、probeが生きている場合にだけsoundcmdコールバックを設定 するようになった(インストール箇所3つ)。Probe dead → callback null →PlayTrackWithPreloadshimがトラックを差し替えてバニラを再生 → 合成バトルでChallenge (145)が再生され、無音も終了時へのリークもない。 - Idle-crashの判定(IDAでMCP 13337を介して調査): fmodex AV は pre-existing —
AsyncTask_InvokeCallbackThunk(0x691480)はthis+4/this+8 = 解放済みヒープ(0x10CDCDCD)で(*(this+4))(*(this+8))を呼ぶ;thunkポインターはテーブル0xB46FA0(オーディオ領域)に存在する。こちらのフックのなしはこの経路に触れている (AsyncTask/0x691480/0xB46FA0)— AVはF7より前から発生。グローバルVEHがこれを捕捉してログに記録(診断)。修正には、誰がオーディオAsyncTaskを解放しているのかを特定する必要がある(別の焦点)。 - PASS + LabDeployをSteamへビルド(20:09)。 ### MINOR
v2.209.6.0
v2.209.8.0BETAPATCH
Seymour2026年8月2日
起動時復元を修正(実際のマニフェストは`modules\compose_last.json`)+ テスト用の合成binを復元 + Custom 調合のサポート対象シナリオを確認
- 起動時復元を修正: 実際のマニフェストはラボが
modules\compose_last.json(module-relative)に書き込む — 起動時復元はgameRootだけを見ていたため、中断されたセッションの合成binがディスクに残った。現在は次の順に検索:modules\compose_last.json→{gameRoot}\compose_last.json→{gameRoot}\mods\Spira Reforge\arena\compose_last.json。 - ディスクのクリーンアップ: テストの合成
bika02_01.bin(19:37)をバニラに復元(09/06/2024の.spiraforge.bak、24,016バイト)— サイズ/タイムスタンプで確認。 - Custom 調合のサポート対象シナリオ(lab --compose dry-runで検証): bikanel(bika02_01)、macalania_forest/open/open2(mcfr00_00/mcyt00_00/mcyt00_21)、remiem(kino00_00)、cavern/cavern_alt(nagi05_50/24/25)。Mushroom RockはNOTサポート対象シナリオ(composeはcavernへフォールバック — そこでx4が「開かなかった」理由)。サポート対象シナリオではx3/x4(アクター3-4体)が完全に合成される(dry-runを実証:4スロット、chunk2/chunk3は正常)。
- PASS + LabDeployをSteamへビルド。 ### PATCH
v2.209.7.0