アップデート 2.71
2026/6/10
v2.71.0BETAMINOR
Seymour
Blitzball Prize Table: EDIT が各順位/ランダムバケットで与える賞品を編集(`bltz0200.ebp` 内の即値459件)—「blocked」ラベルが誤りであることを示す
- read-only explorer(
v2.62.0)はBlitzballLeague/TournamentPrizeIndex/TopScorerをblocked(runtime/save) と分類していたが、これは 保守的すぎた:bltz0201(PrizeIndex + 220 → Treasure Label)の 読み取り/表示側しか見ていなかった。割り当て はbltz0200.ebpの ATEL スクリプト内に、定数即値459件として存在する:Set Blitzball*PrizeIndex[slot] = <prize-index>がGetRandomInRange(100)に対するswitchの中にある(ランダム報酬の分配)。Game-file は加入処理と同じように編集可能で、即値だけは255を超えるため 2バイトである。新しいモジュール/タブBlitzball Prize Table 🏐(Modules/BlitzballPrizeStructEditor)は、459サイトすべてを変数/報酬/インデックスで絞り込める一覧にし、インラインで prize-index を編集しながら 解決済み報酬をライブ表示する(takaraprize+220、または100超なら MacroDict#8)。新しいプリミティブEvent_File.PatchScriptUInt16/ReadScriptUInt16(length-preserving の2バイト即値パッチをScriptChunkOverride経由で行う)+FfxLib/Blitzball/BlitzballPrizeStructure_File.cs(スキャン/SetPrizeIndexAt)+ ゲートTools/BlitzballPrizeStructRt0.cs(--blitzball-prizestruct-rt0)。実際のbltz0200.ebp(222,464 B)での PROVEN: 459サイト(League 141 + Tournament 188 + League-TS 65 + Tournament-TS 65 = コーパス件数と一致)、no-edit byte-identical、単一の prize-index 編集は 2バイトだけに分離 された(League 1位0x0001→0x0099@0xC0A2)。re-read が確認した。RE の発見: ATEL の変数IDは per-file(bltz0201では0x28、bltz0200では0x30)。bltz0200のID(0x30/0x31/0x32/0x33)は、ファイル自身のswitch/Setサイトから証明した。正直さ: WHICH が各順位で与える賞品インデックスを編集する(game-file、RT0 の分離は実証済み、RT2 は保留)。 各インデックスが与える報酬 GIVES = takara(Blitzball Prizes (Edit)タブ)。確率(ロール閾値)は別の即値セットで、まだ公開していない。(NEW モジュール + 新しい2バイトwriter)。save/runtime/SIN/他レーンには触れない。ビルドはエラー0件 / 警告361件;--blitzball-prizestruct-rt0PASS。ドキュメント:docs/reverse/FFX_BLITZBALL_PRIZE_STRUCTURE_RE_2026-06-10.md
v2.70.0