Aggiornamento 2.77
10/06/2026
SIN Chain Builder Gate 3: ponte di validazione AiScriptLab per il `SinApplyPlan` (sola lettura) — valida i piani, NON applica; SIN resta BLOCCATO per la scrittura. (letterale tecnico: read-only)
Leggi le note
Maechen connesso a Spira
Beta Update
Versioni ufficialiNote precedenti della fase beta, conservate come pubblicate.
Questo è l’archivio delle note precedenti della fase beta. Le nuove note sono nella pagina degli aggiornamenti.
10/06/2026
SIN Chain Builder Gate 3: ponte di validazione AiScriptLab per il `SinApplyPlan` (sola lettura) — valida i piani, NON applica; SIN resta BLOCCATO per la scrittura. (letterale tecnico: read-only)
Leggi le note
10/06/2026
SIN Chain Builder Gate 2: planner dry-run / anteprima (`SinApplyPlan`) — solo-anteprima, SIN resta BLOCKED per la scrittura.
Leggi le note
10/06/2026
Blitzball Prize Table diventa un ALBERO: League/Tournament → 1st/2nd/3rd/Top Scorer → draw → premi (+ rilevamento dei draw riprovato in RE). (letterale tecnico: TREE)
Leggi le note
10/06/2026
Navigazione consolidata: 4 nuovi hub aggregatori (Battle Commands, Items, Sphere Grid, Text/Reference) + un componente riutilizzabile `SubTabHub` + una sidebar più snella. Secondo passaggio IA della lane Jarvis-RIN (il mucchio di note di Halyson). Nuovo componente generico `SubTabHub_Control` (`Modules/SubTabHub`): una strip di sotto-schede in stile FFX (riusa Blitzball (letterale tecnico: FFX-styled) (letterale tecnico: sub-tab)`tabPill`/mode-pill), costruita nel codice tramite `AddTab(label, factory, mode, pill, requiresProject)`, caricata in modo pigro (letterale tecnico: lazy-loaded) (ogni sotto-scheda costruisce il proprio controllo alla prima selezione e lo mette in cache) con una (letterale tecnico: sub-tab)`requiresProject` guardia (una tab vincolata al progetto mostra un placeholder invece di bloccarsi). Sopra di esso, (letterale tecnico: project-gated)4 hubs (ognuno OSPITA i controlli esistenti, intatti): (letterale tecnico: HOSTS)(1) Battle Commands → `Comandos/Magias de Personagem` (command.bin) · `Monster Commands 1` (monmagic1) · `Monster Commands 2` (monmagic2); (2) Items → `Items` (item.bin) · `Key Items` (important.bin, guarded) · `Shop` (payload dello slot con guardia) — Shop e Key Items spostati qui dalle schermate separate; (3) Sphere Grid → `Explorer (DB)` · `Builder` · `Canvas` (3→1; Explorer richiede un progetto, Builder/Canvas si aprono senza progetto); (4) Testo / Riferimenti → `String Explorer` · `Macro Explorer` · `Weapon Names` · `Battle Text` · `Event Explorer` (5→1). Ogni sotto-scheda porta una pill di modalità onesta (writer ambra / sola lettura verde acqua) con file/ambiti reali. (letterale tecnico: sub-tab) (letterale tecnico: read-only)Sidebar: Core Authoring è sceso da 23 → 15 pulsanti; Auto-Abilities ora è subito accanto a Customizations / Aeons; Monster AI Explorer è stato rimosso dal menu (handler/codice preservati — è sparita solo l’opzione nav). Scope (RIN): solo navigazione/hosting — i 4 nuovi `Main_Window` handler costruiscono un `SubTabHub` tramite factory (`CreateKernelCommandsControl(...)` per le tabelle kernel; `new XxxControl()` per il resto) e i vecchi handler restano nel codice (`ShowKernelCommands`/`CreateKernelCommandsControl` intatti = back/forward e nav-ripristino continuano a funzionare). (letterale tecnico: nav-restore)Non tocca writer/parser/runtime/save/SIN/provider né gli INTERNI del modulo di qualsiasi altra lane (MAGIC/Sphere); modifica solo le (letterale tecnico: INTERNALS)`Main_Window` righe nav (file condiviso) + aggiunge `Modules/SubTabHub`. Gli extra di Battle Commands (ricerca universale, ricerca per scheda, (letterale tecnico: per-tab)multi-edit) sono rinviati a un seguito (toccano la logica dell’editor dei comandi = MAGIC lane). (letterale tecnico: follow-up) (letterale tecnico: command-editor)MINOR (4 NUOVI moduli/schede di navigazione + un nuovo componente riutilizzabile). La build compila (letterale tecnico: NEW)0 errori / 361 warnings; editor riavviato a v2.74.0.0. [precedente: `v2.73.0`] — Jarvis-RIN
Leggi le note
10/06/2026
Blitzball Hub: i 5 schermi sparsi diventano 1 tab "Blitzball" con sub-tab + una pill modalità onesta + polish visivo di tutte e 5 le finestre. (letterale tecnico: sub-tabs) Consolidamento navigazione + UX (lane Jarvis-RIN). La sidebar aveva 5 pulsanti sciolti (`Blitzball Prizes`/`Roster`/`Recruits`/`Prizes (Edit)`/`Prize Table`) con nomi in conflitto (3 dicevano "prize"); ora è 1 pulsante `Blitzball 🏐` che apre il nuovo modulo `BlitzballHub_Control` (`Modules/BlitzballHub`) con 5 sub-tab (letterale tecnico: sub-tabs) in una strip stile FFX ( (letterale tecnico: FFX-styled)`tabPill` pills, tab attiva con underline teal): Roster · Recruits · Prize Pool · Prize Table · Atlas. Ogni sub-tab mostra una pill modalità onesta subito sotto la strip — `WRITER LAB · <file> · RT0 proven · RT2 pending` (ambra) per i 4 writer, `READ-ONLY · Spira Data Atlas` (teal) per Atlas — perché il badge "Mode" esterno dell'hub è ora neutro (`Atlas + Writer Lab`) e non può più asserire una sola modalità. Le tab sono lazy-loaded (ogni UserControl è costruito solo alla prima selezione e cache) → l'hub non tiene mai 4 `ByteSnapshotEditorSession` alla volta. Polish visivo di tutte e 5 le finestre (solo presentazione — nessun writer/parser/binding/DataModel toccato): hero più piccolo via la nuova classe `heroGradient` (deduplica i 3 gradienti letterali copia-incolla), (letterale tecnico: copy-pasted)`Save` ora usa `primaryAction` (teal) sui 4 writer (era il pulsante MENO stilizzato di ogni schermo prima), (letterale tecnico: LEAST-styled)Roster's 8 box `cardSoft` collassano in una tabella (header allineato, a/b/c/type allineati a destra), (letterale tecnico: right-aligned)Prize Table è raggruppata in un accordion di categorie (5 gruppi collassabili — League/Tournament Standings, League/Tournament Top Scorer, Roll Threshold/odds — chiusi di default, ognuno con un punto colore famiglia + conteggio siti; il filtro testo auto-espande i gruppi corrispondenti) per domare le ~849 opzioni, più una (letterale tecnico: family-color) (letterale tecnico: auto-expands) (letterale tecnico: per-row)stripe colore per-famiglia (letterale tecnico: per-family) per-riga (teal=prize-index, ambra=odds) + testo condensato + padding normalizzato, Prize Pool raggruppa Quantity/Raw Type in `cardSoft` con una colonna Quantity più stretta, Recruits demote l'offset `@0x` a sottotitolo e rende la combo giocatore l'elemento primario, Atlas ottiene una pill evidenza colorata nella griglia (proved-candidate=teal / partial=amber / metadata-only=blue / blocked=danger) e i colori letterali (`#9AD7E2`/`#9EB0C2`) scambiati con token. Nuove classi additive in `StudioTheme.axaml` (`tabPill`/`tabPillActive`, `heroGradient`, `pillWriter`/`pillReadonly`, `numField`) — selettori che non esistevano → zero regressione su altri schermi (NON ho toccato il tema globale (letterale tecnico: NOT)`TabControl`, proprio per non influenzare gli 8 schermi che usano tab nude). 2 nuovi converter solo-presentazione ( (letterale tecnico: presentation-only)`PrizeFamilyBrushConverter`, `EvidenceStatusBrushConverter`). MINOR (NUOVO modulo di navigazione/IA + la prima strip sub-tab riutilizzabile; il polish da solo sarebbe PATCH ma viaggia con il nuovo modulo). (letterale tecnico: NEW)Non tocca writer/parser/runtime/save/SIN/provider Atlas/altre lane; i 5 `_Control.axaml.cs` e DataModel sono rimasti intatti. Build compila (letterale tecnico: DataModels)0 errori / 361 warning (il `.exe` finale non si è copiato solo perché l'editor era aperto — non correlato al codice). [precedente: `v2.72.0`] — Jarvis-RIN
Leggi le note
10/06/2026
Blitzball Prize Table: ora modifica anche gli ODDS (390 roll threshold) — "modifica tutto". Estende la tab `Blitzball Prize Table 🏐` (`v2.71.0`): oltre ai 459 siti prize-index, ora modifica i 390 threshold immediati che impostano le PROBABILITÀ — i bound (letterale tecnico: PROBABILITIES)`case >= N` / `case <= M` su `GetRandomInRange(100)` (bytecode `29 AE <thr> 0E/0F D7/D6` = `DUP·PUSHII·GE/LE·jump`). Un bucket catturato da `roll >= lo` e `roll <= hi` ha ~`(hi-lo+1)%` odds; allargare il bucket = odds migliori per quel premio. Nuovo `BlitzballPrizeStructure_File.FindRollThresholds`/`SetThresholdAt` (scansione scoped a ≤768B di un sito prize-index così non tocca mai uno switch non correlato) — usando lo STESSO writer 2-byte ( (letterale tecnico: SAME)`Event_File.PatchScriptUInt16`). UI unificata: il filtro guadagna "Roll Threshold (odds)", ogni riga inline-editable (le righe premio mostrano la ricompensa risolta live; le righe threshold mostrano il bound del bucket). Il gate `--blitzball-prizestruct-rt0` è esteso e PASSES sul `bltz0200.ebp` reale: 459 prize + 390 threshold (195 `<=` / 195 `>=` = un pairing perfetto), no-edit byte-identico, un edit prize-index E un edit threshold entrambi (letterale tecnico: byte-identical) (letterale tecnico: AND)isolati ai loro 2 byte (`<=10 → <=50` @0xC108), ri-lettura conferma entrambi. (letterale tecnico: re-read)MINOR (NUOVA capability: editing odds). Non tocca save/runtime/SIN/altre lane. Build 0 errori / 361 warning; (letterale tecnico: NEW)`--blitzball-prizestruct-rt0` PASS. Doc: `docs/reverse/FFX_BLITZBALL_PRIZE_STRUCTURE_RE_2026-06-10.md`. [precedente: `v2.71.0`] — Jarvis-CHAPPU
Leggi le note
10/06/2026
Blitzball Prize Table: MODIFICA quale premio assegna ogni piazzamento/bucket casuale (459 immediati in (letterale tecnico: EDIT)`bltz0200.ebp`) — smentisce l'etichetta "blocked" L'esploratore lettura-solo ( (letterale tecnico: read-only)`v2.62.0`) marcava `BlitzballLeague/TournamentPrizeIndex`/`TopScorer` come `blocked` (runtime/save) — troppo conservativo: vedeva solo il lato lettura/visualizzazione in `bltz0201` (`PrizeIndex + 220 → Treasure Label`). L'assegnazione vive in `bltz0200.ebp` come 459 immediati costanti nello script ATEL: `Set BlitzballPrizeIndex[slot] = <prize-index>` dentro uno switch su `GetRandomInRange(100)` (la distribuzione casuale della ricompensa). Modificabile nel file di gioco, proprio come il reclutamento (solo l'immediato è (letterale tecnico: Game-file)2 byte, perché supera 255). Nuovo modulo/tab `Blitzball Prize Table 🏐` (`Modules/BlitzballPrizeStructEditor`): una lista filtrabile (per variabile/ricompensa/indice) di tutti i 459 siti con modifica prize-index inline + la ricompensa risolta live (takara `prize+220`, o MacroDict#8 per \>100). Nuovi primitivi `Event_File.PatchScriptUInt16`/`ReadScriptUInt16` (patch immediata 2-byte length-preserving via `ScriptChunkOverride`) + `FfxLib/Blitzball/BlitzballPrizeStructure_File.cs` (scan/`SetPrizeIndexAt`) + gate `Tools/BlitzballPrizeStructRt0.cs` (`--blitzball-prizestruct-rt0`). PROVEN sul `bltz0200.ebp` reale (222,464 B): 459 siti (141 League + 188 Tournament + 65 League-TS + 65 Tournament-TS = corrisponde al conteggio corpus), no-edit byte-identical, un singolo edit prize-index isolato ai suoi 2 byte (League 1st `0x0001→0x0099` @0xC0A2), ri-lettura confermata. (letterale tecnico: re-read)Risultato RE: gli id var ATEL sono per-file (`0x28` in bltz0201 vs `0x30` in bltz0200); gli id bltz0200 (`0x30`/`0x31`/`0x32`/`0x33`) sono provati dai siti switch/Set del file stesso. Onestà: modifica QUALE indice premio assegna ogni piazzamento (gioco-file, isolamento RT0 provato, RT2 in sospeso); la ricompensa che ogni indice DÀ = takara (la tab (letterale tecnico: WHICH) (letterale tecnico: game-file) (letterale tecnico: GIVES)`Blitzball Prizes (Edit)`; gli odds (soglia del roll) sono un set immediato separato, non ancora esposto. MINOR (NUOVO modulo + nuovo writer 2-byte). Non tocca save/runtime/SIN/altre lane. Build 0 errori / 361 warning; (letterale tecnico: NEW)`--blitzball-prizestruct-rt0` PASS. Doc: `docs/reverse/FFX_BLITZBALL_PRIZE_STRUCTURE_RE_2026-06-10.md`. [precedente: `v2.70.0`] — Jarvis-CHAPPU
Leggi le note
10/06/2026
Blitzball Prizes Editor: UI per modificare i 101 premi blitzball nel FILE DI GIOCO (takara.bin 220..320). (letterale tecnico: GAME FILE) Nuovo modulo/tab `Blitzball Prizes (Edit) 🏐` (`Modules/BlitzballPrizesEditor`) che modifica il POOL premi blitzball (premio 0..100 → riga takara 220+k → ricompensa; la regola proved-candidate chiusa in `v2.62.0`): un master-detail sui 101 premi, ognuno con un dropdown item (filtra per nome/id) + quantity + Raw Type/Kind/ricompensa risolta. RIUSA internamente il (letterale tecnico: REUSES)`TreasureEditor_DataModel` provato (dizionario item, risoluzione nomi, `ByteSnapshotEditorSession`, writer full-table) filtrato alle righe 220..320 → il save è lo STESSO writer della tab Treasures (letterale tecnico: SAME), scrivendo `takara.bin` e preservando tutte le 498 voci byte-per-byte tranne il premio modificato. Registrato in (letterale tecnico: byte-for-byte)`Main_Window` (nav + `SetModule`). Onestà: badge "Writable (Lab)" — modifica il POOL (quale ricompensa dà ogni indice premio), non QUALE premio vinci per league/tournament/evento (= runtime/save); per premi gear/key-item o un controllo Kind più fine, usa la tab Treasures. Completa l'esploratore read-only (letterale tecnico: WHICH)`Blitzball Prizes 🏐` (`v2.62.0`) con editing reale. MINOR (NUOVO modulo/tab). Riusa (letterale tecnico: NEW)`TreasureEditor_DataModel`/`Treasure_File`/`Item_Dictionary`; non aggiunge un nuovo writer né tocca il save giocatore/runtime/SIN/altre lane. Build 0 errori / 361 warning. [precedente: `v2.69.0`] — Jarvis-CHAPPU
Leggi le note