1001Ferramentas
🎨 Calculadoras

Calculadora attribute clash ZX Spectrum

Calcula quantas regioes 8x8 de attribute clash existem em uma tela ZX Spectrum de 256x192 pixels usadas pelo famoso problema de cor do hardware.

Attribute clash do ZX Spectrum

O Sinclair ZX Spectrum (1982) renderiza um bitmap de 256×192 pixels, mas armazena cor separadamente numa grade grossa de 32×24 blocos de atributos 8×8. Cada bloco guarda apenas 2 cores (INK + PAPER), mais bits BRIGHT e FLASH, escolhidas de uma paleta fixa de 15 cores (8 normais + 7 bright; preto é compartilhado). Quando dois objetos distintos se sobrepõem na mesma célula 8×8, um deles é forçadamente recolorido — é o famoso "attribute clash". RAM de atributos total: 32×24 = 768 bytes, em $5800. RAM do bitmap: 6144 bytes em $4000. Desenvolvedores habilidosos (Ultimate Play the Game) desenhavam sprites alinhados à grade de atributos para esconder o clash.

Aplicações

Desenvolvimento retrogaming para ZX Spectrum em toolchains modernas (z88dk, sjasmplus), produções de demoscene mirando Spectrum 48K/128K, autores de emulador (Fuse, ZEsarUX, Spectaculator), conversão de pixel art de PNG para SCREEN$ e lançamentos homebrew em plataformas como itch.io e World of Spectrum.

Perguntas frequentes

Por que só 2 cores por bloco? RAM era escassa em 1982. Cor por pixel exigiria 8× mais memória (≈48 KB só de vídeo); a grade 32×24 mantém o framebuffer abaixo de 7 KB no total.

Como jogos evitam o clash? Truques comuns: sprites monocromáticos em fundo preto, alinhar hitbox de sprite a células 8×8, usar o bit BRIGHT para simular 3ª cor, ou aceitar o clash como estilo visual (ex.: Knight Lore).

O que é SCREEN$? O snapshot de 6912 bytes da RAM de vídeo (6144 do bitmap + 768 de atributos), comumente despejado em arquivos .SCR para compartilhar pixel art.

Ferramentas Relacionadas