Atualização 2.66
10/06/2026
v2.66.0BETAMINOR
Seymour
Blitzball ROSTER (stats/crescimento dos 60 jogadores) NOW EDITABLE no GAME FILE — writer `.ebp` ATEL-variable PROVEN (RT0 byte-identical + mutation-isolated)
- O primeiro writer que edita a base de blitzball num GAME FILE do jogo, não no save. Os stats base + curvas de crescimento dos 60 jogadores vivem INSIDE
bltz0002.ebpcomo variáveis ATEL0x126..0x12E(8 stats × 60 jogadores × 4 floatsa,b,c,growthType; fórmula de crescimento decodificada:gt -1→1,0→a+b·Lv,1→a+b·Lv^c,2→a+b·Lv−c·Lv²,3→a+b·Lv+c·Lv²). Nova primitivaEvent_File.PatchEventDataElement(varId, idx, bytes)(FfxLib/Event/Event_File.AtelVar.cs): um patcher de in-place ATEL eventData-variable, length-preserving via o hook existenteScriptChunkOverride→Write()re-packs byte-identical exceto a fatia editada. Novo read/write file-classFfxLib/Blitzball/BlitzballRoster_File.cs(decodifica/edita o crescimento 60×8) + gateTools/BlitzballRosterRt0.cs(--blitzball-roster-rt0). PROVEN: leitura byte-exact vs o dump do FFXDataParser (player0 HP =70 + 30·Lv + 0.711·Lv²); no-edit Read→Write byte-identical (5.445.248 B); 480/480 growthType válidos; um patch single-float isolado aos 4 bytes target-element no offset previsto (@0x491680). RE (a peça que faltava): o value-base das variáveis =worker0_header + 0x30(resolvido robustamente, sem hardcode). Honestidade: stats/crescimento ONLY são file-data; nomes = macro de string0x700+idx(writer existe, wiring pendente), posições/technique-definitions/match-engine = EXE (IDA-pending), learned-techs/custo/contrato/nível/EXP = save (fora do escopo game-file). Sem UI ainda (próximo =BlitzballRosterEditor). (capacidade NEW: primeiro writer de roster de blitzball num arquivo do jogo). Não toca o save (CHAPPU/checksum), runtime, SIN nem outras lanes; só ADDS arquivos novos + 1 dispatchProgram.cs. Build 0 erros / 361 avisos;--blitzball-roster-rt0PASS (no-edit byte-identical + mutação isolada). Docs:docs/reverse/FFX_BLITZBALL_ROSTER_BASE_RE_2026-06-10.md+docs/ai/BLITZBALL_100PCT_EDITOR_CHECKLIST_2026-06-10.md
v2.65.3
v2.66.0.1BETAREVISION
Seymour
Blitzball: nomes de jogador CONFIRMED editáveis (chunk 7 do macrodic) + accessor in-lane accessor
- (código entra mas comportamento inalterado — accessor ainda não consumido; RE/prep). Decodificou o
new_uspc/menu/macrodic.dcpreal e provou que os nomes dos 60 jogadores = macro0x700+idx= chunk 7 (charset FFXbyte−0x0F; 101 entradas):0x702=Datto,0x703=Letty,0x704=Jassu,0x705=Botta,0x706=Keepa,0x707=Bickson…;0x700/0x701referenciam os protagonistas renomeáveis (Tidus/Wakka). → Já editável TODAY via o móduloMacroExplorer(lê+escrevemacrodic.dcpcom SafeWriter/undo/validação/round-trip). Novo accessor read-onlyFfxLib/Blitzball/BlitzballPlayerNames.cs(índice↔macro0x700+idx,TryGetName) como prep para o futuroBlitzballRosterEditorUI mostrar/editar o nome inline. Não tocaMacroExplorer(lane de texto) nem outras lanes; só adiciona 1 arquivo + docs. Build 0 erros / 361 avisos. Docs:docs/reverse/FFX_BLITZBALL_ROSTER_BASE_RE_2026-06-10.md §3+docs/ai/BLITZBALL_100PCT_EDITOR_CHECKLIST_2026-06-10.md
v2.66.0