// BootBios: a partida da máquina. Cabeçalho do BIOS, o CONTADOR DE MEMÓRIA gigante (140 px, herói) // que sobe em saltos irregulares, e as checagens que imprimem uma a uma com pontos de guia e [OK] // em vídeo inverso. Tudo dentro do vidro (coordenadas do vidro: 840 × 1110). import React from 'react'; import {useCurrentFrame} from 'remotion'; import {BLOOM, COR, FONTE, GRADE, ruido, seg} from '../base'; export type BootBiosProps = { cabecalho: string[]; memoria: {rotulo: string; ate: number; unidade: string}; checagens: string[]; inicio?: number; /** quadros entre linhas impressas */ intervalo?: number; }; export const BootBios: React.FC = ({cabecalho, memoria, checagens, inicio = 0, intervalo = 5}) => { const f = useCurrentFrame() - inicio; const M = GRADE.margem, T = 44; const tMem = seg(f, 6, 26); // saltos irregulares (como o teste de RAM de verdade) const passos = Math.floor(tMem * 12), v = tMem >= 1 ? memoria.ate : Math.round(memoria.ate * Math.min(1, (passos + ruido(passos) * 0.8) / 12)); const linha = (t: string, i: number, y: number, cor = COR.fosforo) => f >= i ?
{t}
: null; return <> {cabecalho.map((c, i) => linha(c, i * 2, 70 + i * 52, i === 0 ? COR.quente : COR.fosforo))} {f >= 5 &&
{memoria.rotulo}
} {f >= 6 &&
{String(v).padStart(6, '0')}{memoria.unidade} {tMem >= 1 && OK}
} {checagens.map((c, i) => { const em = 30 + i * intervalo; if (f < em) return null; const pontos = Math.min(14, Math.floor((f - em) * 4)); const ok = f >= em + 4; return
{c} {'.'.repeat(pontos)}{ok && OK}
; })} ; };