Eletrônica
Efeito snow
O Z80 possui um sistema de tratamento de interrupções bem interessante, sendo que o IM 2 (Interrupt Mode 2) é o mais poderoso. Este modo faz uso do registrador especial I (interrupt vector register), cujo valor tem que estar fora da faixa 64 (#40) a 127 (#7F). Se este cuidado não for tomado, ocorre a presença de artefatos na tela, conhecido como efeito snow.
|
Efeito snow no Bloody Paws |
A origem deste efeito é um bug na ULA que, pelo fato do Z80 colocar no barramento de endereços o conteúdo do par de registradores IR durante o refrescamento das DRAMs, acaba sendo interpretado como se a CPU estivesse tentando acessar a memória de vídeo. Uma explicação mais detalhada encontra-se no livro de Chris Smith.
Este foi um teste que ainda não foi realizado na ULA clonada, por isso criei este pequeno programa com esta finalidade:
10 CLEAR 29999
20 FOR n=30000 TO 30008 : READ a : POKE n,a : NEXT n
30 FOR n=32256 TO 32512 : POKE n,127 : NEXT n
40 POKE 32639,195 : POKE 32640,56 : POKE 32641,0
50 RAND USR 30000
60 DATA 243,62,126,237,71,237,94,251,201
O Z80 é colocado em IM 2 com o registrador I igual a 126, que causa o efeito
snow. O leitor pode digitar o programa no seu TK90X ou TK95 para ver o efeito (não funciona em emuladores, exceto SpecEmu). Na ULA da Microdigital o resultado é mais ou menos assim:
Infelizmente é difícil registrar o efeito na minha câmera digital e, mesmo na foto acima, fica mais visível somente quando ampliada. Observam-se várias pequenas linhas horizontais que surgem e desaparecem na tela, em posições aparentemente aleatórias. A frequência com que estas linha aparecem dependem do conteúdo da tela (acima, foi feita LIST do programa duas vezes para aumentar a visibilidade).
Na ULA clonada, há o efeito
snow mas um pouco diferente:
Aparecem muito mais linhas na tela e a distribuição não parece ser tão aleatória, mas formam colunas. Infelizmente a foto não dá uma ideia boa do que estou descrevendo.
Esta diferença era esperada, afinal há significativas diferenças entre as temporizações entre as ULAs. Mas o fato é que em ambas este
bug está presente, bem como na "ULA mãe" que equipa os ZX Spectrums.
Com isto, acredito ter terminado o conjunto de testes mais relevantes com o clone da ULA. Se eu não encontrar mais algum outro teste a fazer, irei devolvê-lo ao Fábio Belavenuto.
loading...
-
Smilemf (den Popov E Goblinish)
SmileMF é um pequeno demo que conquistou o 3º lugar na competição do Multimatograf 2014. O demo contém animações envolvendo principalmente atributos de cores e possui música para Explorer. Um pequeno senão vem a macular esta produção: uma...
-
Robocop 3 E Efeito Snow
Estive trabalhando na adaptação do Robocop 3 em disco Beta 48/128 para TK90X com TKMEM-128. Para minha surpresa, quando fui rodar no TK90X, apareceram os artefatos típicos do efeito snow. A causa é que o valor do registrador I, empregado no...
-
Shiny Demo (hooy Program)
Mais um demo para Explorer transferido para disco Beta, desta vez é Shiny Demo do grupo Hooy-Program. Este é um demo curto com uma música suave e interessantes efeitos gráficos na parte central da tela, nas quais se simula haver uma resolução...
-
Mais Investigações Sobre O "efeito Rodland"
Fiz mais algumas investigações sobre o bug detectado na ULA clonada. Na tela acima, observa-se uma linha vertical clara logo à direita da fadinha ruiva (fica mais visível sob ampliação). Deixando todos os atributos em branco e preto (PAPER 7 e...
-
Bloody Paws Sem Efeito "snow"
Em postagem anterior relatei que consegui adaptar o jogo Bloody Paws para a Beta 48, porém com bug conhecido como efeito "snow": As duas partes do jogo (Side 1 e Side 2) são afetadas, mas consegui consertar ambas. A origem do bug é o uso...
Eletrônica