domingo, 5 de agosto de 2012

Bloody Paws e "snow"

Prosseguindo na adaptação de jogos do TK90X com som para a Explorer, desta vez consegui transferir Bloody Paws para disquete Beta 48. Tudo funcionando bem no emulador, resolvi rodar o jogo no meu TK mas o resultado não era bem o que eu esperava:



Apareceu aquilo que é conhecido como "snow effect", que parece com uma espécie de ruído que se sobrepõe à imagem exibida na tela. Este é um bug do ULA que afeta tanto o TK90X como o ZX Spectrum, e ocorre no Modo de Interrupção 2 quando o registrador I (interrupt vector register) tem valor entre 65 a 127. Neste intervalo, a tabela de vetores de interrupção situa-se na região da RAM com "contenção", isto é, em que o ULA tem acesso prioritário.


No Bloody Paws o valor do registrador I é 93 (#5D). Eu fiquei pensado qual seria o motivo do programador ter justamente escolhido um valor deste, se já era conhecido o problema do ULA. Teria este (d)efeito vindo a ser premeditadamente empregado no jogo?

A tabela de vetores de interrupção deveria ficar na região entre 23808-24063 (#5D00-#5DFF) e fui examinar o seu conteúdo. Ao invés da esperada tabela, encontrei apenas restos do carregador BASIC, espaços em branco e no endereço 24063 (#5DFF), o valor 65270 (#FEF6). Fiquei com impressão de que o programador não sabia como lidar com interrupções no Spectrum (vide TK-WIKI para detalhamento). O que é mais grave neste erro é que numa interrupção, dependendo do que o ULA estiver fazendo no barramento, pode ser chamada uma rotina em algum endereço inesperado (a propósito, nenhum emulador que eu conheço simula corretamente tal comportamento).

O disassembly de 65270 é:

65270  DI
65271  EI
65272  RET

que praticamente nada faz. Não entendo porque o programador teve tanto trabalho por nada, além de causar um bug sério.

Isto me fez questionar se em alguns modelos do ZX Spectrum o snow não é percebido, por isso peço a quem possui tal equipamento a fazer um teste e relatar os resultados. Se algo deste tipo fosse visível eu acredito que seria questionado pela crítica, mas nada se relata a respeito! O Bloody Paws está disponível em formato TZX e TAP no World of Spectrum. A versão adaptada para o Beta 48 encontra-se no Google Drive ou 4 Shared.

Atualização em 02/09/2012:versão sem efeito snow

Nenhum comentário:

Postar um comentário

Seu comentário é bem vindo, mas peço que use este espaço adequadamente.